aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/addrconf.c
diff options
context:
space:
mode:
authorstephen hemminger <shemminger@vyatta.com>2010-04-12 01:41:31 -0400
committerDavid S. Miller <davem@davemloft.net>2010-04-13 05:29:27 -0400
commit93fa159abe50d3c55c7f83622d3f5c09b6e06f4b (patch)
treefdd522cb37ff6ac0cd4dd7a468b3f2b4abad3aa9 /net/ipv6/addrconf.c
parent3941f1885bbf5b9f5e45cdd5a82efc794cc3823f (diff)
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/addrconf.c')
-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 1b00bfef268e..a9913d23f7c7 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)
4047 addrconf_leave_anycast(ifp); 4047 addrconf_leave_anycast(ifp);
4048 addrconf_leave_solict(ifp->idev, &ifp->addr); 4048 addrconf_leave_solict(ifp->idev, &ifp->addr);
4049 dst_hold(&ifp->rt->u.dst); 4049 dst_hold(&ifp->rt->u.dst);
4050 if (ip6_del_rt(ifp->rt)) 4050
4051 if (ifp->dead && ip6_del_rt(ifp->rt))
4051 dst_free(&ifp->rt->u.dst); 4052 dst_free(&ifp->rt->u.dst);
4052 break; 4053 break;
4053 } 4054 }