From 6a4774b1a8fdc346e0a2d2a3d2ec43054190fdc5 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 8 Jun 2017 00:26:00 +0200 Subject: [PATCH] device: apply route metric penality only when the default route exists It's useless (and in some cases also harmful) to commit the configuration to update the default route metric when the device has no default route. Also, don't commit configuration for externally activated devices. https://bugzilla.redhat.com/show_bug.cgi?id=1459604 (cherry picked from commit aa099906f93264bda3ae34fca4dfbdde5455b2bb) --- src/devices/nm-device.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index f473684c35..381cd15a5b 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -1827,10 +1827,13 @@ update_connectivity_state (NMDevice *self, NMConnectivityState state) priv->connectivity_state = state; _notify (self, PROP_CONNECTIVITY); - if (nm_device_get_state (self) == NM_DEVICE_STATE_ACTIVATED) { - if (!ip4_config_merge_and_apply (self, NULL, TRUE)) + if ( priv->state == NM_DEVICE_STATE_ACTIVATED + && !nm_device_sys_iface_state_is_external (self)) { + if ( priv->default_route.v4_has + && !ip4_config_merge_and_apply (self, NULL, TRUE)) _LOGW (LOGD_IP4, "Failed to update IPv4 default route metric"); - if (!ip6_config_merge_and_apply (self, TRUE)) + if ( priv->default_route.v6_has + && !ip6_config_merge_and_apply (self, TRUE)) _LOGW (LOGD_IP6, "Failed to update IPv6 default route metric"); } }