[zeromq-dev] [PATCH] IPv6 support v2.0

Steven McCoy steven.mccoy at miru.hk
Mon Aug 8 15:41:23 CEST 2011


On 8 August 2011 20:58, Steven McCoy <steven.mccoy at miru.hk> wrote:

> On 8 August 2011 18:47, Martin Sustrik <sustrik at 250bpm.com> wrote:
>
>> Hi Steven,
>>
>> I guess there may be a problem here:
>>
>>    for (ifaddrs *ifp = ifa; ifp != NULL ;ifp = ifp->ifa_next)
>>    {
>>        if (ifp->ifa_addr == NULL)
>>            continue;
>>
>>        int family = ifp->ifa_addr->sa_family;
>>
>>        if ((family == AF_INET
>>             || (!ipv4only_ && family == AF_INET6))
>>            && !strcmp (interface_, ifp->ifa_name))
>>        {
>>            memcpy (addr_, ifp->ifa_addr,
>>                    (family == AF_INET) ? sizeof (struct sockaddr_in)
>>                                        : sizeof (struct sockaddr_in6));
>>            found = true;
>>            break;
>>        }
>>    }
>>
>> Specifically, if you have both IPv4 and IPv6 interface with the same name
>> and ipv4only is false, it depends on ordering of the results in getifaddrs()
>> resultset which of those two is returned.
>>
>> I would suppose in such case IPv6 address should be returned.
>>
>>
> The "correct method" would be to implement precedence per gai.conf, i.e. RFC
> 3484 sorting.
>
> http://linux.die.net/man/5/gai.conf
>
>
I found some BSD/MIT license code from within Google Android that implements
this:

http://source-android.frandroid.com/bionic/libc/netbsd/net/getaddrinfo.c

Subsequently you could later implement OS override by reading gai.conf or
pulling in netsh prefixpolicy on Windows.

Actually this is pretty neat:

http://msdn.microsoft.com/en-us/library/ms740614(v=vs.85).aspx

-- 
Steve-o
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20110808/97e5e6e9/attachment.htm>


More information about the zeromq-dev mailing list