From 2cfd1647d3723baa42ea48f50f0c8a97c3d96d2f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 7 Nov 2014 16:34:13 +0100 Subject: [PATCH] core: ensure generated connections has no gateway if it has no addresses Fixes: f17699f4e3dacb9358a8503c8b15efe3cb852b48 Signed-off-by: Thomas Haller --- src/nm-ip4-config.c | 6 +++++- src/nm-ip6-config.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 5fddc7379..34d613437 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -430,7 +430,8 @@ nm_ip4_config_create_setting (const NMIP4Config *config) } /* Gateway */ - if (gateway) { + if ( gateway + && nm_setting_ip_config_get_num_addresses (s_ip4) > 0) { g_object_set (s_ip4, NM_SETTING_IP_CONFIG_GATEWAY, nm_utils_inet4_ntop (gateway, NULL), NULL); @@ -586,6 +587,9 @@ nm_ip4_config_subtract (NMIP4Config *dst, const NMIP4Config *src) if (nm_ip4_config_get_gateway (src) == nm_ip4_config_get_gateway (dst)) nm_ip4_config_set_gateway (dst, 0); + if (!nm_ip4_config_get_num_addresses (dst)) + nm_ip4_config_set_gateway (dst, 0); + /* routes */ for (i = 0; i < nm_ip4_config_get_num_routes (src); i++) { const NMPlatformIP4Route *src_route = nm_ip4_config_get_route (src, i); diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 9423d8a0f..5ad16b324 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -538,7 +538,8 @@ nm_ip6_config_create_setting (const NMIP6Config *config) } /* Gateway */ - if (gateway) { + if ( gateway + && nm_setting_ip_config_get_num_addresses (s_ip6) > 0) { g_object_set (s_ip6, NM_SETTING_IP_CONFIG_GATEWAY, nm_utils_inet6_ntop (gateway, NULL), NULL); @@ -700,6 +701,9 @@ nm_ip6_config_subtract (NMIP6Config *dst, const NMIP6Config *src) if (src_tmp && dst_tmp && IN6_ARE_ADDR_EQUAL (src_tmp, dst_tmp)) nm_ip6_config_set_gateway (dst, NULL); + if (!nm_ip6_config_get_num_addresses (dst)) + nm_ip6_config_set_gateway (dst, NULL); + /* routes */ for (i = 0; i < nm_ip6_config_get_num_routes (src); i++) { const NMPlatformIP6Route *src_route = nm_ip6_config_get_route (src, i);