From: Ting Xu Date: Tue, 13 Dec 2022 03:10:54 +0000 (+0000) Subject: avf dpdk: fix incorrect handling of IPv6 src address in flow X-Git-Tag: v23.10-rc0~253 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=11d9d02459ee3ac6ae402dd565aabbdfeea2c4fb;p=vpp.git 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 Change-Id: Ic957c57e3e1488b74e6281f4ed1df7fd491af35c --- diff --git a/src/plugins/avf/avf_fdir_lib.c b/src/plugins/avf/avf_fdir_lib.c index cf774a7d138..52937874186 100644 --- a/src/plugins/avf/avf_fdir_lib.c +++ b/src/plugins/avf/avf_fdir_lib.c @@ -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; diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c index ae76b3df169..be453bb9577 100644 --- a/src/plugins/dpdk/device/flow.c +++ b/src/plugins/dpdk/device/flow.c @@ -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;