summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-11-07 16:34:13 +0100
committerThomas Haller <thaller@redhat.com>2014-11-07 16:35:00 +0100
commit2cfd1647d3723baa42ea48f50f0c8a97c3d96d2f (patch)
treeef3790540ce332c8226b2b195e4023eea83fdc3c
parentd4417e34606b1f08c361709ff9567055a1d6859e (diff)
downloadNetworkManager-2cfd1647d3723baa42ea48f50f0c8a97c3d96d2f.tar.gz
core: ensure generated connections has no gateway if it has no addresses
Fixes: f17699f4e3dacb9358a8503c8b15efe3cb852b48 Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/nm-ip4-config.c6
-rw-r--r--src/nm-ip6-config.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 5fddc73798..34d613437d 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 9423d8a0f9..5ad16b3249 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);