From d0b16b9283dc16e9db642280be9d6b10a04092a8 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 7 May 2019 16:25:04 +0200 Subject: [PATCH] device: unconditionally reapply IP configuration on link up Consider the situation in which ipv4.method=auto and there is an address configured. Also, the DHCP timeout is long and there is no DHCP server. If the link is brought down temporarily, the prefix route for the static address is lost and not restored by NM because we reapply the IP configuration only when the IP state is DONE. The same can happen also for IPv6, but in that case also static IPv6 addresses are lost. We should always reapply the IP configuration when the link goes up. --- src/devices/nm-device.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 3f2f76938b..bc416ca3f0 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -3890,16 +3890,12 @@ device_link_changed (NMDevice *self) if (priv->up && (!was_up || seen_down)) { /* the link was down and just came up. That happens for example, while changing MTU. * We must restore IP configuration. */ - if (priv->ip_state_4 == NM_DEVICE_IP_STATE_DONE) { - if (!ip_config_merge_and_apply (self, AF_INET, TRUE)) - _LOGW (LOGD_IP4, "failed applying IP4 config after link comes up again"); - } + if (!ip_config_merge_and_apply (self, AF_INET, TRUE)) + _LOGW (LOGD_IP4, "failed applying IP4 config after link comes up again"); priv->linklocal6_dad_counter = 0; - if (priv->ip_state_6 == NM_DEVICE_IP_STATE_DONE) { - if (!ip_config_merge_and_apply (self, AF_INET6, TRUE)) - _LOGW (LOGD_IP6, "failed applying IP6 config after link comes up again"); - } + if (!ip_config_merge_and_apply (self, AF_INET6, TRUE)) + _LOGW (LOGD_IP6, "failed applying IP6 config after link comes up again"); } if (update_unmanaged_specs)