svn commit: r230937 - projects/multi-fibv6/head/sys/net
Bjoern A. Zeeb
bz at FreeBSD.org
Fri Feb 3 10:17:35 UTC 2012
Author: bz
Date: Fri Feb 3 10:17:34 2012
New Revision: 230937
URL: http://svn.freebsd.org/changeset/base/230937
Log:
Fix FLOWTABLE IPv6 handling in route.c missed in r205066.
While doing so, for consistency with the rtalloc_ign_fib(9) interface
called, remove the "in_" prefix from rtalloc_ign_wrapper() no longer
indicating that it would only handle the INET case.
Sponsored by: Cisco Systems, Inc.
Modified:
projects/multi-fibv6/head/sys/net/flowtable.c
projects/multi-fibv6/head/sys/net/route.c
Modified: projects/multi-fibv6/head/sys/net/flowtable.c
==============================================================================
--- projects/multi-fibv6/head/sys/net/flowtable.c Fri Feb 3 09:33:58 2012 (r230936)
+++ projects/multi-fibv6/head/sys/net/flowtable.c Fri Feb 3 10:17:34 2012 (r230937)
@@ -374,7 +374,7 @@ SYSCTL_VNET_PROC(_net_inet_flowtable, OI
#ifndef RADIX_MPATH
static void
-in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum)
+rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum)
{
rtalloc_ign_fib(ro, 0, fibnum);
@@ -1315,7 +1315,7 @@ flowtable_alloc(char *name, int nentry,
#ifdef RADIX_MPATH
ft->ft_rtalloc = rtalloc_mpath_fib;
#else
- ft->ft_rtalloc = in_rtalloc_ign_wrapper;
+ ft->ft_rtalloc = rtalloc_ign_wrapper;
#endif
if (flags & FL_PCPU) {
ft->ft_lock = flowtable_pcpu_lock;
Modified: projects/multi-fibv6/head/sys/net/route.c
==============================================================================
--- projects/multi-fibv6/head/sys/net/route.c Fri Feb 3 09:33:58 2012 (r230936)
+++ projects/multi-fibv6/head/sys/net/route.c Fri Feb 3 10:17:34 2012 (r230937)
@@ -35,6 +35,7 @@
***********************************************************************/
#include "opt_inet.h"
+#include "opt_inet6.h"
#include "opt_route.h"
#include "opt_mrouting.h"
#include "opt_mpath.h"
@@ -1192,12 +1193,15 @@ rtrequest1_fib(int req, struct rt_addrin
#ifdef FLOWTABLE
rt0 = NULL;
- /* XXX
- * "flow-table" only support IPv4 at the moment.
- * XXX-BZ as of r205066 it would support IPv6.
- */
+ /* "flow-table" only supports IPv6 and IPv4 at the moment. */
+ switch (dst->sa_family) {
+#ifdef INET6
+ case AF_INET6:
+#endif
#ifdef INET
- if (dst->sa_family == AF_INET) {
+ case AF_INET:
+#endif
+#if defined(INET6) || defined(INET)
rn = rnh->rnh_matchaddr(dst, rnh);
if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) {
struct sockaddr *mask;
@@ -1236,9 +1240,9 @@ rtrequest1_fib(int req, struct rt_addrin
}
}
}
+#endif/* INET6 || INET */
}
-#endif
-#endif
+#endif /* FLOWTABLE */
/* XXX mtu manipulation will be done in rnh_addaddr -- itojun */
rn = rnh->rnh_addaddr(ndst, netmask, rnh, rt->rt_nodes);
@@ -1259,9 +1263,18 @@ rtrequest1_fib(int req, struct rt_addrin
}
#ifdef FLOWTABLE
else if (rt0 != NULL) {
+ switch (dst->sa_family) {
+#ifdef INET6
+ case AF_INET6:
+ flowtable_route_flush(V_ip6_ft, rt0);
+ break;
+#endif
#ifdef INET
- flowtable_route_flush(V_ip_ft, rt0);
+ case AF_INET:
+ flowtable_route_flush(V_ip_ft, rt0);
+ break;
#endif
+ }
RTFREE(rt0);
}
#endif
More information about the svn-src-projects
mailing list