core: fix nm_ip_config_intersect() only to remove addresses, routes and gateway

Otherwise we remove the DNS configuration during platform events.

Fixes: 557667df12
(cherry picked from commit 11ccf949a3)
This commit is contained in:
Thomas Haller 2015-01-26 17:29:25 +01:00
parent 43b77d7c32
commit bfe2fd271b
2 changed files with 8 additions and 68 deletions

View file

@ -755,14 +755,7 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
i++;
}
/* nameservers */
for (i = 0; i < nm_ip4_config_get_num_nameservers (dst); ) {
idx = _nameservers_get_index (src, nm_ip4_config_get_nameserver (dst, i));
if (idx < 0)
nm_ip4_config_del_nameserver (dst, i);
else
i++;
}
/* ignore nameservers */
/* default gateway */
if ( !nm_ip4_config_get_num_addresses (dst)
@ -778,41 +771,10 @@ nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src)
i++;
}
/* domains */
for (i = 0; i < nm_ip4_config_get_num_domains (dst); ) {
idx = _domains_get_index (src, nm_ip4_config_get_domain (dst, i));
if (idx < 0)
nm_ip4_config_del_domain (dst, i);
else
i++;
}
/* dns searches */
for (i = 0; i < nm_ip4_config_get_num_searches (dst); ) {
idx = _searches_get_index (src, nm_ip4_config_get_search (dst, i));
if (idx < 0)
nm_ip4_config_del_search (dst, i);
else
i++;
}
/* NIS */
for (i = 0; i < nm_ip4_config_get_num_nis_servers (dst); ) {
idx = _nis_servers_get_index (src, nm_ip4_config_get_nis_server (dst, i));
if (idx < 0)
nm_ip4_config_del_nis_server (dst, i);
else
i++;
}
/* WINS */
for (i = 0; i < nm_ip4_config_get_num_wins (dst); ) {
idx = _wins_get_index (src, nm_ip4_config_get_wins (dst, i));
if (idx < 0)
nm_ip4_config_del_wins (dst, i);
else
i++;
}
/* ignore domains */
/* ignore dns searches */
/* ignore NIS */
/* ignore WINS */
g_object_thaw_notify (G_OBJECT (dst));
}

View file

@ -822,14 +822,7 @@ nm_ip6_config_intersect (NMIP6Config *dst, const NMIP6Config *src)
i++;
}
/* nameservers */
for (i = 0; i < nm_ip6_config_get_num_nameservers (dst); ) {
idx = _nameservers_get_index (src, nm_ip6_config_get_nameserver (dst, i));
if (idx < 0)
nm_ip6_config_del_nameserver (dst, i);
else
i++;
}
/* ignore nameservers */
/* default gateway */
dst_tmp = nm_ip6_config_get_gateway (dst);
@ -850,23 +843,8 @@ nm_ip6_config_intersect (NMIP6Config *dst, const NMIP6Config *src)
i++;
}
/* domains */
for (i = 0; i < nm_ip6_config_get_num_domains (src); ) {
idx = _domains_get_index (src, nm_ip6_config_get_domain (dst, i));
if (idx < 0)
nm_ip6_config_del_domain (dst, i);
else
i++;
}
/* dns searches */
for (i = 0; i < nm_ip6_config_get_num_searches (src); i++) {
idx = _searches_get_index (src, nm_ip6_config_get_search (dst, i));
if (idx < 0)
nm_ip6_config_del_search (dst, i);
else
i++;
}
/* ignore domains */
/* ignore dns searches */
g_object_thaw_notify (G_OBJECT (dst));
}