Thread (10 messages) 10 messages, 3 authors, 2007-09-16

Re: [PATCH 1/1] ipv6: corrects sended rtnetlink message

flat view

From: Milan Kocian <hidden>
Date: 2007-09-06 21:06:16

On Thu, Sep 06, 2007 at 12:47:11PM +0200, Thomas Graf wrote:
* Milan Kocian [off-list ref] 2007-08-29 23:51
quoted
Because RTM_NEWLINK is used to notify about device status change
(as I see in net/core/rtnetlink.c) and RTM_DELLINK to inform about
NETDEV_UNREGISTER. Why should it be else in ipv6 subsystem ? And
userspace programs (quagga) suppose it. Now userspace get two rtnetlink's
'LINK' messages on 'ip l s down' event. First is RTM_NEWLINK from 
net/core/rtnetlink.c and second is RTM_DELLINK from ipv6.
The logic behind is quite simple, we notify via RTM_NEWLINK whenever
a device changes any of its attributes.
I agree but ipv6 sends on device change (NETDEV_DOWN) RTM_DELLINK message.
BTW when ipv6 send LINK message on NETDEV_UNREGISTER event, why doesn't 
send message on NETDEV_REGISTER event? No symmetry ?
quoted
quagga story:
On NEWLINK (flag IFF_UP is down) message quagga flushes all routes from RIB
but leaves ip adresses. On DELLINK message q. flushes routes and addresses.
On 'ip l s up' event ipv6 sends addresses and routes again but ipv4 not
(it sends only routes). Thus q. stays without knowledge about ipv4's addresses
after 'ip l s down/up' commands.

git change:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=979ad663125af4be120697263038bb06ddbb83b4
It is arguable whether this change is correct, the purpose is clearly
to notify that IPv6 is no longer available on this interface without
implying anything beyond that.
ok. However, if I understand, LINK messages handle device changes not
protocol changes. Or not ?
Fortunately, all unregister events have the ifi_change field set to ~0U
whereas the "IPv6 disabled" notification sets the ifi_chagne field to
0 making it trivial to differ between the two cases. So quagga can
simply ignore (RTM_DELLINK && !ifi_change) notifications.
Now I ignore (RTM_DELLINK && ifi_family==AF_INET6) :-). But it's only workaround
till next change. 
quoted
IMHO second possibility is to remove rtnetlink notification about
NETDEV_DOWN/_UNREGISTER from ipv6 subsystem because it is duplicate message.
Please make sure nobody is relying on this notification, IPv6 includes
more information in link messages, someone may be relying on this. If
not, feel free to remove the notification.
Hard to find it. I can try to look at other routing sw (probably most using it)
about handling with RTM_DELLINK.
Howerer when was made change from RTM_NEWLINK to RTM_DELLINK without protests,
we can try remove message :-)

Regards,

-- 
Milan Kocian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help