app/testpmd: fix MPLSoGRE encapsulation

In function cmd_set_mplsogre_encap_parsed(), MPLS label value was
set in mplsogre_encap_conf struct without the required offset.
As a result the value was copied incorrectly into
rte_flow_item_mpls struct.

This patch sets MPLS label value in appropriate location at
mplsogre_encap_conf struct, so it is correctly copied to
rte_flow_item_mpls struct.

Fixes: 3e77031be855 ("app/testpmd: add MPLSoGRE encapsulation")
Cc: stable@dpdk.org

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
This commit is contained in:
Dekel Peled 2018-12-04 15:52:02 +02:00 committed by Ferruh Yigit
parent 0f79b515fe
commit da4d923557

View File

@ -15567,10 +15567,9 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
struct cmd_set_mplsogre_encap_result *res = parsed_result;
union {
uint32_t mplsogre_label;
uint8_t label[3];
uint8_t label[4];
} id = {
.mplsogre_label =
rte_cpu_to_be_32(res->label) & RTE_BE32(0x00ffffff),
.mplsogre_label = rte_cpu_to_be_32(res->label<<12),
};
if (strcmp(res->mplsogre, "mplsogre_encap") == 0)
@ -15583,7 +15582,7 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
mplsogre_encap_conf.select_ipv4 = 0;
else
return;
rte_memcpy(mplsogre_encap_conf.label, &id.label[1], 3);
rte_memcpy(mplsogre_encap_conf.label, &id.label, 3);
if (mplsogre_encap_conf.select_ipv4) {
IPV4_ADDR_TO_UINT(res->ip_src, mplsogre_encap_conf.ipv4_src);
IPV4_ADDR_TO_UINT(res->ip_dst, mplsogre_encap_conf.ipv4_dst);