getifaddrs & ipv6 scope

Andrew Thompson thompsa at FreeBSD.org
Sun Apr 15 23:21:27 UTC 2012


On 14 April 2012 06:03, Hajimu UMEMOTO <ume at freebsd.org> wrote:
> Hi,
>
>>>>>> On Fri, 13 Apr 2012 20:01:39 +1200
>>>>>> Andrew Thompson <thompsa at FreeBSD.org> said:
>
> thompsa> On 13 April 2012 18:41, Rainer Bredehorn <Bredehorn at gmx.de> wrote:
>> Hi!
>>
>>> I have noticed that getifaddrs() does not have sin6_scope_id set to
>>> the interface id for link local addresses on AF_INET6 types. Running
>>> the following program gives different results on Linux
>>
>> ifconfig shows the scopeid according to the interface:
>>
>> inet6 fe80::208:9bff:fe13:784e%fxp1 prefixlen 64 scopeid 0x2
>>
>> Are you talking about the scope value of an multicast address or
>> the scopeid for link local addresses?
>
> thompsa> I am talking about the scopeid for link local addresses which (as far
> thompsa> as I understand) is the interface index.
>
> The issue you mentioned comes from an implementation decision of the
> KAME IPv6 stack.
> The attached patch should address it.  However, it may break the
> applications which expect that getifaddrs() returns a link-local
> address with KAME's embeded scopeid representation.  I'm not sure
> there are such applications, for now.

This is now working how I expected it. From my original test app,

dev: bge0     address: <fe80::a6ba:dbff:fe03:d69%bge0> scope 2
dev: lo0      address: <::1> scope 0
dev: lo0      address: <fe80::1%lo0> scope 5
dev: tun5     address: <fe80::a6ba:dbff:fe03:d69%tun5> scope 6
dev: tun3     address: <fe80::a6ba:dbff:fe03:d69%tun3> scope 7
dev: tun0     address: <fe80::a6ba:dbff:fe03:d69%tun0> scope 8


regards,
Andrew


More information about the freebsd-net mailing list