Remove old IP and gateway address 75/124075/1 accepted/tizen/unified/20170412.152315 submit/tizen/20170411.091632 submit/tizen/20170412.005740
authorAbhishek Sansanwal <abhishek.s94@samsung.com>
Mon, 10 Apr 2017 06:38:14 +0000 (12:08 +0530)
committerAbhishek Sansanwal <abhishek.s94@samsung.com>
Mon, 10 Apr 2017 06:38:14 +0000 (12:08 +0530)
Change-Id: I61defbc6fba37e7c3a04516d1946f2b5cd22af1a
Signed-off-by: Abhishek Sansanwal <abhishek.s94@samsung.com>
src/dhcp.c

index 32ffcd9..0a2f6fc 100755 (executable)
@@ -439,7 +439,7 @@ static void lease_available_cb(GDHCPClient *dhcp_client, gpointer user_data)
        char *address, *netmask = NULL, *gateway = NULL;
        const char *c_address, *c_gateway;
        unsigned char prefixlen, c_prefixlen;
-       bool ip_change;
+       bool ip_change = false;
 
        DBG("Lease available");
 
@@ -471,14 +471,21 @@ static void lease_available_cb(GDHCPClient *dhcp_client, gpointer user_data)
 
        DBG("c_address %s", c_address);
 
-       if (g_strcmp0(address, c_address))
+       if (g_strcmp0(address, c_address)) {
                ip_change = true;
-       else if (g_strcmp0(gateway, c_gateway))
+               if (c_address) {
+                       /* Remove old ip address */
+                       __connman_ipconfig_address_remove(dhcp->ipconfig);
+               }
+       }
+       if (g_strcmp0(gateway, c_gateway)) {
                ip_change = true;
-       else if (prefixlen != c_prefixlen)
+               if (c_gateway) {
+                       /* Remove gateway ip address */
+                       __connman_ipconfig_gateway_remove(dhcp->ipconfig);
+               }
+       } else if (prefixlen != c_prefixlen)
                ip_change = true;
-       else
-               ip_change = false;
 
        __connman_ipconfig_set_method(dhcp->ipconfig,
                                                CONNMAN_IPCONFIG_METHOD_DHCP);