From 158dae6b5a6aa31ba2fb3fd1d1e95dbe4af3b748 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. (cherry picked from commit d0b16b9283dc16e9db642280be9d6b10a04092a8) (cherry picked from commit 4482ca64ba5bbf1c173ea5b4a3854da0173542a8) --- 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 8767305086..bae91276e1 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -3880,16 +3880,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)