ethdev: add MPLS and GRE flow API items
This patch adds MPLS and GRE items to generic rte flow. Signed-off-by: Beilei Xing <beilei.xing@intel.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
parent
0c16506e59
commit
7cd048321d
@ -187,8 +187,8 @@ Pattern item
|
||||
Pattern items fall in two categories:
|
||||
|
||||
- Matching protocol headers and packet data (ANY, RAW, ETH, VLAN, IPV4,
|
||||
IPV6, ICMP, UDP, TCP, SCTP, VXLAN and so on), usually associated with a
|
||||
specification structure.
|
||||
IPV6, ICMP, UDP, TCP, SCTP, VXLAN, MPLS, GRE and so on), usually
|
||||
associated with a specification structure.
|
||||
|
||||
- Matching meta-data or affecting pattern processing (END, VOID, INVERT, PF,
|
||||
VF, PORT and so on), often without a specification structure.
|
||||
@ -863,6 +863,23 @@ Matches a VXLAN header (RFC 7348).
|
||||
- ``rsvd1``: reserved, normally 0x00.
|
||||
- Default ``mask`` matches VNI only.
|
||||
|
||||
Item: ``MPLS``
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Matches a MPLS header.
|
||||
|
||||
- ``label_tc_s_ttl``: label, TC, Bottom of Stack and TTL.
|
||||
- Default ``mask`` matches label only.
|
||||
|
||||
Item: ``GRE``
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Matches a GRE header.
|
||||
|
||||
- ``c_rsvd0_ver``: checksum, reserved 0 and version.
|
||||
- ``protocol``: protocol type.
|
||||
- Default ``mask`` matches protocol only.
|
||||
|
||||
Actions
|
||||
~~~~~~~
|
||||
|
||||
|
@ -282,6 +282,20 @@ enum rte_flow_item_type {
|
||||
* See struct rte_flow_item_nvgre.
|
||||
*/
|
||||
RTE_FLOW_ITEM_TYPE_NVGRE,
|
||||
|
||||
/**
|
||||
* Matches a MPLS header.
|
||||
*
|
||||
* See struct rte_flow_item_mpls.
|
||||
*/
|
||||
RTE_FLOW_ITEM_TYPE_MPLS,
|
||||
|
||||
/**
|
||||
* Matches a GRE header.
|
||||
*
|
||||
* See struct rte_flow_item_gre.
|
||||
*/
|
||||
RTE_FLOW_ITEM_TYPE_GRE,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -598,6 +612,43 @@ struct rte_flow_item_nvgre {
|
||||
uint8_t flow_id; /**< Flow ID. */
|
||||
};
|
||||
|
||||
/**
|
||||
* RTE_FLOW_ITEM_TYPE_MPLS.
|
||||
*
|
||||
* Matches a MPLS header.
|
||||
*/
|
||||
struct rte_flow_item_mpls {
|
||||
/**
|
||||
* Label (20b), TC (3b), Bottom of Stack (1b).
|
||||
*/
|
||||
uint8_t label_tc_s[3];
|
||||
uint8_t ttl; /** Time-to-Live. */
|
||||
};
|
||||
|
||||
/** Default mask for RTE_FLOW_ITEM_TYPE_MPLS. */
|
||||
static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {
|
||||
.label_tc_s = "\xff\xff\xf0",
|
||||
};
|
||||
|
||||
/**
|
||||
* RTE_FLOW_ITEM_TYPE_GRE.
|
||||
*
|
||||
* Matches a GRE header.
|
||||
*/
|
||||
struct rte_flow_item_gre {
|
||||
/**
|
||||
* Checksum (1b), reserved 0 (12b), version (3b).
|
||||
* Refer to RFC 2784.
|
||||
*/
|
||||
uint16_t c_rsvd0_ver;
|
||||
uint16_t protocol; /**< Protocol type. */
|
||||
};
|
||||
|
||||
/** Default mask for RTE_FLOW_ITEM_TYPE_GRE. */
|
||||
static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
|
||||
.protocol = 0xffff,
|
||||
};
|
||||
|
||||
/**
|
||||
* Matching pattern item definition.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user