app/testpmd: add MPLS and GRE fields to flow command
This patch exposes the following item fields through the flow command: - MPLS label - GRE protocol Signed-off-by: Beilei Xing <beilei.xing@intel.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
parent
7cd048321d
commit
1315219a22
@ -159,6 +159,10 @@ enum index {
|
||||
ITEM_SCTP_CKSUM,
|
||||
ITEM_VXLAN,
|
||||
ITEM_VXLAN_VNI,
|
||||
ITEM_MPLS,
|
||||
ITEM_MPLS_LABEL,
|
||||
ITEM_GRE,
|
||||
ITEM_GRE_PROTO,
|
||||
|
||||
/* Validate/create actions. */
|
||||
ACTIONS,
|
||||
@ -432,6 +436,8 @@ static const enum index next_item[] = {
|
||||
ITEM_TCP,
|
||||
ITEM_SCTP,
|
||||
ITEM_VXLAN,
|
||||
ITEM_MPLS,
|
||||
ITEM_GRE,
|
||||
ZERO,
|
||||
};
|
||||
|
||||
@ -538,6 +544,18 @@ static const enum index item_vxlan[] = {
|
||||
ZERO,
|
||||
};
|
||||
|
||||
static const enum index item_mpls[] = {
|
||||
ITEM_MPLS_LABEL,
|
||||
ITEM_NEXT,
|
||||
ZERO,
|
||||
};
|
||||
|
||||
static const enum index item_gre[] = {
|
||||
ITEM_GRE_PROTO,
|
||||
ITEM_NEXT,
|
||||
ZERO,
|
||||
};
|
||||
|
||||
static const enum index next_action[] = {
|
||||
ACTION_END,
|
||||
ACTION_VOID,
|
||||
@ -1279,6 +1297,35 @@ static const struct token token_list[] = {
|
||||
.next = NEXT(item_vxlan, NEXT_ENTRY(UNSIGNED), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_vxlan, vni)),
|
||||
},
|
||||
[ITEM_MPLS] = {
|
||||
.name = "mpls",
|
||||
.help = "match MPLS header",
|
||||
.priv = PRIV_ITEM(MPLS, sizeof(struct rte_flow_item_mpls)),
|
||||
.next = NEXT(item_mpls),
|
||||
.call = parse_vc,
|
||||
},
|
||||
[ITEM_MPLS_LABEL] = {
|
||||
.name = "label",
|
||||
.help = "MPLS label",
|
||||
.next = NEXT(item_mpls, NEXT_ENTRY(UNSIGNED), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_mpls,
|
||||
label_tc_s,
|
||||
"\xff\xff\xf0")),
|
||||
},
|
||||
[ITEM_GRE] = {
|
||||
.name = "gre",
|
||||
.help = "match GRE header",
|
||||
.priv = PRIV_ITEM(GRE, sizeof(struct rte_flow_item_gre)),
|
||||
.next = NEXT(item_gre),
|
||||
.call = parse_vc,
|
||||
},
|
||||
[ITEM_GRE_PROTO] = {
|
||||
.name = "protocol",
|
||||
.help = "GRE protocol type",
|
||||
.next = NEXT(item_gre, NEXT_ENTRY(UNSIGNED), item_param),
|
||||
.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
|
||||
protocol)),
|
||||
},
|
||||
/* Validate/create actions. */
|
||||
[ACTIONS] = {
|
||||
.name = "actions",
|
||||
|
@ -963,6 +963,8 @@ static const struct {
|
||||
MK_FLOW_ITEM(TCP, sizeof(struct rte_flow_item_tcp)),
|
||||
MK_FLOW_ITEM(SCTP, sizeof(struct rte_flow_item_sctp)),
|
||||
MK_FLOW_ITEM(VXLAN, sizeof(struct rte_flow_item_vxlan)),
|
||||
MK_FLOW_ITEM(MPLS, sizeof(struct rte_flow_item_mpls)),
|
||||
MK_FLOW_ITEM(GRE, sizeof(struct rte_flow_item_gre)),
|
||||
};
|
||||
|
||||
/** Compute storage space needed by item specification. */
|
||||
|
@ -2481,6 +2481,14 @@ This section lists supported pattern items and their attributes, if any.
|
||||
|
||||
- ``vni {unsigned}``: VXLAN identifier.
|
||||
|
||||
- ``mpls``: match MPLS header.
|
||||
|
||||
- ``label {unsigned}``: MPLS label.
|
||||
|
||||
- ``gre``: match GRE header.
|
||||
|
||||
- ``protocol {unsigned}``: protocol type.
|
||||
|
||||
Actions list
|
||||
^^^^^^^^^^^^
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user