[v2,03/11] app/testpmd: support IPv4 fragments
Checks
Commit Message
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>
---
app/test-pmd/cmdline_flow.c | 9 +++++++++
1 file changed, 9 insertions(+)
Comments
> -----Original Message-----
> From: Dekel Peled <dekelp@nvidia.com>
> Sent: Friday, October 2, 2020 12:15 AM
> Subject: [PATCH v2 03/11] app/testpmd: support IPv4 fragments
>
> 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>
Thanks,
Ori
@@ -129,6 +129,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,
@@ -873,6 +874,7 @@ struct parse_action_priv {
static const enum index item_ipv4[] = {
ITEM_IPV4_TOS,
+ ITEM_IPV4_FRAGMENT_OFFSET,
ITEM_IPV4_TTL,
ITEM_IPV4_PROTO,
ITEM_IPV4_SRC,
@@ -2097,6 +2099,13 @@ static int comp_set_raw_index(struct context *, const struct token *,
.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",