summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2012-11-01 14:16:24 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-11-02 10:42:24 +0200
commit746026f897643111b4ca26bcad132de4e27d30fc (patch)
treed320ff3a58842d2f02a3d987d22b9f54dcbe738c
parent3a8c097be7d5ddcc654b9a6c42facb7010292d05 (diff)
downloadconnman-746026f897643111b4ca26bcad132de4e27d30fc.tar.gz
connman-746026f897643111b4ca26bcad132de4e27d30fc.tar.bz2
connman-746026f897643111b4ca26bcad132de4e27d30fc.zip
dhcp: Clear ipaddresses from ipconfig before starting DHCP
This is needed if manually configured addresses were used and later DHCP was taken into use. If the manually configured IP information (address, netmask and gateway) and the information given by DHCP is the same, DHCP will not set the IP address to the interface.
-rw-r--r--src/dhcp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dhcp.c b/src/dhcp.c
index 1dbe1baa..e64c975a 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -449,6 +449,12 @@ static int dhcp_request(struct connman_dhcp *dhcp)
service = connman_service_lookup_from_network(dhcp->network);
ipconfig = __connman_service_get_ip4config(service);
+ /*
+ * Clear the addresses at startup so that lease callback will
+ * take the lease and set ip address properly.
+ */
+ __connman_ipconfig_clear_address(ipconfig);
+
return g_dhcp_client_start(dhcp_client,
__connman_ipconfig_get_dhcp_address(ipconfig));
}