IPv6 routing /48s

FreeBSD 6 has is as part of the standard getaddrinfo() implementation.

% grep -r in6_addrpolicy /usr/src/lib/libc
/usr/src/lib/libc/net/getaddrinfo.c: struct in6_addrpolicy pc_policy;
/usr/src/lib/libc/net/getaddrinfo.c: struct in6_addrpolicy *pol, *ep;
/usr/src/lib/libc/net/getaddrinfo.c: ep = (struct in6_addrpolicy *)(buf + l);
/usr/src/lib/libc/net/getaddrinfo.c: for (pol = (struct in6_addrpolicy *)buf; pol + 1 <= ep; pol++) {
/usr/src/lib/libc/net/getaddrinfo.c: struct in6_addrpolicy *pol;
/usr/src/lib/libc/net/name6.c: struct in6_addrpolicy pc_policy;
/usr/src/lib/libc/net/name6.c: struct in6_addrpolicy *pol, *ep;
/usr/src/lib/libc/net/name6.c: ep = (struct in6_addrpolicy *)(buf + l);
/usr/src/lib/libc/net/name6.c: for (pol = (struct in6_addrpolicy *)buf; pol + 1 <= ep; pol++) {
/usr/src/lib/libc/net/name6.c: struct in6_addrpolicy *pol;
%

* Mark_Andrews@isc.org (Mark Andrews) [Wed 26 Nov 2008, 01:55 CET]:

* alh-ietf@tndh.net (Tony Hain) [Wed 26 Nov 2008, 01:03 CET]:

In any case, content providers can avoid the confusion if they simply put up
a local 6to4 router alongside their 2001:: prefix, and populate DNS with
both. Longest match will cause 2001:: connected systems to chose that dst,
while 6to4 connected systems will chose 2002:: as the dst. There is no need

Huh? Longest match done by web browsers and other applications? Since when?

FreeBSD 6 has is as part of the standard getaddrinfo() implementation.

I don't see that do any differentiation between 2001::/32, 2002::/16 and 2000::/8; only between IPv6-mapped IPv4 addresses and various interface/link/site-local addresses. And even that function has a big
  * XXX: we should standardize the functions and link them as standard
  * library.
warning stuck on top of it

  -- Niels.