app/testpmd: support IPv4 fragments
authorDekel Peled <dekelp@nvidia.com>
Wed, 14 Oct 2020 16:35:49 +0000 (19:35 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 16 Oct 2020 17:48:18 +0000 (19:48 +0200)
This patch updates testpmd CLI to support fragment_offset field of
IPv4 header item.

To match on non-fragmented IPv4 packets, need to use pattern:
... ipv4 fragment_offset spec 0 fragment_offset mask 0x3fff ...
To match on fragmented IPv4 packets, need to use pattern:
... ipv4 fragment_offset spec 1 fragment_offset last 0x3fff
fragment_offset mask 0x3fff ...
(Use the full available range 1 to 0x3fff to include all possible
values.)
To match on any IPv4 packets, fragmented and non-fragmented,
the fragment_offset field should not be specified for match.

Signed-off-by: Dekel Peled <dekelp@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
app/test-pmd/cmdline_flow.c

index cf40744..25e28fd 100644 (file)
@@ -149,6 +149,7 @@ enum index {
        ITEM_VLAN_INNER_TYPE,
        ITEM_IPV4,
        ITEM_IPV4_TOS,
+       ITEM_IPV4_FRAGMENT_OFFSET,
        ITEM_IPV4_TTL,
        ITEM_IPV4_PROTO,
        ITEM_IPV4_SRC,
@@ -946,6 +947,7 @@ static const enum index item_vlan[] = {
 
 static const enum index item_ipv4[] = {
        ITEM_IPV4_TOS,
+       ITEM_IPV4_FRAGMENT_OFFSET,
        ITEM_IPV4_TTL,
        ITEM_IPV4_PROTO,
        ITEM_IPV4_SRC,
@@ -2257,6 +2259,13 @@ static const struct token token_list[] = {
                .args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
                                             hdr.type_of_service)),
        },
+       [ITEM_IPV4_FRAGMENT_OFFSET] = {
+               .name = "fragment_offset",
+               .help = "fragmentation flags and fragment offset",
+               .next = NEXT(item_ipv4, NEXT_ENTRY(UNSIGNED), item_param),
+               .args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
+                                            hdr.fragment_offset)),
+       },
        [ITEM_IPV4_TTL] = {
                .name = "ttl",
                .help = "time to live",