summaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk/device/flow.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/dpdk/device/flow.c')
-rw-r--r--src/plugins/dpdk/device/flow.c30
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; \