IPv6: keep route for tentative address
authorstephen hemminger <shemminger@vyatta.com>
Mon, 12 Apr 2010 05:41:31 +0000 (05:41 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Apr 2010 09:29:27 +0000 (02:29 -0700)
Recent changes preserve IPv6 address when link goes down (good).
But would cause address to point to dead dst entry (bad).
The simplest fix is to just not delete route if address is
being held for later use.

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

index 1b00bfef268e12bc725382394deb0c06dea67946..a9913d23f7c7d6eaf3a118d2f7f7041c1bea5dc0 100644 (file)
@@ -4047,7 +4047,8 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
                        addrconf_leave_anycast(ifp);
                addrconf_leave_solict(ifp->idev, &ifp->addr);
                dst_hold(&ifp->rt->u.dst);
-               if (ip6_del_rt(ifp->rt))
+
+               if (ifp->dead && ip6_del_rt(ifp->rt))
                        dst_free(&ifp->rt->u.dst);
                break;
        }