From 1a8bd8384824f7b4b6e513c7eff6a6f4f02769cd Mon Sep 17 00:00:00 2001 From: Abhishek Sansanwal Date: Mon, 10 Apr 2017 12:08:14 +0530 Subject: [PATCH] Remove old IP and gateway address Change-Id: I61defbc6fba37e7c3a04516d1946f2b5cd22af1a Signed-off-by: Abhishek Sansanwal --- src/dhcp.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/dhcp.c b/src/dhcp.c index 32ffcd9..0a2f6fc 100755 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -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); -- 2.7.4