app/testpmd: match GRE 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 / gre_key value 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@mellanox.com> Acked-by: Ori Kam <orika@mellanox.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
parent
3374db1857
commit
c6ef1454ae
@ -148,6 +148,10 @@ enum index {
|
||||
ITEM_MPLS_LABEL,
|
||||
ITEM_GRE,
|
||||
ITEM_GRE_PROTO,
|
||||
ITEM_GRE_C_RSVD0_VER,
|
||||
ITEM_GRE_C_BIT,
|
||||
ITEM_GRE_K_BIT,
|
||||
ITEM_GRE_S_BIT,
|
||||
ITEM_FUZZY,
|
||||
ITEM_FUZZY_THRESH,
|
||||
ITEM_GTP,
|
||||
@ -181,6 +185,8 @@ enum index {
|
||||
ITEM_ICMP6_ND_OPT_TLA_ETH_TLA,
|
||||
ITEM_META,
|
||||
ITEM_META_DATA,
|
||||
ITEM_GRE_KEY,
|
||||
ITEM_GRE_KEY_VALUE,
|
||||
|
||||
/* Validate/create actions. */
|
||||
ACTIONS,
|
||||
@ -626,6 +632,7 @@ static const enum index next_item[] = {
|
||||
ITEM_ICMP6_ND_OPT_SLA_ETH,
|
||||
ITEM_ICMP6_ND_OPT_TLA_ETH,
|
||||
ITEM_META,
|
||||
ITEM_GRE_KEY,
|
||||
ZERO,
|
||||
};
|
||||
|
||||
@ -771,6 +778,16 @@ static const enum index item_mpls[] = {
|
||||
|
||||
static const enum index item_gre[] = {
|
||||
ITEM_GRE_PROTO,
|
||||
ITEM_GRE_C_RSVD0_VER,
|
||||
ITEM_GRE_C_BIT,
|
||||
ITEM_GRE_K_BIT,
|
||||
ITEM_GRE_S_BIT,
|
||||
ITEM_NEXT,
|
||||
ZERO,
|
||||
};
|
||||
|
||||
static const enum index item_gre_key[] = {
|
||||
ITEM_GRE_KEY_VALUE,
|
||||
ITEM_NEXT,
|
||||
ZERO,
|
||||
};
|
||||
@ -1942,6 +1959,40 @@ static const struct token token_list[] = {
|
||||
.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
|
||||
protocol)),
|
||||
},
|
||||
[ITEM_GRE_C_RSVD0_VER] = {
|
||||
.name = "c_rsvd0_ver",
|
||||
.help =
|
||||
"checksum (1b), undefined (1b), key bit (1b),"
|
||||
" sequence number (1b), reserved 0 (9b),"
|
||||
" version (3b)",
|
||||
.next = NEXT(item_gre, NEXT_ENTRY(UNSIGNED), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
|
||||
c_rsvd0_ver)),
|
||||
},
|
||||
[ITEM_GRE_C_BIT] = {
|
||||
.name = "c_bit",
|
||||
.help = "checksum bit (C)",
|
||||
.next = NEXT(item_gre, NEXT_ENTRY(BOOLEAN), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,
|
||||
c_rsvd0_ver,
|
||||
"\x80\x00\x00\x00")),
|
||||
},
|
||||
[ITEM_GRE_S_BIT] = {
|
||||
.name = "s_bit",
|
||||
.help = "sequence number bit (S)",
|
||||
.next = NEXT(item_gre, NEXT_ENTRY(BOOLEAN), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,
|
||||
c_rsvd0_ver,
|
||||
"\x10\x00\x00\x00")),
|
||||
},
|
||||
[ITEM_GRE_K_BIT] = {
|
||||
.name = "k_bit",
|
||||
.help = "key bit (K)",
|
||||
.next = NEXT(item_gre, NEXT_ENTRY(BOOLEAN), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,
|
||||
c_rsvd0_ver,
|
||||
"\x20\x00\x00\x00")),
|
||||
},
|
||||
[ITEM_FUZZY] = {
|
||||
.name = "fuzzy",
|
||||
.help = "fuzzy pattern match, expect faster than default",
|
||||
@ -2194,6 +2245,19 @@ static const struct token token_list[] = {
|
||||
.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_meta,
|
||||
data, "\xff\xff\xff\xff")),
|
||||
},
|
||||
[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_VALUE] = {
|
||||
.name = "value",
|
||||
.help = "key value",
|
||||
.next = NEXT(item_gre_key, NEXT_ENTRY(UNSIGNED), item_param),
|
||||
.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
|
||||
},
|
||||
|
||||
/* Validate/create actions. */
|
||||
[ACTIONS] = {
|
||||
|
@ -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.
|
||||
|
||||
- ``value {unsigned}``: key value.
|
||||
|
||||
- ``fuzzy``: fuzzy pattern match, expect faster than default.
|
||||
|
||||
- ``thresh {unsigned}``: accuracy threshold.
|
||||
|
Loading…
Reference in New Issue
Block a user