[dpdk-dev] [RFC v2 1/1] app/testpmd: distinguish ICMP identifier fields in packet

Ferruh Yigit ferruh.yigit at intel.com
Tue Sep 22 17:38:13 CEST 2020


On 9/9/2020 4:34 AM, Li Zhang wrote:
> From: lizh <lizh at nvidia.com>
> 
> Ability to distinguish ICMP identifier fields in packets.
> Dstinguish ICMP sequence number field too.
> Already supports ICMP code and type fields in current version.
> Existing fields in ICMP header contain the required information.
> ICMP header already is supported and no code change in RTE FLOW.
> Extend testpmd CLI to include the fields of ident and sequence number.
> One example:
> flow create 0 ingress pattern eth / ipv4 /
>   icmp code is 1 ident is 5 seq is 6 /
>   end actions count / queue index 0 / end
> The ICMP packet with code 1, identifier 5 and
> sequence number 6 will be matched.
> It will implement action counter and forward to queue 0.
> 

Overall looks good. @Ori, any objection?

@Li, is there any PMD implementation planned to use these icmp fields?

> Signed-off-by: Li Zhang <lizh at nvidia.com>
> ---
>   app/test-pmd/cmdline_flow.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 6263d307ed..6e04d538ea 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -143,6 +143,8 @@ enum index {
>   	ITEM_ICMP,
>   	ITEM_ICMP_TYPE,
>   	ITEM_ICMP_CODE,
> +	ITEM_ICMP_IDENT,
> +	ITEM_ICMP_SEQ,
>   	ITEM_UDP,
>   	ITEM_UDP_SRC,
>   	ITEM_UDP_DST,
> @@ -893,6 +895,8 @@ static const enum index item_ipv6[] = {
>   static const enum index item_icmp[] = {
>   	ITEM_ICMP_TYPE,
>   	ITEM_ICMP_CODE,
> +	ITEM_ICMP_IDENT,
> +	ITEM_ICMP_SEQ,
>   	ITEM_NEXT,
>   	ZERO,
>   };
> @@ -2193,6 +2197,20 @@ static const struct token token_list[] = {
>   		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
>   					     hdr.icmp_code)),
>   	},
> +	[ITEM_ICMP_IDENT] = {
> +		.name = "ident",
> +		.help = "ICMP packet identifier",
> +		.next = NEXT(item_icmp, NEXT_ENTRY(UNSIGNED), item_param),
> +		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
> +					     hdr.icmp_ident)),
> +	},
> +	[ITEM_ICMP_SEQ] = {
> +		.name = "seq",
> +		.help = "ICMP packet sequence number",
> +		.next = NEXT(item_icmp, NEXT_ENTRY(UNSIGNED), item_param),
> +		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
> +					     hdr.icmp_seq_nb)),
> +	},
>   	[ITEM_UDP] = {
>   		.name = "udp",
>   		.help = "match UDP header",
> 



More information about the dev mailing list