IPv6: only notify protocols if address is compeletely gone
authorstephen hemminger <shemminger@vyatta.com>
Mon, 12 Apr 2010 05:41:34 +0000 (05:41 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Apr 2010 09:29:28 +0000 (02:29 -0700)
The notifier for address down should only be called if address is completely
gone, not just being marked as tentative on link transistion. The code
in net-next would case bonding/sctp/s390 to see address disappear on link
down, but they would never see it reappear on link up.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c

index a0175edb65899835eae0968b47836befee03ea70..7cba8845242fba08d4897070a28667d4f4dfe610 100644 (file)
@@ -2715,7 +2715,9 @@ static int addrconf_ifdown(struct net_device *dev, int how)
                }
 
                __ipv6_ifa_notify(RTM_DELADDR, ifa);
-               atomic_notifier_call_chain(&inet6addr_chain, NETDEV_DOWN, ifa);
+               if (ifa->dead)
+                       atomic_notifier_call_chain(&inet6addr_chain,
+                                                  NETDEV_DOWN, ifa);
                in6_ifa_put(ifa);
 
                write_lock_bh(&idev->lock);