From 1fa67151034e54169a03603467985169e032a1d4 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 7 Aug 2008 17:59:16 +0000 Subject: [PATCH] 2008-08-07 Dan Williams * src/dhcp-manager/nm-dhcp-manager.c - (nm_dhcp_manager_get_ip4_config): fix regression which caused mis-handling of DHCP responses that returned more than one router (found by Grant Williamson) git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3908 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 7 +++++++ src/dhcp-manager/nm-dhcp-manager.c | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 323b3200a9..3fa954e65b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-07 Dan Williams + + * src/dhcp-manager/nm-dhcp-manager.c + - (nm_dhcp_manager_get_ip4_config): fix regression which caused + mis-handling of DHCP responses that returned more than one router + (found by Grant Williamson) + 2008-08-07 Dan Williams * callouts/nm-dispatcher-action.c diff --git a/src/dhcp-manager/nm-dhcp-manager.c b/src/dhcp-manager/nm-dhcp-manager.c index d85b6dbd7d..96b0e9dc50 100644 --- a/src/dhcp-manager/nm-dhcp-manager.c +++ b/src/dhcp-manager/nm-dhcp-manager.c @@ -747,9 +747,20 @@ nm_dhcp_manager_get_ip4_config (NMDHCPManager *manager, } str = g_hash_table_lookup (device->options, "new_routers"); - if (str && (inet_pton (AF_INET, str, &tmp_addr) > 0)) { - addr->gateway = tmp_addr.s_addr; - nm_info(" gateway %s", str); + if (str) { + char **routers = g_strsplit (str, " ", 0); + char **s; + + for (s = routers; *s; s++) { + /* FIXME: how to handle multiple routers? */ + if (inet_pton (AF_INET, *s, &tmp_addr) > 0) { + addr->gateway = tmp_addr.s_addr; + nm_info (" gateway %s", *s); + break; + } else + nm_warning ("Ignoring invalid gateway '%s'", *s); + } + g_strfreev (routers); } nm_ip4_config_take_address (ip4_config, addr);