element: Remove IPv6
[framework/connectivity/connman.git] / src / notifier.c
index d001cfc..27e53a1 100644 (file)
@@ -196,7 +196,8 @@ static void state_changed(void)
        if (signal == NULL)
                return;
 
-       dbus_message_append_args(signal, DBUS_TYPE_STRING, &state, NULL);
+       dbus_message_append_args(signal, DBUS_TYPE_STRING, &state,
+                                                       DBUS_TYPE_INVALID);
 
        g_dbus_send_message(connection, signal);
 }
@@ -222,6 +223,7 @@ void __connman_notifier_register(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -244,6 +246,7 @@ void __connman_notifier_unregister(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -266,6 +269,7 @@ void __connman_notifier_enable(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -288,6 +292,7 @@ void __connman_notifier_disable(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -310,6 +315,7 @@ void __connman_notifier_connect(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -332,6 +338,7 @@ void __connman_notifier_disconnect(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -361,10 +368,15 @@ static void technology_default(enum connman_service_type type)
 void __connman_notifier_default_changed(struct connman_service *service)
 {
        enum connman_service_type type = connman_service_get_type(service);
+       char *interface;
        GSList *list;
 
        technology_default(type);
 
+       interface = connman_service_get_interface(service);
+       __connman_tethering_update_interface(interface);
+       g_free(interface);
+
        for (list = notifier_list; list; list = list->next) {
                struct connman_notifier *notifier = list->data;
 
@@ -373,6 +385,42 @@ void __connman_notifier_default_changed(struct connman_service *service)
        }
 }
 
+void __connman_notifier_service_add(struct connman_service *service)
+{
+       GSList *list;
+
+       for (list = notifier_list; list; list = list->next) {
+               struct connman_notifier *notifier = list->data;
+
+               if (notifier->service_add)
+                       notifier->service_add(service);
+       }
+}
+
+void __connman_notifier_service_remove(struct connman_service *service)
+{
+       GSList *list;
+
+       for (list = notifier_list; list; list = list->next) {
+               struct connman_notifier *notifier = list->data;
+
+               if (notifier->service_remove)
+                       notifier->service_remove(service);
+       }
+}
+
+void __connman_notifier_proxy_changed(struct connman_service *service)
+{
+       GSList *list;
+
+       for (list = notifier_list; list; list = list->next) {
+               struct connman_notifier *notifier = list->data;
+
+               if (notifier->proxy_changed)
+                       notifier->proxy_changed(service);
+       }
+}
+
 static void offlinemode_changed(dbus_bool_t enabled)
 {
        DBG("enabled %d", enabled);
@@ -400,15 +448,40 @@ void __connman_notifier_offlinemode(connman_bool_t enabled)
        }
 }
 
-connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type)
+void __connman_notifier_service_state_changed(struct connman_service *service,
+                                       enum connman_service_state state)
 {
-       DBG("type %d", type);
+       GSList *list;
 
+       for (list = notifier_list; list; list = list->next) {
+               struct connman_notifier *notifier = list->data;
+
+               if (notifier->service_state_changed)
+                       notifier->service_state_changed(service, state);
+       }
+}
+
+void __connman_notifier_ipconfig_changed(struct connman_service *service,
+                                       struct connman_ipconfig *ipconfig)
+{
+       GSList *list;
+
+       for (list = notifier_list; list; list = list->next) {
+               struct connman_notifier *notifier = list->data;
+
+               if (notifier->ipconfig_changed)
+                       notifier->ipconfig_changed(service, ipconfig);
+       }
+}
+
+static connman_bool_t technology_supported(enum connman_service_type type)
+{
        switch (type) {
        case CONNMAN_SERVICE_TYPE_UNKNOWN:
        case CONNMAN_SERVICE_TYPE_SYSTEM:
        case CONNMAN_SERVICE_TYPE_GPS:
        case CONNMAN_SERVICE_TYPE_VPN:
+       case CONNMAN_SERVICE_TYPE_GADGET:
                return FALSE;
        case CONNMAN_SERVICE_TYPE_ETHERNET:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -418,6 +491,29 @@ connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type)
                break;
        }
 
+       return TRUE;
+}
+
+connman_bool_t __connman_notifier_is_registered(enum connman_service_type type)
+{
+       DBG("type %d", type);
+
+       if (technology_supported(type) == FALSE)
+               return FALSE;
+
+       if (g_atomic_int_get(&registered[type]) > 0)
+               return TRUE;
+
+       return FALSE;
+}
+
+connman_bool_t __connman_notifier_is_enabled(enum connman_service_type type)
+{
+       DBG("type %d", type);
+
+       if (technology_supported(type) == FALSE)
+               return FALSE;
+
        if (g_atomic_int_get(&enabled[type]) > 0)
                return TRUE;