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