Date: Thu, 10 Jan 2013 02:07:05 +0900 From: Hajimu UMEMOTO <ume@FreeBSD.org> To: Ben Morrow <ben@morrow.me.uk> Cc: freebsd-stable@freebsd.org Subject: Re: sendmail vs ipv6 broken after upgrade to 9.1 Message-ID: <ygevcb6e152.wl%ume@mahoroba.org> In-Reply-To: <20130109162900.GA81522@anubis.morrow.me.uk> References: <20130108151837.GF35868@acme.spoerlein.net> <50EC5922.5030600@boland.org> <20130108184051.GI35868@acme.spoerlein.net> <20130109.073354.730245417155474512.hrs@allbsd.org> <yge1udufoa7.wl%ume@mahoroba.org> <ygewqvme5r7.wl%ume@mahoroba.org> <20130109162900.GA81522@anubis.morrow.me.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, >>>>> On Wed, 9 Jan 2013 16:29:00 +0000 >>>>> Ben Morrow <ben@morrow.me.uk> said: ben> Where does it say that? All I can find (but I might be being stupid) is ben> the bit in the description of AI_ALL where it says 'A query is first ben> made for AAAA records and if successful, the IPv6 addresses are ben> returned. Another query is then made for A records and any found are ben> returned as IPv4-mapped IPv6 addresses.'. I don't believe that is meant ben> to indicate the AAAA results are returned first in the list, just that ben> both sets of results are included. It is the sentence you mentioned. It was not thought those days that a query order and an order of the value to return were another. So, I think that it implies the order of the value to return. ben> Also, RFC 6724 (which is more recent), says 'we intend that ben> implementations of APIs such as getaddrinfo() will use the destination ben> address selection algorithm specified here to sort the list of IPv6 and ben> IPv4 addresses that they return.'. AFAICS 'APIs such as getaddrinfo()' ben> is supposed to include getipnodebyname and gethostbyname2, and the whole ben> list of v4 and v6 addresses is supposed to be sorted by those rules. I thought so at the time when I implemented it. However, getipnodebyname has IPv4-mapped addresses issue as compared with getaddrinfo. Since gethostbyname2 doesn't treat multiple families at once, it is out of scope, IMHO. gethostbyname2 in FreeBSD doesn't obey ip6addrctl. ben> However, given that FreeBSD disables the use of v4-mapped addresses on ben> AF_INET6 sockets by default, it might be sensible to change the rules a ben> little. An application making an AF_INET6 query is probably going to use ben> the result with an AF_INET6 socket, so a v4-mapped address is going to ben> be mostly useless. There is IPV6_V6ONLY socket option. Still, an application has two choices: - convert IPv4-mapped address to IPv4 address, or - issue IPV6_V6ONLY socket option. In anyway, I think it is important that an application conscious of using the IPv4-mapped address. > I've just committed to disable it: > > http://svnweb.freebsd.org/base?view=revision&revision=245225 ben> I don't think that's the right answer. Even if the code should be ben> changed to always return addresses from A records last, the IPv6 ben> addresses from AAAA records should still be sorted according to ben> ip6addrctl. Otherwise sites with multiple prefixes (say, a ULA prefix ben> and a global prefix) won't be able to control their use properly. getipnodebyname was deprecated by RFC 3493 and appropriate time has passed since then. So, it is low-priority, IMHO. Sincerely, -- Hajimu UMEMOTO ume@mahoroba.org ume@{,jp.}FreeBSD.org http://www.mahoroba.org/~ume/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ygevcb6e152.wl%ume>