[v3,4/8] app/testpmd: support VXLAN encap for sample action
Checks
Commit Message
Add support for rte_flow_action_vxlan_encap as a sample action.
The example of test-pmd command:
1. set vxlan ip-version ... vni ... udp-src ...
set raw_encap 1 eth src.../ ipv4.../...
set sample_actions 2 vxlan_encap / port_id id 0 / end
flow create 0 ... pattern eth / end actions
sample ratio 1 index 2 / raw_encap index 1 / port_id id 0...
The flow will result in all the matched egress packets will be
encapsulated and sent to wire, and also mirrored the packets
using VXLAN encapsulation data and sent to wire.
Signed-off-by: Salem Sol <salems@nvidia.com>
---
app/test-pmd/cmdline_flow.c | 7 +++++++
1 file changed, 7 insertions(+)
Comments
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Salem Sol
> Sent: Wednesday, March 17, 2021 11:26
> To: dev@dpdk.org
> Cc: Salem Sol <salems@nvidia.com>; Ori Kam <orika@nvidia.com>; Xiaoyun Li
> <xiaoyun.li@intel.com>
> Subject: [dpdk-dev] [PATCH v3 4/8] app/testpmd: support VXLAN encap for
> sample action
>
> Add support for rte_flow_action_vxlan_encap as a sample action.
>
> The example of test-pmd command:
>
> 1. set vxlan ip-version ... vni ... udp-src ...
> set raw_encap 1 eth src.../ ipv4.../...
> set sample_actions 2 vxlan_encap / port_id id 0 / end
> flow create 0 ... pattern eth / end actions
> sample ratio 1 index 2 / raw_encap index 1 / port_id id 0...
>
> The flow will result in all the matched egress packets will be
> encapsulated and sent to wire, and also mirrored the packets
> using VXLAN encapsulation data and sent to wire.
>
> Signed-off-by: Salem Sol <salems@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
@@ -582,6 +582,7 @@ struct rte_flow_action_queue sample_queue[RAW_SAMPLE_CONFS_MAX_NUM];
struct rte_flow_action_count sample_count[RAW_SAMPLE_CONFS_MAX_NUM];
struct rte_flow_action_port_id sample_port_id[RAW_SAMPLE_CONFS_MAX_NUM];
struct rte_flow_action_raw_encap sample_encap[RAW_SAMPLE_CONFS_MAX_NUM];
+struct action_vxlan_encap_data sample_vxlan_encap[RAW_SAMPLE_CONFS_MAX_NUM];
struct action_rss_data sample_rss_data[RAW_SAMPLE_CONFS_MAX_NUM];
struct rte_flow_action_vf sample_vf[RAW_SAMPLE_CONFS_MAX_NUM];
@@ -1615,6 +1616,7 @@ static const enum index next_action_sample[] = {
ACTION_COUNT,
ACTION_PORT_ID,
ACTION_RAW_ENCAP,
+ ACTION_VXLAN_ENCAP,
ACTION_NEXT,
ZERO,
};
@@ -7949,6 +7951,11 @@ cmd_set_raw_parsed_sample(const struct buffer *in)
(const void *)action->conf, size);
action->conf = &sample_vf[idx];
break;
+ case RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP:
+ size = sizeof(struct rte_flow_action_vxlan_encap);
+ parse_setup_vxlan_encap_data(&sample_vxlan_encap[idx]);
+ action->conf = &sample_vxlan_encap[idx].conf;
+ break;
default:
printf("Error - Not supported action\n");
return;