aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/dpdk/device/flow.c9
-rw-r--r--src/vnet/flow/flow.h17
2 files changed, 23 insertions, 3 deletions
diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c
index 85a62bbf46b..dd62ba5c73b 100644
--- a/src/plugins/dpdk/device/flow.c
+++ b/src/plugins/dpdk/device/flow.c
@@ -32,6 +32,11 @@
#define FLOW_IS_L2_LAYER(f) \
(f->type == VNET_FLOW_TYPE_ETHERNET)
+/* check if flow is VLAN sensitive */
+#define FLOW_IS_VLAN_TAGGED(f) \
+ ((f->type == VNET_FLOW_TYPE_IP4_N_TUPLE_TAGGED) || \
+ (f->type == VNET_FLOW_TYPE_IP6_N_TUPLE_TAGGED))
+
/* check if flow is L4 type */
#define FLOW_IS_L4_LAYER(f) \
((f->type == VNET_FLOW_TYPE_IP4_N_TUPLE) || \
@@ -134,9 +139,7 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe)
item->mask = NULL;
}
- /* VLAN */
- if ((f->type == VNET_FLOW_TYPE_IP4_N_TUPLE) ||
- (f->type == VNET_FLOW_TYPE_IP6_N_TUPLE))
+ if (FLOW_IS_VLAN_TAGGED (f))
{
vec_add2 (items, item, 1);
item->type = RTE_FLOW_ITEM_TYPE_VLAN;
diff --git a/src/vnet/flow/flow.h b/src/vnet/flow/flow.h
index 5def01a08ef..bd62135649b 100644
--- a/src/vnet/flow/flow.h
+++ b/src/vnet/flow/flow.h
@@ -29,6 +29,8 @@
/* l4 flow*/ \
_(IP4_N_TUPLE, ip4_n_tuple, "ipv4-n-tuple") \
_(IP6_N_TUPLE, ip6_n_tuple, "ipv6-n-tuple") \
+ _(IP4_N_TUPLE_TAGGED, ip4_n_tuple_tagged, "ipv4-n-tuple-tagged") \
+ _(IP6_N_TUPLE_TAGGED, ip6_n_tuple_tagged, "ipv6-n-tuple-tagged") \
/* L4 tunnel flow*/ \
_(IP4_VXLAN, ip4_vxlan, "ipv4-vxlan") \
_(IP6_VXLAN, ip6_vxlan, "ipv6-vxlan") \
@@ -58,6 +60,21 @@
_fe(ip_port_and_mask_t, dst_port) \
_fe(ip_protocol_t, protocol)
+#define foreach_flow_entry_ip4_n_tuple_tagged \
+ _fe(ip4_address_and_mask_t, src_addr) \
+ _fe(ip4_address_and_mask_t, dst_addr) \
+ _fe(ip_port_and_mask_t, src_port) \
+ _fe(ip_port_and_mask_t, dst_port) \
+ _fe(ip_protocol_t, protocol)
+
+#define foreach_flow_entry_ip6_n_tuple_tagged \
+ _fe(ip6_address_and_mask_t, src_addr) \
+ _fe(ip6_address_and_mask_t, dst_addr) \
+ _fe(ip_port_and_mask_t, src_port) \
+ _fe(ip_port_and_mask_t, dst_port) \
+ _fe(ip_protocol_t, protocol)
+
+
#define foreach_flow_entry_ip4_vxlan \
_fe(ip4_address_t, src_addr) \
_fe(ip4_address_t, dst_addr) \