dns: don't update routing and DNS if no devices were ever managed
Avoids blowing away existing routes and resolv.conf if NM never managed any devices.
This commit is contained in:

committed by
Dan Williams

parent
184d01c27f
commit
0051b44a09
@@ -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);
|
||||
|
@@ -1023,6 +1023,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;
|
||||
|
Reference in New Issue
Block a user