RTE_FLOW_ITEM_TYPE_AH,
RTE_FLOW_ITEM_TYPE_END,
};
+enum rte_flow_item_type pattern_eth_ipv6_udp_esp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_ESP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+enum rte_flow_item_type pattern_eth_ipv6_udp_ah[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_AH,
+ RTE_FLOW_ITEM_TYPE_END,
+};
enum rte_flow_item_type pattern_eth_ipv6_l2tp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE},
{pattern_eth_ipv6_esp,
ICE_INSET_NONE, ICE_INSET_NONE},
+ {pattern_eth_ipv6_udp_esp,
+ ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv6_ah,
ICE_INSET_NONE, ICE_INSET_NONE},
+ {pattern_eth_ipv6_udp_ah,
+ ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv6_l2tp,
ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv4_pfcp,
ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE},
{pattern_eth_ipv6_esp,
ICE_INSET_NONE, ICE_INSET_NONE},
+ {pattern_eth_ipv6_udp_esp,
+ ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv6_ah,
ICE_INSET_NONE, ICE_INSET_NONE},
+ {pattern_eth_ipv6_udp_ah,
+ ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv6_l2tp,
ICE_INSET_NONE, ICE_INSET_NONE},
{pattern_eth_ipv4_pfcp,
uint16_t tunnel_valid = 0;
uint16_t pppoe_valid = 0;
uint16_t ipv6_valiad = 0;
+ uint16_t udp_valiad = 0;
for (item = pattern; item->type !=
case RTE_FLOW_ITEM_TYPE_UDP:
udp_spec = item->spec;
udp_mask = item->mask;
+ udp_valiad = 1;
if (udp_spec && udp_mask) {
/* Check UDP mask and update input set*/
if (udp_mask->hdr.dgram_len ||
"Invalid esp item");
return -ENOTSUP;
}
- if (ipv6_valiad)
+ if (ipv6_valiad && udp_valiad)
+ *tun_type = ICE_SW_TUN_PROFID_IPV6_NAT_T;
+ else if (ipv6_valiad)
*tun_type = ICE_SW_TUN_PROFID_IPV6_ESP;
break;
"Invalid ah item");
return -ENOTSUP;
}
- if (ipv6_valiad)
+ if (ipv6_valiad && udp_valiad)
+ *tun_type = ICE_SW_TUN_PROFID_IPV6_NAT_T;
+ else if (ipv6_valiad)
*tun_type = ICE_SW_TUN_PROFID_IPV6_AH;
break;
case ICE_SW_TUN_PROFID_IPV6_ESP:
case ICE_SW_TUN_PROFID_IPV6_AH:
case ICE_SW_TUN_PROFID_MAC_IPV6_L2TPV3:
+ case ICE_SW_TUN_PROFID_IPV6_NAT_T:
case ICE_SW_TUN_PROFID_IPV4_PFCP_NODE:
case ICE_SW_TUN_PROFID_IPV4_PFCP_SESSION:
case ICE_SW_TUN_PROFID_IPV6_PFCP_NODE: