From: stephen hemminger Date: Thu, 16 Dec 2010 11:28:12 +0000 (+0000) Subject: ipv6: don't flush routes when setting loopback down X-Git-Tag: v2.6.37-rc8~13^2~19 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=29ba5fed1bbd09c2cba890798c8f9eaab251401d;p=~emulex%2Finfiniband.git 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 Acked-by: "Eric W. Biederman" Signed-off-by: David S. Miller --- diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 93b7a933a77..848b3559104 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2669,7 +2669,9 @@ static int addrconf_ifdown(struct net_device *dev, int how) 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); idev = __in6_dev_get(dev);