ethdev: new ntuple filter API
This patch defines ntuple filter type RTE_ETH_FILTER_NTUPLE and its structure rte_eth_ntuple_filter. It also corrects the typo TCP_UGR_FLAG to TCP_URG_FLAG Signed-off-by: Jingjing Wu <jingjing.wu@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
parent
222928b3dd
commit
5e4944a1d6
@ -55,6 +55,7 @@ enum rte_filter_type {
|
||||
RTE_ETH_FILTER_ETHERTYPE,
|
||||
RTE_ETH_FILTER_FLEXIBLE,
|
||||
RTE_ETH_FILTER_SYN,
|
||||
RTE_ETH_FILTER_NTUPLE,
|
||||
RTE_ETH_FILTER_TUNNEL,
|
||||
RTE_ETH_FILTER_FDIR,
|
||||
RTE_ETH_FILTER_HASH,
|
||||
@ -148,6 +149,55 @@ struct rte_eth_syn_filter {
|
||||
uint16_t queue; /**< Queue assigned to when match */
|
||||
};
|
||||
|
||||
/**
|
||||
* Define all structures for ntuple Filter type.
|
||||
*/
|
||||
|
||||
#define RTE_NTUPLE_FLAGS_DST_IP 0x0001 /**< If set, dst_ip is part of ntuple */
|
||||
#define RTE_NTUPLE_FLAGS_SRC_IP 0x0002 /**< If set, src_ip is part of ntuple */
|
||||
#define RTE_NTUPLE_FLAGS_DST_PORT 0x0004 /**< If set, dst_port is part of ntuple */
|
||||
#define RTE_NTUPLE_FLAGS_SRC_PORT 0x0008 /**< If set, src_port is part of ntuple */
|
||||
#define RTE_NTUPLE_FLAGS_PROTO 0x0010 /**< If set, protocol is part of ntuple */
|
||||
#define RTE_NTUPLE_FLAGS_TCP_FLAG 0x0020 /**< If set, tcp flag is involved */
|
||||
|
||||
#define RTE_5TUPLE_FLAGS ( \
|
||||
RTE_NTUPLE_FLAGS_DST_IP | \
|
||||
RTE_NTUPLE_FLAGS_SRC_IP | \
|
||||
RTE_NTUPLE_FLAGS_DST_PORT | \
|
||||
RTE_NTUPLE_FLAGS_SRC_PORT | \
|
||||
RTE_NTUPLE_FLAGS_PROTO)
|
||||
|
||||
#define RTE_2TUPLE_FLAGS ( \
|
||||
RTE_NTUPLE_FLAGS_DST_PORT | \
|
||||
RTE_NTUPLE_FLAGS_PROTO)
|
||||
|
||||
|
||||
/**
|
||||
* A structure used to define the ntuple filter entry
|
||||
* to support RTE_ETH_FILTER_NTUPLE with RTE_ETH_FILTER_ADD,
|
||||
* RTE_ETH_FILTER_DELETE and RTE_ETH_FILTER_GET operations.
|
||||
*/
|
||||
struct rte_eth_ntuple_filter {
|
||||
uint16_t flags; /**< Flags from RTE_NTUPLE_FLAGS_* */
|
||||
uint32_t dst_ip; /**< Destination IP address in big endian. */
|
||||
uint32_t dst_ip_mask; /**< Mask of destination IP address. */
|
||||
uint32_t src_ip; /**< Source IP address in big endian. */
|
||||
uint32_t src_ip_mask; /**< Mask of destination IP address. */
|
||||
uint16_t dst_port; /**< Destination port in big endian. */
|
||||
uint16_t dst_port_mask; /**< Mask of destination port. */
|
||||
uint16_t src_port; /**< Source Port in big endian. */
|
||||
uint16_t src_port_mask; /**< Mask of source port. */
|
||||
uint8_t proto; /**< L4 protocol. */
|
||||
uint8_t proto_mask; /**< Mask of L4 protocol. */
|
||||
/** tcp_flags only meaningful when the proto is TCP.
|
||||
The packet matched above ntuple fields and contain
|
||||
any set bit in tcp_flags will hit this filter. */
|
||||
uint8_t tcp_flags;
|
||||
uint16_t priority; /**< seven levels (001b-111b), 111b is highest,
|
||||
used when more than one filter matches. */
|
||||
uint16_t queue; /**< Queue assigned to when match*/
|
||||
};
|
||||
|
||||
/**
|
||||
* Tunneled type.
|
||||
*/
|
||||
|
@ -966,6 +966,8 @@ struct rte_eth_dev_callback;
|
||||
/** @internal Structure to keep track of registered callbacks */
|
||||
TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback);
|
||||
|
||||
|
||||
#define TCP_URG_FLAG 0x20
|
||||
#define TCP_UGR_FLAG 0x20
|
||||
#define TCP_ACK_FLAG 0x10
|
||||
#define TCP_PSH_FLAG 0x08
|
||||
|
Loading…
Reference in New Issue
Block a user