aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2011-11-28 05:22:18 +0000
committerDavid S. Miller <davem@davemloft.net>2011-11-28 19:09:07 -0500
commit0744dd00c1b1be99a25b62b1b48df440e82e57e0 (patch)
tree94bff02f61657c4b02709f472dcb56f9dc927a18 /include/net
parentbnx2x: Change value comparison order (diff)
downloadlinux-dev-0744dd00c1b1be99a25b62b1b48df440e82e57e0.tar.xz
linux-dev-0744dd00c1b1be99a25b62b1b48df440e82e57e0.zip
net: introduce skb_flow_dissect()
We use at least two flow dissectors in network stack, with known limitations and code duplication. Introduce skb_flow_dissect() to factorize this, highly inspired from existing dissector from __skb_get_rxhash() Note : We extensively use skb_header_pointer(), this permits us to not touch skb at all. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/flow_keys.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/net/flow_keys.h b/include/net/flow_keys.h
new file mode 100644
index 000000000000..e4cb28526563
--- /dev/null
+++ b/include/net/flow_keys.h
@@ -0,0 +1,15 @@
+#ifndef _NET_FLOW_KEYS_H
+#define _NET_FLOW_KEYS_H
+
+struct flow_keys {
+ __be32 src;
+ __be32 dst;
+ union {
+ __be32 ports;
+ __be16 port16[2];
+ };
+ u8 ip_proto;
+};
+
+extern bool skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow);
+#endif