summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-08-30 11:42:43 +0200
committerThomas Haller <thaller@redhat.com>2017-08-30 11:47:34 +0200
commiteba646ec42e17aecf851d5d07144de95c5154d78 (patch)
treef12d760d77f8c108747392d7071b219af869dd4a
parentd95df1cef00c3a18ce76e12622d861d570c8fcd9 (diff)
downloadNetworkManager-eba646ec42e17aecf851d5d07144de95c5154d78.tar.gz
core: fix emitting changed notification during nm_ip4_config_intersect()
-rw-r--r--src/nm-ip4-config.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 8e3ff059f5..48fa2de000 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -1408,6 +1408,7 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
NMDedupMultiIter ipconf_iter;
const NMPlatformIP4Address *a;
const NMPlatformIP4Route *r;
+ gboolean changed;
g_return_if_fail (src);
g_return_if_fail (dst);
@@ -1418,6 +1419,7 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
src_priv = NM_IP4_CONFIG_GET_PRIVATE (src);
/* addresses */
+ changed = FALSE;
nm_ip_config_iter_ip4_address_for_each (&ipconf_iter, dst, &a) {
if (nm_dedup_multi_index_lookup_obj (src_priv->multi_idx,
&src_priv->idx_ip4_addresses,
@@ -1427,7 +1429,10 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
if (nm_dedup_multi_index_remove_entry (dst_priv->multi_idx,
ipconf_iter.current) != 1)
nm_assert_not_reached ();
+ changed = TRUE;
}
+ if (changed)
+ _notify_addresses (dst);
/* ignore route_metric */
/* ignore nameservers */
@@ -1440,6 +1445,7 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
}
/* routes */
+ changed = FALSE;
nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, dst, &r) {
if (nm_dedup_multi_index_lookup_obj (src_priv->multi_idx,
&src_priv->idx_ip4_routes,
@@ -1449,7 +1455,10 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
if (nm_dedup_multi_index_remove_entry (dst_priv->multi_idx,
ipconf_iter.current) != 1)
nm_assert_not_reached ();
+ changed = TRUE;
}
+ if (changed)
+ _notify_routes (dst);
/* ignore domains */
/* ignore dns searches */