Implement rule 5.5 of RFC 6724 (Default Address Selection for IPv6)
authorflorian <florian@openbsd.org>
Sun, 21 Apr 2024 17:32:10 +0000 (17:32 +0000)
committerflorian <florian@openbsd.org>
Sun, 21 Apr 2024 17:32:10 +0000 (17:32 +0000)
commit7186e9186c3dfbe1a85bb5bfea568b87dbe7209f
treecc5c2e0e3b86b126f2e998db29a729bfa0e2ff63
parente341dcb5f0abd4d8bd4eab4e66f853445c60f0e2
Implement rule 5.5 of RFC 6724 (Default Address Selection for IPv6)

Rule 5.5: Prefer addresses in a prefix advertised by the next-hop.

For this we have to track the (link-local) address of the advertising
router per interface address and compare it with the selected route.

Rule 5.5 is useful in multi-homing setups where we have more than one
prefix and default router. We have to use the source address with the
correct default gateway otherwise traffic is likely going to be
dropped because of BCP 38.

While here refactor in6_update_ifa() a bit to make the code clearer
and consistently use (var & flag) instead of (var & flag) != 0.

Patiently reviewed by & OK bluhm.
sys/netinet6/icmp6.c
sys/netinet6/in6.c
sys/netinet6/in6.h
sys/netinet6/in6_src.c
sys/netinet6/in6_var.h