diff options
author | melifaro <melifaro@FreeBSD.org> | 2014-05-08 20:41:39 +0000 |
---|---|---|
committer | melifaro <melifaro@FreeBSD.org> | 2014-05-08 20:41:39 +0000 |
commit | 5ca6003c5c59fcbccde099c4a5acae82537f80d9 (patch) | |
tree | bb8f2e278e828d67030223454dae78d3f19d19dc /sys/net/route.c | |
parent | d42ec49fe7376d5d77807fe648fe0af085a8b7ac (diff) | |
download | FreeBSD-src-5ca6003c5c59fcbccde099c4a5acae82537f80d9.zip FreeBSD-src-5ca6003c5c59fcbccde099c4a5acae82537f80d9.tar.gz |
Merge r260379, r260460.
r260379:
Partially fix IPv4 interface routes deletion in RADIX_MPATH.
Noticed by: Nikolay Denev <ndenev at gmail.com>
r260460:
Constanly use RT_ALL_FIBS everywhere instead of -1.
Diffstat (limited to 'sys/net/route.c')
-rw-r--r-- | sys/net/route.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/net/route.c b/sys/net/route.c index 015eccb..1db844d 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -1532,7 +1532,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum) fibnum = RT_DEFAULT_FIB; break; } - if (fibnum == -1) { + if (fibnum == RT_ALL_FIBS) { if (rt_add_addr_allfibs == 0 && cmd == (int)RTM_ADD) { startfib = endfib = curthread->td_proc->p_fibnum; } else { @@ -1581,10 +1581,10 @@ rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum) /* this table doesn't exist but others might */ continue; RADIX_NODE_HEAD_RLOCK(rnh); + rn = rnh->rnh_lookup(dst, netmask, rnh); #ifdef RADIX_MPATH if (rn_mpath_capable(rnh)) { - rn = rnh->rnh_matchaddr(dst, rnh); if (rn == NULL) error = ESRCH; else { @@ -1598,13 +1598,11 @@ rtinit1(struct ifaddr *ifa, int cmd, int flags, int fibnum) */ rt = rt_mpath_matchgate(rt, ifa->ifa_addr); - if (!rt) + if (rt == NULL) error = ESRCH; } } - else #endif - rn = rnh->rnh_lookup(dst, netmask, rnh); error = (rn == NULL || (rn->rn_flags & RNF_ROOT) || RNTORT(rn)->rt_ifa != ifa); @@ -1753,7 +1751,7 @@ rtinit(struct ifaddr *ifa, int cmd, int flags) case AF_INET6: case AF_INET: /* We do support multiple FIBs. */ - fib = -1; + fib = RT_ALL_FIBS; break; } return (rtinit1(ifa, cmd, flags, fib)); |