Re: [PATCH net v2] Revert "ipv6: preserve insertion order for same-scope addresses"
Íñigo Huguet <[email protected]>
| Newsgroups | dev.linux.lists.regressions,org.kernel.vger.netdev |
|---|---|
| Message-ID | <CACT4oueDv=KRZmJw=1N58EN7eoFz5AqbBBMP8FE4=+rQ99oFEg@mail.gmail.com> |
On Mon, Jun 1, 2026 at 3:35 PM Stefano Brivio <[email protected]> wrote: > I was thinking that if we implement a label like NLM_F_INSERT_LAST > (David's proposal for the name), we could patch iproute2 to set it on > 'ip address restore' at least, other than using it in pasta(1). I'm not sure whether what I'm going to say is a good idea, or just a plain stupid proposal: By reverting the old odd behaviour, UAPI is restored, yes. On the other side, userspace programs won't have any incentive to start using NLM_F_INSERT_LAST, which is actually the most desirable behaviour. The old odd behaviour is very error prone, as we can see with the `ip addr restore` bug. That's why programs should adopt the "new" behaviour and this will save them from introducing bugs like that one in the future. And new programs should get the normal insertion by default, without needing to read documentation or kernel headers to find NLM_F_INSERT_LAST. What if we reapply the patch and add a NLM_F_INSERT_FIRST / NLM_F_PREPEND option instead? This will break UAPI, which is bad, but probably not too bad per the conversations in this and the other thread. Userspace programs affected by the change, like NetworkManager, will need to be fixed, either by switching to natural order insertion, or by passing the NLM_F_INSERT_FIRST flag to restore the old behaviour. Additionally, a NLM_F_INSERT_FIRST can be implemented for IPv4 too, at least for consistency (I don't know whether it may be actually useful for something, likely yes?). As I said, this solution would break a few programs like NetworkManager, but the fix is as easy as `if (ipv6) flags |= NLM_F_INSERT_FIRST`. Would old kernels ignore this unknown flag? Because, in that case, we don't even need a detection mechanism from NetworkManager. > > But that wouldn't be enough for your case. At the same time always > adding it for RTM_NEWADDR requests in iproute2 could break somebody > else's scripts. I guess a reasonable solution could be to add an > additional parameter for ip-address... 'insert_last'? 'last'? > > -- > Stefano > -- Íñigo Huguet