On 11/19/2013 12:33 PM, Rick Jones wrote:
Danny Mayer <[email protected]> wrote:
That must have been a short discussion. getaddrinfo() has nothing to
do with the IP stack. getaddrinfo()'s job is to get information from
the nameservers you specify in resolv.conf or wherever else the OS
has that information. Its job is NOT to make decisions about what it
should ask for. That's the programmer's job when setting up the API
call as to what addresses to ask for.
I suspect it all boils down to the behaviour when one sets
AI_ADDRCONFIG in the getaddrinfo() call.  When that is set, ostensibly
getaddrinfo() is supposed to filter-out any reponses that are of a
type that cannot be used by the application.  The decision made was if
there were no non-loopback-interface IPv6 addresses configured, AAAA
records would not be returned from the getaddrinfo() call.  Similarly
for A recorecords if there were no IPv4 addresses configured on the
system.

Later, when interfaces started getting auto-configured, local scope
IPv6 addresses, there was a call to change that to be "don't return
IPv6 addresses unless there is a better-than-local-scope IPv6 address
assigned."  Started causing me all manner of pain in netperf :( Not
sure where that stands now in the Linux world.

rick jones
Yes, that was the issue. Further complicating it was what do you return if you have no IPv6 interfaces and you set AI_ADDRCONFIG and you pass in a literal IPv6 address. The problem is that getaddrinfo replaces both gethostbyname and inet_aton, each of which you might expect to have different results in that case. We had people citing two RFC's and the ipng working group mailing list. Great fun.

Brian utterback

Brian Utterback
_______________________________________________
questions mailing list
[email protected]
http://lists.ntp.org/listinfo/questions

Reply via email to