On Mon, 9 Mar 2026 10:56:06 +0100
Stefano Brivio
[...]
The reason why the original code skipped IPv6 link-local addresses and not IPv4 link-local ones is that copying a IPv6 link-local address clearly makes no sense and breaks things.
For IPv4 I wasn't quite sure, and it seemed to work just like other addresses, so I never took care of excluding them.
I tend to think it's correct to exclude them, also for consistency with IPv6, but I'm not quite sure if we risk breaking something. I have some vague recollection of link-local addresses being used in some cloud (probably Google Computing Platform), at least for some Podman tests. I'll try to find some pointers to it.
Paul found this, from a GCE environment used in Podman's CI: https://api.cirrus-ci.com/v1/task/5902961064280064/logs/journal.log (look for "Route IPv4 info"): Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: +++++++++++++++++++++++++++++++Route IPv4 info++++++++++++++++++++++++++++++++ Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: +-------+-----------------+------------+-----------------+-----------+-------+ Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags | Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: +-------+-----------------+------------+-----------------+-----------+-------+ Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: | 0 | 0.0.0.0 | 10.128.0.1 | 0.0.0.0 | ens4 | UG | Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: | 1 | 10.128.0.1 | 0.0.0.0 | 255.255.255.255 | ens4 | UH | Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: | 2 | 169.254.169.254 | 10.128.0.1 | 255.255.255.255 | ens4 | UGH | Mar 09 16:58:37 cirrus-task-5902961064280064 cloud-init[573]: ci-info: +-------+-----------------+------------+-----------------+-----------+-------+ ...so there's a route to a link-local address, because that happens to be the DNS server. The host doesn't have a link-local IPv4 address though, so nothing we would risk missing with this kind of change. In any case, as agreed, better to leave that out as you did in v4, because it's not a trivial task to exclude that we're going to break something at this point. -- Stefano