Skip site navigation (1)Skip section navigation (2)
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>