diff options
author | Govindarajulu Varadarajan <_govind@gmx.com> | 2014-06-23 16:07:58 +0530 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-06-23 14:32:19 -0700 |
commit | e0f31d8498676fda36289603a054d0d490aa2679 (patch) | |
tree | 372fb95e9ec90a83794bf5bb3747f80664bb8e55 /include/net/flow_keys.h | |
parent | eef929622b0ce86fcdaf6bd9ab6d7502470728d5 (diff) | |
download | linux-e0f31d8498676fda36289603a054d0d490aa2679.tar.gz linux-e0f31d8498676fda36289603a054d0d490aa2679.tar.bz2 linux-e0f31d8498676fda36289603a054d0d490aa2679.zip |
flow_keys: Record IP layer protocol in skb_flow_dissect()
skb_flow_dissect() dissects only transport header type in ip_proto. It dose not
give any information about IPv4 or IPv6.
This patch adds new member, n_proto, to struct flow_keys. Which records the
IP layer type. i.e IPv4 or IPv6.
This can be used in netdev->ndo_rx_flow_steer driver function to dissect flow.
Adding new member to flow_keys increases the struct size by around 4 bytes.
This causes BUILD_BUG_ON(sizeof(qcb->data) < sz); to fail in
qdisc_cb_private_validate()
So increase data size by 4
Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/flow_keys.h')
-rw-r--r-- | include/net/flow_keys.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/net/flow_keys.h b/include/net/flow_keys.h index 7e64bd8bbda9..fbefdca5e283 100644 --- a/include/net/flow_keys.h +++ b/include/net/flow_keys.h @@ -1,6 +1,19 @@ #ifndef _NET_FLOW_KEYS_H #define _NET_FLOW_KEYS_H +/* struct flow_keys: + * @src: source ip address in case of IPv4 + * For IPv6 it contains 32bit hash of src address + * @dst: destination ip address in case of IPv4 + * For IPv6 it contains 32bit hash of dst address + * @ports: port numbers of Transport header + * port16[0]: src port number + * port16[1]: dst port number + * @thoff: Transport header offset + * @n_proto: Network header protocol (eg. IPv4/IPv6) + * @ip_proto: Transport header protocol (eg. TCP/UDP) + * All the members, except thoff, are in network byte order. + */ struct flow_keys { /* (src,dst) must be grouped, in the same way than in IP header */ __be32 src; @@ -10,6 +23,7 @@ struct flow_keys { __be16 port16[2]; }; u16 thoff; + u16 n_proto; u8 ip_proto; }; |