diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2022-12-19 10:18:46 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2023-01-11 10:05:15 +0100 |
commit | af1bbe8bd93e2f1494072228d883d7ddea2baa12 (patch) | |
tree | 1ea678d1eeabd821e6cac12b5831bb6573ecdada | |
parent | 1b0d98ab558b764e439cf924d7708ed204c3390f (diff) |
device: fix condition for scheduling stage3 after carrier change
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
(cherry picked from commit 6ea924fa7472fb7126f8de16de8838093552e2ec)
-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 be4daffc79..a723bf7f20 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -6392,7 +6392,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; } |