summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
authormelifaro <melifaro@FreeBSD.org>2016-01-11 08:45:28 +0000
committermelifaro <melifaro@FreeBSD.org>2016-01-11 08:45:28 +0000
commit7cc47d54cd4ddb0ff54ff3313eaa330dbd3fc5cb (patch)
treee477df88843816bf8af910b6e7fdade5396d26ad /sys/netinet6
parent2d1014754e397b39dc0c8c0e2c63571bdd7faa2b (diff)
downloadFreeBSD-src-7cc47d54cd4ddb0ff54ff3313eaa330dbd3fc5cb.zip
FreeBSD-src-7cc47d54cd4ddb0ff54ff3313eaa330dbd3fc5cb.tar.gz
Bring RADIX_MPATH support to new routing KPI to ease migration.
Move actual rte selection process from rtalloc_mpath_fib() to the rt_path_selectrte() function. Add public rt_mpath_select() to use in fibX_lookup_ functions.
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6_fib.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/netinet6/in6_fib.c b/sys/netinet6/in6_fib.c
index eba5b7c..96acfbb 100644
--- a/sys/netinet6/in6_fib.c
+++ b/sys/netinet6/in6_fib.c
@@ -241,6 +241,13 @@ fib6_lookup_nh_ext(uint32_t fibnum, const struct in6_addr *dst,uint32_t scopeid,
rn = rh->rnh_matchaddr((void *)&sin6, rh);
if (rn != NULL && ((rn->rn_flags & RNF_ROOT) == 0)) {
rte = RNTORT(rn);
+#ifdef RADIX_MPATH
+ rte = rt_mpath_select(rte, flowid);
+ if (rte == NULL) {
+ RADIX_NODE_HEAD_RUNLOCK(rh);
+ return (ENOENT);
+ }
+#endif
/* Ensure route & ifp is UP */
if (RT_LINK_IS_UP(rte->rt_ifp)) {
fib6_rte_to_nh_extended(rte, &sin6.sin6_addr, flags,
OpenPOWER on IntegriCloud