- if ((f->type == VNET_FLOW_TYPE_IP6_N_TUPLE) ||
- (f->type == VNET_FLOW_TYPE_IP6_GTPC) ||
- (f->type == VNET_FLOW_TYPE_IP6_GTPU) ||
- (f->type == VNET_FLOW_TYPE_IP6_GTPU_IP4) ||
- (f->type == VNET_FLOW_TYPE_IP6_GTPU_IP6))
+ if (f->type == VNET_FLOW_TYPE_IP4_L2TPV3OIP)
+ {
+ vnet_flow_ip4_l2tpv3oip_t *l2tp = &f->ip4_l2tpv3oip;
+ item->type = RTE_FLOW_ITEM_TYPE_IPV4;
+
+ if (!l2tp->src_addr.mask.as_u32 && !l2tp->dst_addr.mask.as_u32)
+ {
+ item->spec = NULL;
+ item->mask = NULL;
+ }
+ else
+ {
+ ip4[0].hdr.src_addr = l2tp->src_addr.addr.as_u32;
+ ip4[1].hdr.src_addr = l2tp->src_addr.mask.as_u32;
+ ip4[0].hdr.dst_addr = l2tp->dst_addr.addr.as_u32;
+ ip4[1].hdr.dst_addr = l2tp->dst_addr.mask.as_u32;
+ item->spec = ip4;
+ item->mask = ip4 + 1;
+ }
+ protocol = l2tp->protocol;
+ }
+ else if ((f->type == VNET_FLOW_TYPE_IP6_N_TUPLE) ||
+ (f->type == VNET_FLOW_TYPE_IP6_GTPC) ||
+ (f->type == VNET_FLOW_TYPE_IP6_GTPU) ||
+ (f->type == VNET_FLOW_TYPE_IP6_GTPU_IP4) ||
+ (f->type == VNET_FLOW_TYPE_IP6_GTPU_IP6))