summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2022-12-19 10:18:46 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2022-12-23 16:00:40 +0100
commit6ea924fa7472fb7126f8de16de8838093552e2ec (patch)
treeb5fe8d78d2b2fc23bdaa1c33d6678e65e2ac6cc4
parentc1d234ce30a301ae9af2462343edf03431608e43 (diff)
downloadNetworkManager-6ea924fa7472fb7126f8de16de8838093552e2ec.tar.gz
device: fix condition for scheduling stage3 after carrier changebg/issue1165
When the device gets carrier, we should reschedule stage3 even if the device state is not exactly IP_CONFIG. For example if IPv6 autoconf is waiting for carrier and IPv6 is may-fail=yes, the device could be already ACTIVATED because manual IPv4 succeeded; after getting carrier, we need to call nm_device_activate_schedule_stage3_ip_config() to start IPv6 autoconf. Fixes: bcf31a9b299b ('device: fix assertion failure on master carrier change') https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1165 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1485
-rw-r--r--src/core/devices/nm-device.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index b23a34b2f0..d2a8227ced 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -6407,7 +6407,8 @@ carrier_changed(NMDevice *self, gboolean carrier)
if (carrier) {
/* If needed, also resume IP configuration that is
* waiting for carrier. */
- if (priv->state == NM_DEVICE_STATE_IP_CONFIG)
+ if (priv->state >= NM_DEVICE_STATE_IP_CONFIG
+ && priv->state <= NM_DEVICE_STATE_ACTIVATED)
nm_device_activate_schedule_stage3_ip_config(self, FALSE);
return;
}