From bdaaec1ba0a7cf832ad7fe475a7c541ed9973e52 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Fri, 15 Apr 2011 16:04:24 -0700 Subject: Use DHCP server as gateway when it is absent Some routers can return 0.0.0.0 as gateway address, use DHCP server as gateway in such instances Change-Id: I7e8db8e619475efce53ce391f77f2c13c3b7268c --- libnetutils/dhcp_utils.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'libnetutils') diff --git a/libnetutils/dhcp_utils.c b/libnetutils/dhcp_utils.c index af82a3c6..5991ea8c 100644 --- a/libnetutils/dhcp_utils.c +++ b/libnetutils/dhcp_utils.c @@ -79,6 +79,15 @@ static int fill_ip_info(const char *interface, snprintf(prop_name, sizeof(prop_name), "%s.%s.gateway", DHCP_PROP_NAME_PREFIX, interface); property_get(prop_name, gateway, NULL); + snprintf(prop_name, sizeof(prop_name), "%s.%s.server", DHCP_PROP_NAME_PREFIX, interface); + property_get(prop_name, server, NULL); + + //TODO: Handle IPv6 when we change system property usage + if (strcmp(gateway, "0.0.0.0") == 0) { + //DHCP server is our best bet as gateway + strncpy(gateway, server, PROPERTY_VALUE_MAX); + } + snprintf(prop_name, sizeof(prop_name), "%s.%s.mask", DHCP_PROP_NAME_PREFIX, interface); if (property_get(prop_name, prop_value, NULL)) { int p; @@ -107,9 +116,6 @@ static int fill_ip_info(const char *interface, snprintf(prop_name, sizeof(prop_name), "%s.%s.dns2", DHCP_PROP_NAME_PREFIX, interface); property_get(prop_name, dns2, NULL); - snprintf(prop_name, sizeof(prop_name), "%s.%s.server", DHCP_PROP_NAME_PREFIX, interface); - property_get(prop_name, server, NULL); - snprintf(prop_name, sizeof(prop_name), "%s.%s.leasetime", DHCP_PROP_NAME_PREFIX, interface); if (property_get(prop_name, prop_value, NULL)) { *lease = atol(prop_value); -- cgit v1.2.3