On Tue, 23 Nov 2004 23:22:50 +0200
Hasso Tepper <hasso@xxxxxxxxx> wrote:
> While debugging IPv6 RIB in Quagga routing software I discovered some issues
> with kernel rtnetlink messages.
> 1) RTM_NEWROUTE message with prefix ff00::/8 (if interface goes up or down)
> is sent with rtm_type set to RTN_UNICAST. It's multicast route, so why not
> RTN_MULTICAST? Is it bug?
What kernel version? I remember fixing this bug.
We should not be emitting rtnetlink messages for
these any more.
> 2) If address is added to the interface, route is created by kernel to route
> prefix to the intarface. In IPv4 these routes have rtm_protocol set to
> RTPROT_KERNEL if announced it via rtnetlink, but that's not the case with
> IPv6. It doesn't matter if address is added by the user or it's the link
> local address (fe80::/64 route). Is it intentional or bug?
> 3) Not really rtnetlink related, but if this address is removed from
> interface, route created by kernel (when address was added) isn't removed
> from table. Is it intentional?
I remember fixing these problems too at some point.
In net/ipv6/route.c:rt6_fill_node(), if the RTF_ADDRCONF flag is
set on the route (which is will be set for link-local address
addition routes done by the addrconf layer) then we will set
RTPROT_KERNEL on it.
For every address deleted on an ipv6 interface we invoke
net/ipv6/addrconf.c:ipv6_ifa_notify() with event set to
RTM_DELADDR. That causes ip6_del_rt() to be invoked for
that link-local address's route.
In the end, I think you're just using an ancient kernel
which didn't have these bug fixes added.