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.

Martin


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to