Fix svace issue (WGID-212341)
[platform/core/connectivity/net-config.git] / src / signal-handler.c
index 9f02dc7..385bd98 100755 (executable)
@@ -18,6 +18,7 @@
  */
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <vconf.h>
 #include <vconf-keys.h>
@@ -96,6 +97,56 @@ typedef void (*connman_signal_cb)(GDBusConnection *conn,
                const gchar *name, const gchar *path, const gchar *interface,
                const gchar *sig, GVariant *param, gpointer user_data);
 
+static void __netconfig_extract_ipv4_signal_data(GVariant *dictionary, const gchar *profile)
+{
+       gchar *key = NULL;
+       const gchar *value = NULL;
+       GVariant *var = NULL;
+       GVariantIter iter;
+
+       g_variant_iter_init(&iter, dictionary);
+       while (g_variant_iter_loop(&iter, "{sv}", &key, &var)) {
+               if (g_strcmp0(key, "Address") == 0)  {
+                       value = g_variant_get_string(var, NULL);
+                       char *old_ip = vconf_get_str(VCONFKEY_NETWORK_IP);
+
+                       DBG("Old IPv4.Address [%s] Received new IPv4.Address [%s]", old_ip, value);
+                       if (g_strcmp0(old_ip, value) != 0) {
+                               if (value != NULL)
+                                       vconf_set_str(VCONFKEY_NETWORK_IP, value);
+                               else if (old_ip != NULL && strlen(old_ip) > 0)
+                                       vconf_set_str(VCONFKEY_NETWORK_IP, "");
+                       }
+                       free(old_ip);
+               }
+       }
+}
+
+static void __netconfig_extract_ipv6_signal_data(GVariant *dictionary, const gchar *profile)
+{
+       gchar *key = NULL;
+       const gchar *value = NULL;
+       GVariant *var = NULL;
+       GVariantIter iter;
+
+       g_variant_iter_init(&iter, dictionary);
+       while (g_variant_iter_loop(&iter, "{sv}", &key, &var)) {
+               if (g_strcmp0(key, "Address") == 0)  {
+                       value = g_variant_get_string(var, NULL);
+                       char *old_ip6 = vconf_get_str(VCONFKEY_NETWORK_IP6);
+
+                       DBG("Old IPv6.Address [%s] Received new IPv6.Address [%s]", old_ip6, value);
+                       if (g_strcmp0(old_ip6, value) != 0) {
+                               if (value != NULL)
+                                       vconf_set_str(VCONFKEY_NETWORK_IP6, value);
+                               else if (old_ip6 != NULL && strlen(old_ip6) > 0)
+                                       vconf_set_str(VCONFKEY_NETWORK_IP6, "");
+                       }
+                       free(old_ip6);
+               }
+       }
+}
+
 static void _technology_signal_cb(GDBusConnection *conn,
                const gchar *name, const gchar *path, const gchar *interface,
                const gchar *sig, GVariant *param, gpointer user_data)
@@ -308,6 +359,10 @@ static void _service_signal_cb(GDBusConnection *conn,
                }
 
                g_variant_iter_free(iter);
+       } else if (g_strcmp0(sigvalue, "IPv4") == 0) {
+               __netconfig_extract_ipv4_signal_data(variant, path);
+       } else if (g_strcmp0(sigvalue, "IPv6") == 0) {
+               __netconfig_extract_ipv6_signal_data(variant, path);
        } else if (g_strcmp0(sigvalue, "Error") == 0) {
                g_variant_get(variant, "s", &property);
                INFO("[%s] Property : %s", sigvalue, property);
@@ -541,8 +596,8 @@ static void _supplicant_tdls_connected(GDBusConnection *conn,
                const gchar *name, const gchar *path, const gchar *interface,
                const gchar *sig, GVariant *param, gpointer user_data)
 {
-       ERR("Received TDLS Connected Signal");
-       netconfig_wifi_tlds_connected_event(param);
+       DBG("Received TDLS Connected Signal");
+       netconfig_wifi_tdls_connected_event(param);
 
        return;
 }
@@ -551,8 +606,8 @@ static void _supplicant_tdls_disconnected(GDBusConnection *conn,
                const gchar *name, const gchar *path, const gchar *interface,
                const gchar *sig, GVariant *param, gpointer user_data)
 {
-       ERR("Received TDLS Disconnected Signal");
-       netconfig_wifi_tlds_disconnected_event(param);
+       DBG("Received TDLS Disconnected Signal");
+       netconfig_wifi_tdls_disconnected_event(param);
 
        return;
 }
@@ -561,7 +616,8 @@ static void _supplicant_tdls_peer_found(GDBusConnection *conn,
                const gchar *name, const gchar *path, const gchar *interface,
                const gchar *sig, GVariant *param, gpointer user_data)
 {
-       ERR("Received TDLS Peer Found Signal");
+       DBG("Received TDLS Peer Found Signal");
+       netconfig_wifi_tdls_peer_found_event(param);
        return;
 }