avf dpdk: fix incorrect handling of IPv6 src address in flow

In current flow creating process in native avf and dpdk-plugins, when
parsing the input arguments, it does not copy IPv6 src address correctly,
so that IPv6 src address will not be configured in any flow rule, and
any packet with the same address will not be matched.

Type: fix

Signed-off-by: Ting Xu <ting.xu@intel.com>
Change-Id: Ic957c57e3e1488b74e6281f4ed1df7fd491af35c
(cherry picked from commit 11d9d02459)
This commit is contained in:
Ting Xu
2022-12-13 03:10:54 +00:00
committed by Dave Wallace
parent 9e43eb7a3c
commit 985d12d8c4
2 changed files with 4 additions and 3 deletions

View File

@ -257,9 +257,9 @@ avf_fdir_rcfg_set_field (struct avf_fdir_conf *rcfg, int layer,
{
rcfg->input_set |= AVF_INSET_IPV6_DST;
VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT (hdr, IPV6, DST);
clib_memcpy (hdr->buffer, ipv6_spec, sizeof (*ipv6_spec));
}
clib_memcpy (hdr->buffer, ipv6_spec, sizeof (*ipv6_spec));
}
break;

View File

@ -319,7 +319,8 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe)
if ((ip6_ptr->src_addr.mask.as_u64[0] == 0) &&
(ip6_ptr->src_addr.mask.as_u64[1] == 0) &&
(!ip6_ptr->protocol.mask))
(ip6_ptr->dst_addr.mask.as_u64[0] == 0) &&
(ip6_ptr->dst_addr.mask.as_u64[1] == 0) && (!ip6_ptr->protocol.mask))
{
item->spec = NULL;
item->mask = NULL;