diff options
| author | Irfan Sheriff <isheriff@google.com> | 2011-04-15 16:04:24 -0700 |
|---|---|---|
| committer | Irfan Sheriff <isheriff@google.com> | 2011-04-15 16:35:59 -0700 |
| commit | bdaaec1ba0a7cf832ad7fe475a7c541ed9973e52 (patch) | |
| tree | d65c97075b747f6b74796cad20bf1be65e365fa3 /libnetutils | |
| parent | 112445b8a752ce174f36cf853d5f1c356c3f5286 (diff) | |
| download | system_core-bdaaec1ba0a7cf832ad7fe475a7c541ed9973e52.tar.gz system_core-bdaaec1ba0a7cf832ad7fe475a7c541ed9973e52.tar.bz2 system_core-bdaaec1ba0a7cf832ad7fe475a7c541ed9973e52.zip | |
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
Diffstat (limited to 'libnetutils')
| -rw-r--r-- | libnetutils/dhcp_utils.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libnetutils/dhcp_utils.c b/libnetutils/dhcp_utils.c index af82a3c63..5991ea8c0 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); |
