summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-05-09 11:22:27 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2017-05-09 11:22:27 +0200
commitc8dbe90f428fbc58b22f1d86b29d63e565d2ed91 (patch)
tree160c2bd328d46dc0c0f80581cf2cc7236d1c9c16
parentb6b7d909f7023ef1830fe5a072b64e109397f609 (diff)
downloadNetworkManager-c8dbe90f428fbc58b22f1d86b29d63e565d2ed91.tar.gz
wip
-rw-r--r--src/devices/nm-device.c2
-rw-r--r--src/dhcp/nm-dhcp-utils.c2
-rw-r--r--src/nm-ip4-config.c4
-rw-r--r--src/nm-ip4-config.h2
4 files changed, 5 insertions, 5 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 1b6fc97f2d..d105082f64 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -5565,7 +5565,7 @@ ip4_config_merge_and_apply (NMDevice *self,
has_direct_route = ( gateway == 0
|| nm_ip4_config_destination_is_direct (composite, gateway, 32)
- || nm_ip4_config_get_direct_route_for_host (composite, gateway));
+ || nm_ip4_config_get_route_for_host (composite, gateway, TRUE));
priv->default_route.v4_has = TRUE;
memset (&priv->default_route.v4, 0, sizeof (priv->default_route.v4));
diff --git a/src/dhcp/nm-dhcp-utils.c b/src/dhcp/nm-dhcp-utils.c
index e020ca3318..9d644f6d2e 100644
--- a/src/dhcp/nm-dhcp-utils.c
+++ b/src/dhcp/nm-dhcp-utils.c
@@ -468,7 +468,7 @@ nm_dhcp_utils_ip4_config_from_options (int ifindex,
_LOG2I (LOGD_DHCP4, iface, " server identifier %s", str);
if ( nm_utils_ip4_address_clear_host_address(tmp_addr, address.plen) != nm_utils_ip4_address_clear_host_address(address.address, address.plen)
- && !nm_ip4_config_get_direct_route_for_host (ip4_config, tmp_addr)) {
+ && !nm_ip4_config_get_route_for_host (ip4_config, tmp_addr, TRUE)) {
/* DHCP server not on assigned subnet and the no direct route was returned. Add route */
NMPlatformIP4Route route = { 0 };
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 20532e8607..0ceb6f18c6 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -1678,7 +1678,7 @@ nm_ip4_config_get_route (const NMIP4Config *config, guint i)
}
const NMPlatformIP4Route *
-nm_ip4_config_get_direct_route_for_host (const NMIP4Config *config, guint32 host)
+nm_ip4_config_get_route_for_host (const NMIP4Config *config, guint32 host, gboolean direct_only)
{
const NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config);
guint i;
@@ -1689,7 +1689,7 @@ nm_ip4_config_get_direct_route_for_host (const NMIP4Config *config, guint32 host
for (i = 0; i < priv->routes->len; i++) {
NMPlatformIP4Route *item = &g_array_index (priv->routes, NMPlatformIP4Route, i);
- if (item->gateway != 0)
+ if (direct_only && item->gateway != 0)
continue;
if (best_route && best_route->plen > item->plen)
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index ceb52ac547..e741a3fc69 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -94,7 +94,7 @@ void nm_ip4_config_del_route (NMIP4Config *config, guint i);
guint nm_ip4_config_get_num_routes (const NMIP4Config *config);
const NMPlatformIP4Route *nm_ip4_config_get_route (const NMIP4Config *config, guint i);
-const NMPlatformIP4Route *nm_ip4_config_get_direct_route_for_host (const NMIP4Config *config, guint32 host);
+const NMPlatformIP4Route *nm_ip4_config_get_route_for_host (const NMIP4Config *config, guint32 host, gboolean direct_only);
void nm_ip4_config_reset_nameservers (NMIP4Config *config);
void nm_ip4_config_add_nameserver (NMIP4Config *config, guint32 nameserver);