Message ID | 52C5325B.8020900@huawei.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Jan 02, 2014 at 05:33:15PM +0800, chenweilong wrote: > diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c > index 62d1799..d2f8c0a 100644 > --- a/net/ipv6/addrconf.c > +++ b/net/ipv6/addrconf.c > @@ -2422,8 +2422,9 @@ static void init_loopback(struct net_device *dev) > if (sp_ifa->flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE)) > continue; > > - if (sp_ifa->rt) > - continue; > + if (sp_ifa->rt && sp_ifa->rt->dst.dev == dev) { > + ip6_del_rt(sp_ifa->rt); > + } > > sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0); > Maybe this change would not be that bad after all, as those ifa attached dsts are already dead and queued up for gc and should not get inserted back. I'll try to just disable routes without removing them at all when we set an interface to down at the weekend. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 62d1799..d2f8c0a 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2422,8 +2422,9 @@ static void init_loopback(struct net_device *dev) if (sp_ifa->flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE)) continue; - if (sp_ifa->rt) - continue; + if (sp_ifa->rt && sp_ifa->rt->dst.dev == dev) { + ip6_del_rt(sp_ifa->rt); + } sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0);