Added handling of "AssocStatusCode" signal
[platform/upstream/connman.git] / src / network.c
index 5828829..08b1319 100755 (executable)
@@ -101,6 +101,9 @@ struct connman_network {
                char *keymgmt_type;
                bool rsn_mode;
                int disconnect_reason;
+               int assoc_status_code;
+               void *wifi_vsie;
+               unsigned int wifi_vsie_len;
 #endif
        } wifi;
 
@@ -478,6 +481,9 @@ static void check_dhcpv6(struct nd_router_advert *reply,
                                                check_dhcpv6, network);
                        return;
                }
+#if defined TIZEN_EXT
+               DBG("RA message is not received from server in reply of RS.");
+#endif
                connman_network_unref(network);
                return;
        }
@@ -490,6 +496,9 @@ static void check_dhcpv6(struct nd_router_advert *reply,
         */
        if (!network->connected) {
                connman_network_unref(network);
+#if defined TIZEN_EXT
+               DBG("Network is not connected");
+#endif
                return;
        }
 
@@ -518,11 +527,21 @@ static void check_dhcpv6(struct nd_router_advert *reply,
         * We do stateful/stateless DHCPv6 if router advertisement says so.
         */
        if (reply->nd_ra_flags_reserved & ND_RA_FLAG_MANAGED) {
+#if defined TIZEN_EXT
+               DBG("IPv6 ND_RA_FLAG_MANAGED");
+#endif
                __connman_dhcpv6_start(network, prefixes, dhcpv6_callback);
        } else {
                if (reply->nd_ra_flags_reserved & ND_RA_FLAG_OTHER)
+#if defined TIZEN_EXT
+               {
+                       DBG("IPv6 ND_RA_FLAG_OTHER");
+#endif
                        __connman_dhcpv6_start_info(network,
                                                        dhcpv6_info_callback);
+#if defined TIZEN_EXT
+               }
+#endif
 
                g_slist_free_full(prefixes, g_free);
                network->connecting = false;
@@ -959,7 +978,9 @@ static void network_destruct(struct connman_network *network)
        g_free(network->wifi.private_key_passphrase);
        g_free(network->wifi.phase2_auth);
        g_free(network->wifi.pin_wps);
-
+#if defined TIZEN_EXT
+       g_free(network->wifi.wifi_vsie);
+#endif
        g_free(network->path);
        g_free(network->group);
        g_free(network->node);
@@ -1679,7 +1700,9 @@ int __connman_network_connect(struct connman_network *network)
        if (network->type != CONNMAN_NETWORK_TYPE_CELLULAR)
 #endif
        __connman_device_disconnect(network->device);
-
+#if defined TIZEN_EXT
+       DBG("ConnMan, Connect Request [%s]", network->name);
+#endif
        err = network->driver->connect(network);
        if (err < 0) {
                if (err == -EINPROGRESS) {
@@ -1718,7 +1741,9 @@ int __connman_network_disconnect(struct connman_network *network)
                return -EUNATCH;
 
        network->connecting = false;
-
+#if defined TIZEN_EXT
+       DBG("ConnMan, Disconnect request");
+#endif
        if (network->driver->disconnect)
                err = network->driver->disconnect(network);
 
@@ -2068,6 +2093,26 @@ int connman_network_get_disconnect_reason(struct connman_network *network)
 
        return network->wifi.disconnect_reason;
 }
+
+int connman_network_set_assoc_status_code(struct connman_network *network,
+                               int assoc_status_code)
+{
+
+       if (network == NULL)
+               return 0;
+
+       network->wifi.assoc_status_code = assoc_status_code;
+       return 0;
+}
+
+int connman_network_get_assoc_status_code(struct connman_network *network)
+{
+       if (network == NULL)
+               return 0;
+
+       return network->wifi.assoc_status_code;
+}
+
 #endif
 
 int connman_network_set_nameservers(struct connman_network *network,
@@ -2228,6 +2273,9 @@ int connman_network_set_string(struct connman_network *network,
                g_free(network->wifi.security);
                network->wifi.security = g_strdup(value);
        } else if (g_str_equal(key, "WiFi.Passphrase")) {
+#if defined TIZEN_EXT
+               DBG("ConnMan, %p key %s", network, key);
+#endif
                g_free(network->wifi.passphrase);
                network->wifi.passphrase = g_strdup(value);
        } else if (g_str_equal(key, "WiFi.EAP")) {
@@ -2401,6 +2449,16 @@ int connman_network_set_blob(struct connman_network *network,
                        network->wifi.ssid_len = size;
                } else
                        network->wifi.ssid_len = 0;
+#if defined TIZEN_EXT
+       } else if (g_str_equal(key, "WiFi.Vsie")){
+               g_free(network->wifi.wifi_vsie);
+               network->wifi.wifi_vsie = g_try_malloc(size);
+               if (network->wifi.wifi_vsie) {
+                       memcpy(network->wifi.wifi_vsie, data, size);
+                       network->wifi.wifi_vsie_len = size;
+               } else
+                       network->wifi.wifi_vsie_len = 0;
+#endif
        } else {
                return -EINVAL;
        }
@@ -2427,6 +2485,17 @@ const void *connman_network_get_blob(struct connman_network *network,
                return network->wifi.ssid;
        }
 
+#if defined TIZEN_EXT
+       if (g_str_equal(key, "WiFi.Vsie")) {
+               if (size) {
+                       *size = network->wifi.wifi_vsie_len;
+                       DBG("network %p key %s size=%d", network, key, *size);
+               }
+
+               return network->wifi.wifi_vsie;
+       }
+#endif
+
        return NULL;
 }