sendmail vs ipv6 broken after upgrade to 9.1

Hajimu UMEMOTO ume at FreeBSD.org
Wed Jan 9 17:07:20 UTC 2013


Hi,

>>>>> On Wed, 9 Jan 2013 16:29:00 +0000
>>>>> Ben Morrow <ben at 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 at mahoroba.org  ume@{,jp.}FreeBSD.org
http://www.mahoroba.org/~ume/


More information about the freebsd-stable mailing list