summaryrefslogtreecommitdiffstats
path: root/sys/net/route.c
diff options
context:
space:
mode:
authormelifaro <melifaro@FreeBSD.org>2014-05-08 20:41:39 +0000
committermelifaro <melifaro@FreeBSD.org>2014-05-08 20:41:39 +0000
commit5ca6003c5c59fcbccde099c4a5acae82537f80d9 (patch)
treebb8f2e278e828d67030223454dae78d3f19d19dc /sys/net/route.c
parentd42ec49fe7376d5d77807fe648fe0af085a8b7ac (diff)
downloadFreeBSD-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.c10
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));
OpenPOWER on IntegriCloud