diff options
Diffstat (limited to 'src/plugins/dpdk/device/flow.c')
-rw-r--r-- | src/plugins/dpdk/device/flow.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c index 635f6f37ebf..95be9e230be 100644 --- a/src/plugins/dpdk/device/flow.c +++ b/src/plugins/dpdk/device/flow.c @@ -85,6 +85,20 @@ (f->type == VNET_FLOW_TYPE_IP6_IP4_N_TUPLE) || \ (f->type == VNET_FLOW_TYPE_IP6_IP6_N_TUPLE)) +/* get source addr from ipv6 header */ +#if (RTE_VERSION >= RTE_VERSION_NUM(24, 11, 0, 0)) +#define IP6_SRC_ADDR(ip6) ip6.hdr.src_addr.a +#else +#define IP6_SRC_ADDR(ip6) ip6.hdr.src_addr +#endif + +/* get destination addr from ipv6 header */ +#if (RTE_VERSION >= RTE_VERSION_NUM(24, 11, 0, 0)) +#define IP6_DST_ADDR(ip6) ip6.hdr.dst_addr.a +#else +#define IP6_DST_ADDR(ip6) ip6.hdr.dst_addr +#endif + /* constant structs */ static const struct rte_flow_attr ingress = {.ingress = 1 }; @@ -342,13 +356,13 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe) } else { - clib_memcpy (ip6[0].hdr.src_addr, &ip6_ptr->src_addr.addr, + clib_memcpy (IP6_SRC_ADDR (ip6[0]), &ip6_ptr->src_addr.addr, ARRAY_LEN (ip6_ptr->src_addr.addr.as_u8)); - clib_memcpy (ip6[1].hdr.src_addr, &ip6_ptr->src_addr.mask, + clib_memcpy (IP6_SRC_ADDR (ip6[1]), &ip6_ptr->src_addr.mask, ARRAY_LEN (ip6_ptr->src_addr.mask.as_u8)); - clib_memcpy (ip6[0].hdr.dst_addr, &ip6_ptr->dst_addr.addr, + clib_memcpy (IP6_DST_ADDR (ip6[0]), &ip6_ptr->dst_addr.addr, ARRAY_LEN (ip6_ptr->dst_addr.addr.as_u8)); - clib_memcpy (ip6[1].hdr.dst_addr, &ip6_ptr->dst_addr.mask, + clib_memcpy (IP6_DST_ADDR (ip6[1]), &ip6_ptr->dst_addr.mask, ARRAY_LEN (ip6_ptr->dst_addr.mask.as_u8)); ip6[0].hdr.proto = ip6_ptr->protocol.prot; ip6[1].hdr.proto = ip6_ptr->protocol.mask; @@ -505,13 +519,13 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe) } \ else \ { \ - clib_memcpy (in_ip6[0].hdr.src_addr, &ptr->in_src_addr.addr, \ + clib_memcpy (IP6_SRC_ADDR (in_ip6[0]), &ptr->in_src_addr.addr, \ ARRAY_LEN (ptr->in_src_addr.addr.as_u8)); \ - clib_memcpy (in_ip6[1].hdr.src_addr, &ptr->in_src_addr.mask, \ + clib_memcpy (IP6_SRC_ADDR (in_ip6[1]), &ptr->in_src_addr.mask, \ ARRAY_LEN (ptr->in_src_addr.mask.as_u8)); \ - clib_memcpy (in_ip6[0].hdr.dst_addr, &ptr->in_dst_addr.addr, \ + clib_memcpy (IP6_DST_ADDR (in_ip6[0]), &ptr->in_dst_addr.addr, \ ARRAY_LEN (ptr->in_dst_addr.addr.as_u8)); \ - clib_memcpy (in_ip6[1].hdr.dst_addr, &ptr->in_dst_addr.mask, \ + clib_memcpy (IP6_DST_ADDR (in_ip6[1]), &ptr->in_dst_addr.mask, \ ARRAY_LEN (ptr->in_dst_addr.mask.as_u8)); \ item->spec = in_ip6; \ item->mask = in_ip6 + 1; \ |