diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2022-12-19 10:18:46 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2022-12-23 16:00:40 +0100 |
commit | 6ea924fa7472fb7126f8de16de8838093552e2ec (patch) | |
tree | b5fe8d78d2b2fc23bdaa1c33d6678e65e2ac6cc4 | |
parent | c1d234ce30a301ae9af2462343edf03431608e43 (diff) | |
download | NetworkManager-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.c | 3 |
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; } |