In article <[EMAIL PROTECTED]> (at Sat, 5 Feb 2005 21:04:11 -0800), "David S. Miller" <[EMAIL PROTECTED]> says:
> On Sun, 06 Feb 2005 13:37:23 +0900 (JST) > YOSHIFUJI Hideaki / [EMAIL PROTECTED](B <[EMAIL PROTECTED]> wrote: > > > How about making dst->ops->dev_check() like this: > > > > static int inline dst_dev_check(struct dst_entry *dst, struct net_device > > *dev) > > { > > if (dst->ops->dev_check) > > return dst->ops->dev_check(dst, dev) > > else > > return dst->dev == dev; > > } > > Oh I see. That would work, and it seems the simplest, and > lowest risk fix for this problem. Well... Here, lo is going down. rt->rt6i_dev = lo and rt->rt6i_idev = ethX. I think we already see dst->dev == dev (==lo) now. So, I doubt that fix the problem. The source of problem is entry (*) which still on routing entry, not on gc list. And, the owner of entry is not routing table but unicast/anycast address structure(s). We need to "kill" active address on the other interfaces. *: rt->rt6i_dev = lo and rt->rt6i_idev = ethX BTW, I wish we could shut down eth0 during lo is pending... --yoshfuji - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/