diff options
Diffstat (limited to 'net/ipv6/route.c')
| -rw-r--r-- | net/ipv6/route.c | 3 | 
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 92826656968..e5fe0041adf 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1915,7 +1915,8 @@ void rt6_purge_dflt_routers(struct net *net)  restart:  	read_lock_bh(&table->tb6_lock);  	for (rt = table->tb6_root.leaf; rt; rt = rt->dst.rt6_next) { -		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF)) { +		if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF) && +		    (!rt->rt6i_idev || rt->rt6i_idev->cnf.accept_ra != 2)) {  			dst_hold(&rt->dst);  			read_unlock_bh(&table->tb6_lock);  			ip6_del_rt(rt);  |