NetworkManager r3444 - in trunk: . src
- From: dcbw svn gnome org
- To: svn-commits-list gnome org
- Subject: NetworkManager r3444 - in trunk: . src
- Date: Thu, 13 Mar 2008 03:52:50 +0000 (GMT)
Author: dcbw
Date: Thu Mar 13 03:52:50 2008
New Revision: 3444
URL: http://svn.gnome.org/viewvc/NetworkManager?rev=3444&view=rev
Log:
2008-03-12 Dan Williams <dcbw redhat com>
* src/nm-device.c
- (merge_ip4_config): avoid duplicates
Modified:
trunk/ChangeLog
trunk/src/nm-device.c
Modified: trunk/src/nm-device.c
==============================================================================
--- trunk/src/nm-device.c (original)
+++ trunk/src/nm-device.c Thu Mar 13 03:52:50 2008
@@ -658,28 +658,62 @@
return; /* Defaults are just fine */
if (setting->dns) {
- int i;
+ int i, j;
- for (i = 0; i < setting->dns->len; i++)
- nm_ip4_config_add_nameserver (ip4_config, g_array_index (setting->dns, guint32, i));
+ for (i = 0; i < setting->dns->len; i++) {
+ guint32 ns;
+ gboolean found = FALSE;
+
+ /* Avoid dupes */
+ ns = g_array_index (setting->dns, guint32, i);
+ for (j = 0; j < nm_ip4_config_get_num_nameservers (ip4_config); j++) {
+ if (nm_ip4_config_get_nameserver (ip4_config, j) == ns) {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ nm_ip4_config_add_nameserver (ip4_config, ns);
+ }
}
if (setting->dns_search) {
GSList *iter;
- for (iter = setting->dns_search; iter; iter = iter->next)
- nm_ip4_config_add_domain (ip4_config, (char *) iter->data);
+ for (iter = setting->dns_search; iter; iter = iter->next) {
+ int i;
+ gboolean found = FALSE;
+
+ /* Avoid dupes */
+ for (i = 0; i < nm_ip4_config_get_num_searches (ip4_config); i++) {
+ const char *search = nm_ip4_config_get_search (ip4_config, i);
+
+ if (!strcmp (search, (char *) iter->data)) {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ nm_ip4_config_add_search (ip4_config, (char *) iter->data);
+ }
}
if (setting->addresses) {
/* FIXME; add support for more than one set of address/netmask/gateway for NMIP4Config */
NMSettingIP4Address *addr = (NMSettingIP4Address *) setting->addresses->data;
- nm_ip4_config_set_address (ip4_config, addr->address);
- nm_ip4_config_set_netmask (ip4_config, addr->netmask);
+ /* Avoid dupes, but override if anything is different */
+ if ( (nm_ip4_config_get_address (ip4_config) != addr->address)
+ || (nm_ip4_config_get_netmask (ip4_config) != addr->netmask)
+ || (addr->gateway && (nm_ip4_config_get_gateway (ip4_config) != addr->gateway))) {
+ nm_ip4_config_set_address (ip4_config, addr->address);
+ nm_ip4_config_set_netmask (ip4_config, addr->netmask);
- if (addr->gateway)
- nm_ip4_config_set_gateway (ip4_config, addr->gateway);
+ if (addr->gateway)
+ nm_ip4_config_set_gateway (ip4_config, addr->gateway);
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]