* [PATCH net] Revert "ipv6: preserve insertion order for same-scope addresses"
@ 2026-05-28 11:11 Fernando Fernandez Mancera
2026-05-28 11:35 ` Stefano Brivio
0 siblings, 1 reply; 3+ messages in thread
From: Fernando Fernandez Mancera @ 2026-05-28 11:11 UTC (permalink / raw)
To: netdev
Cc: yuhuang, justin.iurman, horms, pabeni, kuba, edumazet, davem,
idosch, dsahern, sbrivio, Fernando Fernandez Mancera, Chris Adams
Chris Adams reported that preserving insertion order for same-scope
addresses is causing SSH connections to be dropped after stopping a VM
while running NetworkManager.
NetworkManager is caching the networking information from the system and
later operating with it. It relies on the order of IPv6 addresses to
configure routes for outgoing traffic. Revert to the previous ordering.
This reverts commit cb3de96eea66f5e4a580086c6a1be46e765f97f4.
Fixes: cb3de96eea66 ("ipv6: preserve insertion order for same-scope addresses")
Reported-by: Chris Adams <linux@cmadams.net>
Closes: https://lore.kernel.org/netdev/20260521135310.GC977@cmadams.net/
Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
---
net/ipv6/addrconf.c | 2 +-
tools/testing/selftests/net/ioam6.sh | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 5476b6536eb7..bb84a78b80f6 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1013,7 +1013,7 @@ ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
list_for_each(p, &idev->addr_list) {
struct inet6_ifaddr *ifa
= list_entry(p, struct inet6_ifaddr, if_list);
- if (ifp_scope > ipv6_addr_src_scope(&ifa->addr))
+ if (ifp_scope >= ipv6_addr_src_scope(&ifa->addr))
break;
}
diff --git a/tools/testing/selftests/net/ioam6.sh b/tools/testing/selftests/net/ioam6.sh
index b2b99889942f..845c26dd01a9 100755
--- a/tools/testing/selftests/net/ioam6.sh
+++ b/tools/testing/selftests/net/ioam6.sh
@@ -273,8 +273,8 @@ setup()
ip -netns $ioam_node_beta link set ioam-veth-betaR name veth1 &>/dev/null
ip -netns $ioam_node_gamma link set ioam-veth-gamma name veth0 &>/dev/null
- ip -netns $ioam_node_alpha addr add 2001:db8:1::2/64 dev veth0 &>/dev/null
ip -netns $ioam_node_alpha addr add 2001:db8:1::50/64 dev veth0 &>/dev/null
+ ip -netns $ioam_node_alpha addr add 2001:db8:1::2/64 dev veth0 &>/dev/null
ip -netns $ioam_node_alpha link set veth0 up &>/dev/null
ip -netns $ioam_node_alpha link set lo up &>/dev/null
ip -netns $ioam_node_alpha route add 2001:db8:2::/64 \
--
2.54.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH net] Revert "ipv6: preserve insertion order for same-scope addresses"
2026-05-28 11:11 [PATCH net] Revert "ipv6: preserve insertion order for same-scope addresses" Fernando Fernandez Mancera
@ 2026-05-28 11:35 ` Stefano Brivio
2026-05-28 14:11 ` Fernando Fernandez Mancera
0 siblings, 1 reply; 3+ messages in thread
From: Stefano Brivio @ 2026-05-28 11:35 UTC (permalink / raw)
To: Fernando Fernandez Mancera
Cc: netdev, yuhuang, justin.iurman, horms, pabeni, kuba, edumazet,
davem, idosch, dsahern, Chris Adams, david
On Thu, 28 May 2026 13:11:23 +0200
Fernando Fernandez Mancera <fmancera@suse.de> wrote:
> Chris Adams reported that preserving insertion order for same-scope
> addresses is causing SSH connections to be dropped after stopping a VM
> while running NetworkManager.
>
> NetworkManager is caching the networking information from the system and
> later operating with it. It relies on the order of IPv6 addresses to
> configure routes for outgoing traffic.
I think this paragraph should make it clear that NetworkManager relies
on a _reversed_ order (first inserted is returned last), and that it's
the opposite compared to IPv4.
> Revert to the previous ordering.
See my concern from:
https://lore.kernel.org/all/20260528131250.1352ab48@elisabeth/
(sorry, I sent that email moments after you sent this patch it seems). It
fixes the issue for NetworkManager assuming it's the only issue, but it
causes a regression for others.
If this revert is the only practical solution, so be it. I'm just wondering
if it really is.
> This reverts commit cb3de96eea66f5e4a580086c6a1be46e765f97f4.
>
> Fixes: cb3de96eea66 ("ipv6: preserve insertion order for same-scope addresses")
> Reported-by: Chris Adams <linux@cmadams.net>
> Closes: https://lore.kernel.org/netdev/20260521135310.GC977@cmadams.net/
> Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
> ---
> net/ipv6/addrconf.c | 2 +-
> tools/testing/selftests/net/ioam6.sh | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index 5476b6536eb7..bb84a78b80f6 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -1013,7 +1013,7 @@ ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
> list_for_each(p, &idev->addr_list) {
> struct inet6_ifaddr *ifa
> = list_entry(p, struct inet6_ifaddr, if_list);
> - if (ifp_scope > ipv6_addr_src_scope(&ifa->addr))
> + if (ifp_scope >= ipv6_addr_src_scope(&ifa->addr))
> break;
> }
>
> diff --git a/tools/testing/selftests/net/ioam6.sh b/tools/testing/selftests/net/ioam6.sh
> index b2b99889942f..845c26dd01a9 100755
> --- a/tools/testing/selftests/net/ioam6.sh
> +++ b/tools/testing/selftests/net/ioam6.sh
> @@ -273,8 +273,8 @@ setup()
> ip -netns $ioam_node_beta link set ioam-veth-betaR name veth1 &>/dev/null
> ip -netns $ioam_node_gamma link set ioam-veth-gamma name veth0 &>/dev/null
>
> - ip -netns $ioam_node_alpha addr add 2001:db8:1::2/64 dev veth0 &>/dev/null
> ip -netns $ioam_node_alpha addr add 2001:db8:1::50/64 dev veth0 &>/dev/null
> + ip -netns $ioam_node_alpha addr add 2001:db8:1::2/64 dev veth0 &>/dev/null
> ip -netns $ioam_node_alpha link set veth0 up &>/dev/null
> ip -netns $ioam_node_alpha link set lo up &>/dev/null
> ip -netns $ioam_node_alpha route add 2001:db8:2::/64 \
--
Stefano
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH net] Revert "ipv6: preserve insertion order for same-scope addresses"
2026-05-28 11:35 ` Stefano Brivio
@ 2026-05-28 14:11 ` Fernando Fernandez Mancera
0 siblings, 0 replies; 3+ messages in thread
From: Fernando Fernandez Mancera @ 2026-05-28 14:11 UTC (permalink / raw)
To: Stefano Brivio
Cc: netdev, yuhuang, justin.iurman, horms, pabeni, kuba, edumazet,
davem, idosch, dsahern, Chris Adams, david
On 5/28/26 1:35 PM, Stefano Brivio wrote:
> On Thu, 28 May 2026 13:11:23 +0200
> Fernando Fernandez Mancera <fmancera@suse.de> wrote:
>
>> Chris Adams reported that preserving insertion order for same-scope
>> addresses is causing SSH connections to be dropped after stopping a VM
>> while running NetworkManager.
>>
>> NetworkManager is caching the networking information from the system and
>> later operating with it. It relies on the order of IPv6 addresses to
>> configure routes for outgoing traffic.
>
> I think this paragraph should make it clear that NetworkManager relies
> on a _reversed_ order (first inserted is returned last), and that it's
> the opposite compared to IPv4.
>
FWIW; I still think that NetworkManager relies on the ordering but not
for the route.. AFAIU, the route should be for the prefix and should not
change at all.
So I need to figure out what is changing and document it properly on the
commit.
>> Revert to the previous ordering.
>
> See my concern from:
>
> https://lore.kernel.org/all/20260528131250.1352ab48@elisabeth/
>
> (sorry, I sent that email moments after you sent this patch it seems). It
> fixes the issue for NetworkManager assuming it's the only issue, but it
> causes a regression for others.
>
> If this revert is the only practical solution, so be it. I'm just wondering
> if it really is.
>
>> This reverts commit cb3de96eea66f5e4a580086c6a1be46e765f97f4.
>>
>> Fixes: cb3de96eea66 ("ipv6: preserve insertion order for same-scope addresses")
>> Reported-by: Chris Adams <linux@cmadams.net>
>> Closes: https://lore.kernel.org/netdev/20260521135310.GC977@cmadams.net/
>> Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
>> ---
>> net/ipv6/addrconf.c | 2 +-
>> tools/testing/selftests/net/ioam6.sh | 2 +-
>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
>> index 5476b6536eb7..bb84a78b80f6 100644
>> --- a/net/ipv6/addrconf.c
>> +++ b/net/ipv6/addrconf.c
>> @@ -1013,7 +1013,7 @@ ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
>> list_for_each(p, &idev->addr_list) {
>> struct inet6_ifaddr *ifa
>> = list_entry(p, struct inet6_ifaddr, if_list);
>> - if (ifp_scope > ipv6_addr_src_scope(&ifa->addr))
>> + if (ifp_scope >= ipv6_addr_src_scope(&ifa->addr))
>> break;
>> }
>>
>> diff --git a/tools/testing/selftests/net/ioam6.sh b/tools/testing/selftests/net/ioam6.sh
>> index b2b99889942f..845c26dd01a9 100755
>> --- a/tools/testing/selftests/net/ioam6.sh
>> +++ b/tools/testing/selftests/net/ioam6.sh
>> @@ -273,8 +273,8 @@ setup()
>> ip -netns $ioam_node_beta link set ioam-veth-betaR name veth1 &>/dev/null
>> ip -netns $ioam_node_gamma link set ioam-veth-gamma name veth0 &>/dev/null
>>
>> - ip -netns $ioam_node_alpha addr add 2001:db8:1::2/64 dev veth0 &>/dev/null
>> ip -netns $ioam_node_alpha addr add 2001:db8:1::50/64 dev veth0 &>/dev/null
>> + ip -netns $ioam_node_alpha addr add 2001:db8:1::2/64 dev veth0 &>/dev/null
>> ip -netns $ioam_node_alpha link set veth0 up &>/dev/null
>> ip -netns $ioam_node_alpha link set lo up &>/dev/null
>> ip -netns $ioam_node_alpha route add 2001:db8:2::/64 \
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-05-28 14:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-28 11:11 [PATCH net] Revert "ipv6: preserve insertion order for same-scope addresses" Fernando Fernandez Mancera
2026-05-28 11:35 ` Stefano Brivio
2026-05-28 14:11 ` Fernando Fernandez Mancera
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox