diff options
author | glebius <glebius@FreeBSD.org> | 2014-02-17 11:50:56 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2014-02-17 11:50:56 +0000 |
commit | f62415c4677178be00f736c9eb6c9fc271121739 (patch) | |
tree | b63b57e43a7903a2401548fb2721cb98f2bd2dcd /sys/net/flowtable.h | |
parent | 3b760d926d3b01cc21a48d4cfb5633c6d4397609 (diff) | |
download | FreeBSD-src-f62415c4677178be00f736c9eb6c9fc271121739.zip FreeBSD-src-f62415c4677178be00f736c9eb6c9fc271121739.tar.gz |
o Remove at compile time the HASH_ALL code, that was never
tested and is unfinished. However, I've tested my version,
it works okay. As before it is unfinished: timeout aren't
driven by TCP session state. To enable the HASH_ALL mode,
one needs in kernel config:
options FLOWTABLE_HASH_ALL
o Reduce the alignment on flentry to 64 bytes. Without
the FLOWTABLE_HASH_ALL option, twice less memory would
be consumed by flows.
o API to ip_output()/ip6_output() got even more thin: 1 liner.
o Remove unused unions. Simply use fle->f_key[].
o Merge all IPv4 code into flowtable_lookup_ipv4(), and do same
flowtable_lookup_ipv6(). Stop copying data to on stack
sockaddr structures, simply use key[] on stack.
o Move code from flowtable_lookup_common() that actually works
on insertion into flowtable_insert().
Sponsored by: Netflix
Sponsored by: Nginx, Inc.
Diffstat (limited to 'sys/net/flowtable.h')
-rw-r--r-- | sys/net/flowtable.h | 28 |
1 files changed, 3 insertions, 25 deletions
diff --git a/sys/net/flowtable.h b/sys/net/flowtable.h index de35287..504d28f 100644 --- a/sys/net/flowtable.h +++ b/sys/net/flowtable.h @@ -45,34 +45,12 @@ struct flowtable_stat { #ifdef _KERNEL -#define FL_HASH_ALL (1<<0) /* hash 4-tuple + protocol */ -#define FL_IPV6 (1<<9) - -#define FL_TCP (1<<11) -#define FL_SCTP (1<<12) -#define FL_UDP (1<<13) -#define FL_DEBUG (1<<14) -#define FL_DEBUG_ALL (1<<15) - -struct flowtable; -struct flentry; -struct route; -struct route_in6; - /* - * Given a flow table, look up the L3 and L2 information and - * return it in the route. - * + * Given a flow table, look up the L3 and L2 information + * and return it in the route. */ -struct flentry *flowtable_lookup(sa_family_t, struct mbuf *); +int flowtable_lookup(sa_family_t, struct mbuf *, struct route *); void flowtable_route_flush(sa_family_t, struct rtentry *); -#ifdef INET -void flow_to_route(struct flentry *fl, struct route *ro); -#endif -#ifdef INET6 -void flow_to_route_in6(struct flentry *fl, struct route_in6 *ro); -#endif - #endif /* _KERNEL */ #endif /* !_NET_FLOWTABLE_H_ */ |