CVSROOT:        /cvs
Module name:    src
Changes by:     flor...@cvs.openbsd.org 2020/08/07 12:09:16

Modified files:
        sys/netinet6   : in6.c 

Log message:
The IPv6 source address selection rewrite had one (known) difference
to the previous behavior: In case of a tie the new implementation
would keep the current best address while the old implementation
replaced the best address.
Since IPv6 addresses are stored in a TAILQ this meant that the rewrite
would use the "oldest" address while the previous behavior was to use
the "newest".
RFC 6724 section 5 has no opinion which one is better and leaves the
tie break up to implementers.
naddy found out the hard way that this breaks his IPv6 connectivity in
case of flash renumbering events when the link on his cpe flaps and a
new prefix is used since we would always pick an old address.
While we could pick the newest address in a tie break this feels too
much like an implementation detail, a solution much more in the spirit
of IPv6 is to pick the address with the highest preferred lifetime (or
valid lifetime in case of another tie).

very patient testing naddy@

Reply via email to