diff options
Diffstat (limited to 'net-misc/networkmanager/files/networkmanager-0.9.1.95-dns-routing-unmanaged-devices.patch')
-rw-r--r-- | net-misc/networkmanager/files/networkmanager-0.9.1.95-dns-routing-unmanaged-devices.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/net-misc/networkmanager/files/networkmanager-0.9.1.95-dns-routing-unmanaged-devices.patch b/net-misc/networkmanager/files/networkmanager-0.9.1.95-dns-routing-unmanaged-devices.patch new file mode 100644 index 000000000000..7b244dfdc45c --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-0.9.1.95-dns-routing-unmanaged-devices.patch @@ -0,0 +1,69 @@ +From fc0739a5d4e714234e1d544db838e932219c5d4d Mon Sep 17 00:00:00 2001 +From: Mathieu Trudel-Lapierre <mathieu.tl@gmail.com> +Date: Wed, 2 Nov 2011 15:28:43 -0500 +Subject: [PATCH] dns: don't update routing and DNS if no devices were ever + managed (lp:862134) + +Avoids blowing away existing routes and resolv.conf if NM never +managed any devices. +--- + src/dns-manager/nm-dns-manager.c | 21 +++++++++++++-------- + src/nm-policy.c | 9 +++++++++ + 2 files changed, 22 insertions(+), 8 deletions(-) + +diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c +index 0203f2b..ddfd47c 100644 +--- a/src/dns-manager/nm-dns-manager.c ++++ b/src/dns-manager/nm-dns-manager.c +@@ -1097,15 +1097,20 @@ dispose (GObject *object) + g_slist_free (priv->plugins); + priv->plugins = NULL; + +- /* If we're quitting leave a valid resolv.conf in place, not one +- * pointing to 127.0.0.1 if any plugins were active. Thus update +- * DNS after disposing of all plugins. ++ /* If last_iface is NULL, this means we haven't done a DNS update before, ++ * so no reason to try and take down entries from resolv.conf. + */ +- if (!update_dns (self, priv->last_iface, TRUE, &error)) { +- nm_log_warn (LOGD_DNS, "could not commit DNS changes on shutdown: (%d) %s", +- error ? error->code : -1, +- error && error->message ? error->message : "(unknown)"); +- g_clear_error (&error); ++ if (priv->last_iface != NULL) { ++ /* If we're quitting leave a valid resolv.conf in place, not one ++ * pointing to 127.0.0.1 if any plugins were active. Thus update ++ * DNS after disposing of all plugins. ++ */ ++ if (!update_dns (self, priv->last_iface, TRUE, &error)) { ++ nm_log_warn (LOGD_DNS, "could not commit DNS changes on shutdown: (%d) %s", ++ error ? error->code : -1, ++ error && error->message ? error->message : "(unknown)"); ++ g_clear_error (&error); ++ } + } + + g_slist_foreach (priv->configs, (GFunc) g_object_unref, NULL); +diff --git a/src/nm-policy.c b/src/nm-policy.c +index cd8245e..669db28 100644 +--- a/src/nm-policy.c ++++ b/src/nm-policy.c +@@ -1042,6 +1042,15 @@ device_state_changed (NMDevice *device, + update_routing_and_dns (policy, FALSE); + break; + case NM_DEVICE_STATE_UNMANAGED: ++ if ( old_state == NM_DEVICE_STATE_UNAVAILABLE ++ || old_state == NM_DEVICE_STATE_DISCONNECTED) { ++ /* If the device was never activated, there's no point in ++ * updating routing or DNS. This allows us to keep the previous ++ * resolv.conf or routes from before NM started if no device was ++ * ever managed by NM. ++ */ ++ break; ++ } + case NM_DEVICE_STATE_UNAVAILABLE: + update_routing_and_dns (policy, FALSE); + break; +-- +1.7.7.2 + |