char *config_entry;
};
+static connman_bool_t allow_property_changed(struct connman_service *service);
+
struct find_data {
const char *path;
struct connman_service *service;
if (str == NULL)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "State",
DBUS_TYPE_STRING, &str);
if (service->strength == 0)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Strength",
DBUS_TYPE_BYTE, &service->strength);
if (service->path == NULL)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Favorite",
DBUS_TYPE_BOOLEAN, &service->favorite);
if (service->path == NULL)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Immutable",
DBUS_TYPE_BOOLEAN, &service->immutable);
if (service->path == NULL)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Roaming",
DBUS_TYPE_BOOLEAN, &service->roaming);
if (service->path == NULL)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "AutoConnect",
DBUS_TYPE_BOOLEAN, &service->autoconnect);
static void settings_changed(struct connman_service *service,
struct connman_ipconfig *ipconfig)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_dict(service->path,
CONNMAN_SERVICE_INTERFACE, "IPv4",
append_ipv4, service);
static void ipv4_configuration_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_dict(service->path,
CONNMAN_SERVICE_INTERFACE,
"IPv4.Configuration",
static void ipv6_configuration_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_dict(service->path,
CONNMAN_SERVICE_INTERFACE,
"IPv6.Configuration",
static void dns_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_array(service->path,
CONNMAN_SERVICE_INTERFACE, "Nameservers",
DBUS_TYPE_STRING, append_dns, service);
static void dns_configuration_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_array(service->path,
CONNMAN_SERVICE_INTERFACE,
"Nameservers.Configuration",
static void domain_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_array(service->path,
CONNMAN_SERVICE_INTERFACE, "Domains",
DBUS_TYPE_STRING, append_domain, service);
static void domain_configuration_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_array(service->path,
CONNMAN_SERVICE_INTERFACE,
"Domains.Configuration",
static void proxy_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_dict(service->path,
CONNMAN_SERVICE_INTERFACE, "Proxy",
append_proxy, service);
static void proxy_configuration_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_dict(service->path,
CONNMAN_SERVICE_INTERFACE, "Proxy.Configuration",
append_proxyconfig, service);
static void timeservers_configuration_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_array(service->path,
CONNMAN_SERVICE_INTERFACE,
"Timeservers.Configuration",
static void link_changed(struct connman_service *service)
{
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_dict(service->path,
CONNMAN_SERVICE_INTERFACE, "Ethernet",
append_ethernet, service);
if (service == NULL)
return;
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_array(service->path,
CONNMAN_SERVICE_INTERFACE, "Timeservers",
DBUS_TYPE_STRING, append_ts, ts_list);
if (str == NULL)
str = "";
+ if (allow_property_changed(service) == FALSE)
+ return;
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "Error",
DBUS_TYPE_STRING, &str);
service_schedule_changed();
}
+static connman_bool_t allow_property_changed(struct connman_service *service)
+{
+ if (g_hash_table_lookup_extended(services_notify->add, service->path,
+ NULL, NULL) == TRUE) {
+ DBG("no property updates for service %p", service);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static const GDBusMethodTable service_methods[] = {
{ GDBUS_DEPRECATED_METHOD("GetProperties",
NULL, GDBUS_ARGS({ "properties", "a{sv}" }),
if (g_strcmp0(service->name, name) != 0) {
g_free(service->name);
service->name = g_strdup(name);
- connman_dbus_property_changed_basic(service->path,
- CONNMAN_SERVICE_INTERFACE, "Name",
- DBUS_TYPE_STRING, &service->name);
+
+ if (allow_property_changed(service) == TRUE)
+ connman_dbus_property_changed_basic(service->path,
+ CONNMAN_SERVICE_INTERFACE, "Name",
+ DBUS_TYPE_STRING, &service->name);
}
if (service->type == CONNMAN_SERVICE_TYPE_WIFI)