Yes, There is PMD code change to support it. https://patchwork.dpdk.org/patch/78488/
-----Original Message----- From: dev <dev-boun...@dpdk.org> On Behalf Of Ferruh Yigit Sent: Tuesday, September 22, 2020 11:38 PM To: Li Zhang <l...@nvidia.com>; Dekel Peled <dek...@nvidia.com>; Ori Kam <or...@nvidia.com>; Slava Ovsiienko <viachesl...@nvidia.com>; Matan Azrad <ma...@nvidia.com> Cc: dev@dpdk.org; NBU-Contact-Thomas Monjalon <tho...@monjalon.net>; Raslan Darawsheh <rasl...@nvidia.com> Subject: Re: [dpdk-dev] [RFC v2 1/1] app/testpmd: distinguish ICMP identifier fields in packet External email: Use caution opening links or attachments On 9/9/2020 4:34 AM, Li Zhang wrote: > From: lizh <l...@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 <l...@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", >