summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch69
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
+