summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstephen hemminger <shemminger@vyatta.com>2010-04-12 05:41:31 +0000
committerDavid S. Miller <davem@davemloft.net>2010-04-13 02:29:27 -0700
commit93fa159abe50d3c55c7f83622d3f5c09b6e06f4b (patch)
treefdd522cb37ff6ac0cd4dd7a468b3f2b4abad3aa9
parent3941f1885bbf5b9f5e45cdd5a82efc794cc3823f (diff)
downloadop-kernel-dev-93fa159abe50d3c55c7f83622d3f5c09b6e06f4b.zip
op-kernel-dev-93fa159abe50d3c55c7f83622d3f5c09b6e06f4b.tar.gz
IPv6: keep route for tentative address
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>
-rw-r--r--net/ipv6/addrconf.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 1b00bfe..a9913d2 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -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;
}
OpenPOWER on IntegriCloud