Add new rte_flow_item_gre_key in order to match the optional key field. Signed-off-by: Xiaoyu Min <jack...@mellanox.com> --- doc/guides/prog_guide/rte_flow.rst | 8 ++++++++ lib/librte_ethdev/rte_flow.c | 1 + lib/librte_ethdev/rte_flow.h | 7 +++++++ 3 files changed, 16 insertions(+)
diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index a34d012e55..f4b7baa3c3 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -980,6 +980,14 @@ Matches a GRE header. - ``protocol``: protocol type. - Default ``mask`` matches protocol only. +Item: ``GRE_KEY`` +^^^^^^^^^^^^^^^^^ + +Matches a GRE key field. +This should be preceded by item ``GRE`` + +- Value to be matched is a big-endian 32 bit integer + Item: ``FUZZY`` ^^^^^^^^^^^^^^^ diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index 3277be1edb..f3e56d0bbe 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -55,6 +55,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = { MK_FLOW_ITEM(NVGRE, sizeof(struct rte_flow_item_nvgre)), MK_FLOW_ITEM(MPLS, sizeof(struct rte_flow_item_mpls)), MK_FLOW_ITEM(GRE, sizeof(struct rte_flow_item_gre)), + MK_FLOW_ITEM(GRE_KEY, sizeof(rte_be32_t)), MK_FLOW_ITEM(FUZZY, sizeof(struct rte_flow_item_fuzzy)), MK_FLOW_ITEM(GTP, sizeof(struct rte_flow_item_gtp)), MK_FLOW_ITEM(GTPC, sizeof(struct rte_flow_item_gtp)), diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index f3a8fb103f..5d3702a44c 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -289,6 +289,13 @@ enum rte_flow_item_type { */ RTE_FLOW_ITEM_TYPE_GRE, + /** + * Matches a GRE optional key field. + * + * The value should a big-endian 32bit integer. + */ + RTE_FLOW_ITEM_TYPE_GRE_KEY, + /** * [META] * -- 2.21.0