diff options
author | stephen hemminger <shemminger@vyatta.com> | 2010-04-12 05:41:31 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-13 02:29:27 -0700 |
commit | 93fa159abe50d3c55c7f83622d3f5c09b6e06f4b (patch) | |
tree | fdd522cb37ff6ac0cd4dd7a468b3f2b4abad3aa9 /net/ipv6 | |
parent | 3941f1885bbf5b9f5e45cdd5a82efc794cc3823f (diff) | |
download | op-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>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 3 |
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; } |