Le 2014-04-23 11:43, Stuart Henderson a écrit :
> On 2014/04/23 08:09, Simon Perreault wrote:
>> +                            else if (ifa->ifa_addr->sa_family == PF_INET6 &&
> 
> so... family is ipv6
> 
>> +                                !IN6_IS_ADDR_LOOPBACK(
>> +                                &((struct sockaddr_in6 *)ifa->ifa_addr)
>> +                                ->sin6_addr) &&
> 
> AND it's not a loopback address
> 
>> +                                !((ifa->ifa_flags & IFF_LOOPBACK) &&
>> +                                IN6_IS_ADDR_LINKLOCAL(
>> +                                &((struct sockaddr_in6 *)ifa->ifa_addr)
>> +                                ->sin6_addr)))
> 
> AND NOT (loopback interface AND link-local address)
> 
> But the intention seems to be "if you have a usable v6 address
> that stands a chance of being routable" - so shouldn't this last bit
> be "AND NOT loopback interface AND NOT link-local address"?
> 
> !(ifa->ifa_flags & IFF_LOOPBACK) && !(IN6_IS_ADDR_LINKLOCAL(
>     &((struct sockaddr_in6 *)ifa->ifa_addr)))
> 
> Otherwise AI_ADDRCONFIG will still allow v6 addresses if you have a
> default OpenBSD configuration i.e. the automatically configured
> link-local address on an ethernet interface even if you've done nothing
> to try and make them work.
> 
> I suspect it may not be quite RFC compliant, but I think actual usability
> trumps RFC compliance here.

Yes, you're right, I over-thought things here. Will send an updated diff
later today.

Thanks a lot for your thorough review!

Simon

Reply via email to