net/tap: add basic flow API patterns and actions
authorPascal Mazon <pascal.mazon@6wind.com>
Thu, 23 Mar 2017 08:33:57 +0000 (09:33 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 4 Apr 2017 16:59:46 +0000 (18:59 +0200)
commitde96fe68ae95990f5ce2cd4c8d9547ab62d2a810
tree72e017a908a4537ad525598458da7914420fedbc
parent7c25284e30c2984bea55760897239e5270c0c06c
net/tap: add basic flow API patterns and actions

Supported flow rules are now mapped to TC rules on the tap netdevice.
The netlink message used for creating the TC rule is stored in struct
rte_flow. That way, by simply changing a metadata in it, we can require
for the rule deletion without further parsing.

Supported items:
- eth: src and dst (with variable masks), and eth_type (0xffff mask).
- vlan: vid, pcp, tpid, but not eid.
- ipv4/6: src and dst (with variable masks), and ip_proto (0xffff mask).
- udp/tcp: src and dst port (0xffff) mask.

Supported actions:
- DROP
- QUEUE
- PASSTHRU

It is generally not possible to provide a "last" item. However, if the
"last" item, once masked, is identical to the masked spec, then it is
supported.

Only IPv4/6 and MAC addresses can use a variable mask. All other
items need a full mask (exact match).

Support for VLAN requires kernel headers >= 4.9, checked using
auto-config.sh.

Signed-off-by: Pascal Mazon <pascal.mazon@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
Acked-by: Keith Wiles <keith.wiles@intel.com>
doc/guides/nics/tap.rst
drivers/net/tap/Makefile
drivers/net/tap/rte_eth_tap.c
drivers/net/tap/rte_eth_tap.h
drivers/net/tap/tap_flow.c
drivers/net/tap/tap_flow.h