浏览代码

ipv6: don't flush routes when setting loopback down

When loopback device is being brought down, then keep the route table
entries because they are special. The entries in the local table for
linklocal routes and ::1 address should not be purged.

This is a sub optimal solution to the problem and should be replaced
by a better fix in future.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
stephen hemminger 14 年之前
父节点
当前提交
29ba5fed1b
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      net/ipv6/addrconf.c

+ 3 - 1
net/ipv6/addrconf.c

@@ -2669,7 +2669,9 @@ static int addrconf_ifdown(struct net_device *dev, int how)
 
 
 	ASSERT_RTNL();
 	ASSERT_RTNL();
 
 
-	rt6_ifdown(net, dev);
+	/* Flush routes if device is being removed or it is not loopback */
+	if (how || !(dev->flags & IFF_LOOPBACK))
+		rt6_ifdown(net, dev);
 	neigh_ifdown(&nd_tbl, dev);
 	neigh_ifdown(&nd_tbl, dev);
 
 
 	idev = __in6_dev_get(dev);
 	idev = __in6_dev_get(dev);