device: skip IP configuration phase for external devices

We already avoid committing the IP configuration for external devices
(see commit 60334a2893). However, we still start DHCP/IPv6-autoconf
and, especially, we change sysctl values of the device.

To be sure that no action is taken on the device, return early from
the IP configuration phase, as in the method=disabled/ignore case.

https://bugzilla.redhat.com/show_bug.cgi?id=1530288
This commit is contained in:
Beniamino Galvani
2018-01-18 11:43:09 +01:00
parent 156344b8be
commit 22f32a16f5

View File

@@ -8359,6 +8359,12 @@ nm_device_activate_stage3_ip4_start (NMDevice *self)
g_assert (priv->ip4_state == IP_WAIT); g_assert (priv->ip4_state == IP_WAIT);
if (nm_device_sys_iface_state_is_external (self)) {
_set_ip_state (self, AF_INET, IP_DONE);
check_ip_state (self, FALSE);
return TRUE;
}
_set_ip_state (self, AF_INET, IP_CONF); _set_ip_state (self, AF_INET, IP_CONF);
ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip4_config_start (self, &ip4_config, &failure_reason); ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip4_config_start (self, &ip4_config, &failure_reason);
if (ret == NM_ACT_STAGE_RETURN_SUCCESS) { if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {
@@ -8400,6 +8406,12 @@ nm_device_activate_stage3_ip6_start (NMDevice *self)
g_assert (priv->ip6_state == IP_WAIT); g_assert (priv->ip6_state == IP_WAIT);
if (nm_device_sys_iface_state_is_external (self)) {
_set_ip_state (self, AF_INET6, IP_DONE);
check_ip_state (self, FALSE);
return TRUE;
}
_set_ip_state (self, AF_INET6, IP_CONF); _set_ip_state (self, AF_INET6, IP_CONF);
ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip6_config_start (self, &ip6_config, &failure_reason); ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip6_config_start (self, &ip6_config, &failure_reason);
if (ret == NM_ACT_STAGE_RETURN_SUCCESS) { if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {