From d6dbca0b4d34fbd921bf78f195918c42e5163023 Mon Sep 17 00:00:00 2001 From: YOSHIFUJI Hideaki Date: Wed, 23 Aug 2006 17:22:55 -0700 Subject: [PATCH] --- yaml --- r: 34551 b: refs/heads/master c: 150730d5a53b1bbb486101b2a5fb82ff0d3f916e h: refs/heads/master i: 34549: 1c42f348ddc9b52e3a7181a02874ffde71c35866 34547: 7a2780691cf744256e730557903a571c56ad2444 34543: f1d785965528ae5707b3ef185e7fc8fe710b73b9 v: v3 --- [refs] | 2 +- trunk/net/ipv6/ip6_fib.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e7e2982cc074..7256d672e991 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 982f56f3a9be4651520c0fdd3d80a5d02e95a178 +refs/heads/master: 150730d5a53b1bbb486101b2a5fb82ff0d3f916e diff --git a/trunk/net/ipv6/ip6_fib.c b/trunk/net/ipv6/ip6_fib.c index 6536e33d8353..f0fdaf182b3f 100644 --- a/trunk/net/ipv6/ip6_fib.c +++ b/trunk/net/ipv6/ip6_fib.c @@ -1169,8 +1169,18 @@ int fib6_del(struct rt6_info *rt, struct nl_info *info) BUG_TRAP(fn->fn_flags&RTN_RTINFO); - if (!(rt->rt6i_flags&RTF_CACHE)) - fib6_prune_clones(fn, rt); + if (!(rt->rt6i_flags&RTF_CACHE)) { + struct fib6_node *pn = fn; +#ifdef CONFIG_IPV6_SUBTREES + /* clones of this route might be in another subtree */ + if (rt->rt6i_src.plen) { + while (!(pn->fn_flags&RTN_ROOT)) + pn = pn->parent; + pn = pn->parent; + } +#endif + fib6_prune_clones(pn, rt); + } /* * Walk the leaf entries looking for ourself