Implement support for RFC 3484 (address selection/sorting) in bionic. (The
authorSteinar H. Gunderson <sesse@google.com>
Thu, 11 Feb 2010 14:44:55 +0000 (15:44 +0100)
committerSteinar H. Gunderson <sesse@google.com>
Wed, 24 Feb 2010 10:49:17 +0000 (11:49 +0100)
commit9ab75d4cc803e91b7f1b656ffbe2ad32c52a86f9
tree7f0451638ba549b39cb81ae45e570e7a0534de9e
parentb55462328f7f7468bb8c0cb44ad1069af30415a3
Implement support for RFC 3484 (address selection/sorting) in bionic.  (The
Java changes required not to mess up the ordering from bionic will arrive in a
later commit.) In particular, this will give us more correct behavior when on a
6to4 network, in that IPv4 will usually be preferred over 6to4.

Most of RFC 3484 is implemented -- what's not is rule 3 (avoid deprecated
addresses), 4 (prefer home addresses) and 7 (prefer native transport) as they
require low-level access to the kernel routing table via netlink. (glibc also
started out this way, and these rules are primarily useful in pretty obscure
circumstances, so we should be fine for the time being.)

Also, rule 9 (use longest matching prefix) has been modified so it does not try
to sort IPv4 addresses; given current IPv4 addressing practice these rules are
pretty much meaningless. Finally, I've added support for Teredo as a separate
label, with slightly lower preference than 6to4. (Vista puts the preference
below IPv4 by default. glibc puts the preference together with non-tunneled
IPv6.)

Note that this patch removes support for the "sortlist" directive in
resolv.conf; I've never seen it in actual use, it's irrelevant for Android
(since we don't use resolv.conf anyway), and it's not clear how it would be
implemented alongside RFC 3484.
libc/docs/CHANGES.TXT
libc/netbsd/net/getaddrinfo.c