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

Steven McCoy steven.mccoy at miru.hk
Mon Aug 8 14:58:00 CEST 2011


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

Consider typically eth0 will have IPv4, IPv6 link-local, and IPv6
global-scope interfaces.

Options are:

   1. Use default list ordering and pick first result.
   2. Implement RFC 3484 sorting.
   3. Error out on multiple matching adapters.

So the patch currently does #1, OpenPGM does #3 and assumes #2 for DNS
resolution.

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


More information about the zeromq-dev mailing list