summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2022-12-19 10:18:46 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2023-01-11 10:05:15 +0100
commitaf1bbe8bd93e2f1494072228d883d7ddea2baa12 (patch)
tree1ea678d1eeabd821e6cac12b5831bb6573ecdada
parent1b0d98ab558b764e439cf924d7708ed204c3390f (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.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 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;
}