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
This commit is contained in:
Beniamino Galvani 2017-06-08 00:26:00 +02:00
parent 5b55c01848
commit aa099906f9

View file

@ -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");
}
}