path: root/include/net/flow.h
diff options
authorTom Herbert <tom@herbertland.com>2015-09-01 09:24:25 -0700
committerDavid S. Miller <davem@davemloft.net>2015-09-01 15:06:22 -0700
commitc6cc1ca7f4d70cbb3ea3a5ca163c5dabaf155cdb (patch)
treeba007b3db243d74a4dfc2d7dd9d48427b9a19419 /include/net/flow.h
parentskbuff: Make __skb_set_sw_hash a general function (diff)
flowi: Abstract out functions to get flow hash based on flowi
Create __get_hash_from_flowi6 and __get_hash_from_flowi4 to get the flow keys and hash based on flowi structures. These are called by __skb_get_hash_flowi6 and __skb_get_hash_flowi4. Also, created get_hash_from_flowi6 and get_hash_from_flowi4 which can be called when just the hash value for a flowi is needed. Signed-off-by: Tom Herbert <tom@herbertland.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/flow.h')
1 files changed, 19 insertions, 0 deletions
diff --git a/include/net/flow.h b/include/net/flow.h
index 9e0297c4c11d..dafe97c3c048 100644
--- a/include/net/flow.h
+++ b/include/net/flow.h
@@ -10,6 +10,7 @@
#include <linux/socket.h>
#include <linux/in6.h>
#include <linux/atomic.h>
+#include <net/flow_dissector.h>
* ifindex generation is per-net namespace, and loopback is
@@ -243,4 +244,22 @@ void flow_cache_flush(struct net *net);
void flow_cache_flush_deferred(struct net *net);
extern atomic_t flow_cache_genid;
+__u32 __get_hash_from_flowi6(struct flowi6 *fl6, struct flow_keys *keys);
+static inline __u32 get_hash_from_flowi6(struct flowi6 *fl6)
+ struct flow_keys keys;
+ return __get_hash_from_flowi6(fl6, &keys);
+__u32 __get_hash_from_flowi4(struct flowi4 *fl4, struct flow_keys *keys);
+static inline __u32 get_hash_from_flowi4(struct flowi4 *fl4)
+ struct flow_keys keys;
+ return __get_hash_from_flowi4(fl4, &keys);