[dpdk-dev] [Suspected-Phishing][PATCH v4 4/4] app/testpmd: match GRE's key and present bits

Ori Kam orika at mellanox.com
Tue Jul 2 11:53:15 CEST 2019



> -----Original Message-----
> From: Xiaoyu Min <jackmin at mellanox.com>
> Sent: Tuesday, July 2, 2019 12:46 PM
> To: Ori Kam <orika at mellanox.com>; Adrien Mazarguil
> <adrien.mazarguil at 6wind.com>; Wenzhuo Lu <wenzhuo.lu at intel.com>;
> Jingjing Wu <jingjing.wu at intel.com>; Bernard Iremonger
> <bernard.iremonger at intel.com>; John McNamara
> <john.mcnamara at intel.com>; Marko Kovacevic <marko.kovacevic at intel.com>
> Cc: dev at dpdk.org
> Subject: [Suspected-Phishing][PATCH v4 4/4] app/testpmd: match GRE's key and
> present bits
> 
> support matching on GRE key and present bits (C,K,S)
> 
> example testpmd command could be:
>   testpmd>flow create 0 ingress group 1 pattern eth / ipv4 /
>           gre crksv is 0x2000 crksv mask 0xb000 /
> 	  gre_key key is 0x12345678 / end
> 	  actions rss queues 1 0 end / mark id 196 / end
> 
> Which will match GRE packet with k present bit set and key value is
> 0x12345678.
> 
> Signed-off-by: Xiaoyu Min <jackmin at mellanox.com>
> ---

Acked-by: Ori Kam <orika at mellanox.com>
Thanks,
Ori Kam

> ** This patch is based on patch [1]
> 
> [1]
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatches.d
> pdk.org%2Fpatch%2F55773%2F&data=02%7C01%7Corika%40mellanox.co
> m%7C1d141143694542013e2a08d6fed23185%7Ca652971c7d2e4d9ba6a4d149
> 256f461b%7C0%7C0%7C636976576061576503&sdata=d3lj4YEdQn96zqvb
> U5VDWvIu40IUFSNAaug51eOSHns%3D&reserved=0
> ---
>  app/test-pmd/cmdline_flow.c                 | 32 +++++++++++++++++++++
>  doc/guides/testpmd_app_ug/testpmd_funcs.rst |  4 +++
>  2 files changed, 36 insertions(+)
> 
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 201bd9de56..8504cc8bc1 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -148,6 +148,9 @@ enum index {
>  	ITEM_MPLS_LABEL,
>  	ITEM_GRE,
>  	ITEM_GRE_PROTO,
> +	ITEM_GRE_CRKSV,
> +	ITEM_GRE_KEY,
> +	ITEM_GRE_KEY_KEY,
>  	ITEM_FUZZY,
>  	ITEM_FUZZY_THRESH,
>  	ITEM_GTP,
> @@ -595,6 +598,7 @@ static const enum index next_item[] = {
>  	ITEM_NVGRE,
>  	ITEM_MPLS,
>  	ITEM_GRE,
> +	ITEM_GRE_KEY,
>  	ITEM_FUZZY,
>  	ITEM_GTP,
>  	ITEM_GTPC,
> @@ -755,6 +759,13 @@ static const enum index item_mpls[] = {
> 
>  static const enum index item_gre[] = {
>  	ITEM_GRE_PROTO,
> +	ITEM_GRE_CRKSV,
> +	ITEM_NEXT,
> +	ZERO,
> +};
> +
> +static const enum index item_gre_key[] = {
> +	ITEM_GRE_KEY_KEY,
>  	ITEM_NEXT,
>  	ZERO,
>  };
> @@ -1898,6 +1909,27 @@ static const struct token token_list[] = {
>  		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
>  					     protocol)),
>  	},
> +	[ITEM_GRE_CRKSV] = {
> +		.name = "crksv",
> +		.help = "GRE's first word (bit0 - bit15)",
> +		.next = NEXT(item_gre, NEXT_ENTRY(UNSIGNED),
> item_param),
> +		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
> +					     c_rsvd0_ver)),
> +	},
> +	[ITEM_GRE_KEY] = {
> +		.name = "gre_key",
> +		.help = "match GRE Key",
> +		.priv = PRIV_ITEM(GRE_KEY,
> +				  sizeof(rte_be32_t)),
> +		.next = NEXT(item_gre_key),
> +		.call = parse_vc,
> +	},
> +	[ITEM_GRE_KEY_KEY] = {
> +		.name = "key",
> +		.help = "GRE key",
> +		.next = NEXT(item_gre_key, NEXT_ENTRY(UNSIGNED),
> item_param),
> +		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
> +	},
>  	[ITEM_FUZZY] = {
>  		.name = "fuzzy",
>  		.help = "fuzzy pattern match, expect faster than default",
> diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> index cb83a3ce8a..fc3ba8a009 100644
> --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> @@ -3804,6 +3804,10 @@ This section lists supported pattern items and their
> attributes, if any.
> 
>    - ``protocol {unsigned}``: protocol type.
> 
> +- ``gre_key``: match GRE optional key field.
> +
> +  - ``key {unsigned}``: key value.
> +
>  - ``fuzzy``: fuzzy pattern match, expect faster than default.
> 
>    - ``thresh {unsigned}``: accuracy threshold.
> --
> 2.21.0



More information about the dev mailing list