55 lines
2.8 KiB
Diff
55 lines
2.8 KiB
Diff
From 9bbb1139872b6a3cb21e1c08c7853057b4ee2674 Mon Sep 17 00:00:00 2001
|
|
From: Lubomir Rintel <lkundrak@v3.sk>
|
|
Date: Mon, 30 Jun 2025 15:50:44 +0200
|
|
Subject: [PATCH] device: don't disable IPv6 in stage3 on reapply
|
|
|
|
Currently, when a call to Reapply() results in stage3 being re-run, IPv6
|
|
ends up messed up. Like this:
|
|
|
|
$ nmcli device modify eth0 ipv4.address ''
|
|
$ nmcli device modify eth0 ipv4.address 172.31.13.37/24
|
|
$
|
|
|
|
NetworkManager[666]: <debug> [1751286095.2070] device[c95ca04a69467d81] (eth0): ip4: reapply...
|
|
...
|
|
NetworkManager[666]: <debug> [1751286095.2104] device[c95ca04a69467d81] (eth0): ip6: addrgenmode6: set none (already set)
|
|
NetworkManager[666]: <debug> [1751286095.2105] device[c95ca04a69467d81] (eth0): ip6: addrgenmode6: toggle disable_ipv6 sysctl after disabling addr-gen-mode
|
|
NetworkManager[666]: <debug> [1751286095.2105] platform-linux: sysctl: setting '/proc/sys/net/ipv6/conf/eth0/disable_ipv6' to '1' (current value is '0')
|
|
NetworkManager[666]: <debug> [1751286095.2106] platform-linux: sysctl: setting '/proc/sys/net/ipv6/conf/eth0/disable_ipv6' to '0' (current value is '1')
|
|
NetworkManager[666]: <debug> [1751286095.2106] platform-linux: sysctl: setting '/proc/sys/net/ipv6/conf/eth0/accept_ra' to '0' (current value is identical)
|
|
NetworkManager[666]: <debug> [1751286095.2106] platform-linux: sysctl: setting '/proc/sys/net/ipv6/conf/eth0/disable_ipv6' to '0' (current value is identical)
|
|
|
|
Not only is this unnecessary because addr-gen-mode already has the
|
|
desired value (as is logged), but also wipes off all IPv6 configuration.
|
|
This is fine on initial configuration, but not on Reapply().
|
|
|
|
Let's look at the device state first: if we've progressed past ip-config
|
|
state, then we can't possibly ever touch the offending sysctls. It's
|
|
okay -- we don't need to: addr-gen-mode is going to be set right if we
|
|
went through ip-config before.
|
|
|
|
Resolves: https://issues.redhat.com/browse/NMT-1681
|
|
|
|
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2232
|
|
---
|
|
src/core/devices/nm-device.c | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
|
|
index 7aaf4d78ed..9e0a53cd32 100644
|
|
--- a/src/core/devices/nm-device.c
|
|
+++ b/src/core/devices/nm-device.c
|
|
@@ -13437,7 +13437,8 @@ activate_stage3_ip_config(NMDevice *self)
|
|
* IPv6LL if this is not an assumed connection, since assumed connections
|
|
* will already have IPv6 set up.
|
|
*/
|
|
- if (!nm_device_managed_type_is_external_or_assume(self))
|
|
+ if ((priv->state <= NM_DEVICE_STATE_IP_CONFIG || priv->ip_data_6.do_reapply)
|
|
+ && !nm_device_managed_type_is_external_or_assume(self))
|
|
_dev_addrgenmode6_set(self, NM_IN6_ADDR_GEN_MODE_NONE);
|
|
|
|
/* Re-enable IPv6 on the interface */
|
|
--
|
|
2.50.1
|
|
|