From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BE3B4A00BE; Fri, 12 Jun 2020 17:56:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 60C3E1C0D7; Fri, 12 Jun 2020 17:55:37 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 109D9FFA for ; Fri, 12 Jun 2020 10:12:07 +0200 (CEST) IronPort-SDR: hhmJHZflH3/4Tf75P96NWJcE7b9ZN4qgCEqx2WIdPLFut//NCE/UozPQzk6X96OCFkUmBy+Odq rt/LGzr0udrw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2020 01:12:07 -0700 IronPort-SDR: F5omRgWCJWOxX9mQC62q3KPVk0aLATGrSb2bZMr+zkTWXhNUfxTIfj84iwc/aEvC8e26jOKx90 LInK39jwpIHw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,502,1583222400"; d="scan'208";a="260914979" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.102]) by fmsmga008.fm.intel.com with ESMTP; 12 Jun 2020 01:12:05 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, xiaolong.ye@intel.com, beilei.xing@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, junfeng.guo@intel.com, simei.su@intel.com Date: Fri, 12 Jun 2020 16:10:31 +0800 Message-Id: <20200612081032.54201-2-junfeng.guo@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200612081032.54201-1-junfeng.guo@intel.com> References: <20200612081032.54201-1-junfeng.guo@intel.com> X-Mailman-Approved-At: Fri, 12 Jun 2020 17:55:29 +0200 Subject: [dpdk-dev] [PATCH 1/2] net/ice: add RSS support for ipv4 ipv6 mix of GTP X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" RSS for GTP with outer & inner ipv4 & ipv6 combination are supported in this patch, so that we can process RSS based on inner 5 tuples or 3 tuples of all the cases below of GTP packets: 1. ipv4 (outer) + ipv4 (inner) 2. ipv4 (outer) + ipv6 (inner) 3. ipv6 (outer) + ipv4 (inner) 4. ipv6 (outer) + ipv6 (inner) Signed-off-by: Junfeng Guo --- drivers/net/ice/ice_generic_flow.c | 166 ++++++++++++++++++++++++++++- drivers/net/ice/ice_generic_flow.h | 24 +++++ drivers/net/ice/ice_hash.c | 94 ++++++++++++---- 3 files changed, 262 insertions(+), 22 deletions(-) diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c index ad103d0e8..e7cec44d8 100644 --- a/drivers/net/ice/ice_generic_flow.c +++ b/drivers/net/ice/ice_generic_flow.c @@ -1057,6 +1057,8 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[] = { RTE_FLOW_ITEM_TYPE_GTP_PSC, RTE_FLOW_ITEM_TYPE_END, }; + +/* IPv4 GTPU IPv4 */ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, @@ -1085,7 +1087,16 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[] = { RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_END, - +}; +enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, }; enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = { RTE_FLOW_ITEM_TYPE_ETH, @@ -1098,6 +1109,159 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = { RTE_FLOW_ITEM_TYPE_END, }; +/* IPv4 GTPU IPv6 */ +enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_udp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_tcp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_icmp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_ICMP, + RTE_FLOW_ITEM_TYPE_END, +}; + +/* IPv6 GTPU IPv4 */ +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_udp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_tcp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_icmp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_ICMP, + RTE_FLOW_ITEM_TYPE_END, +}; + +/* IPv6 GTPU IPv6 */ +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_udp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_tcp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_icmp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_ICMP, + RTE_FLOW_ITEM_TYPE_END, +}; + /* PPPoE */ enum rte_flow_item_type pattern_eth_pppoed[] = { RTE_FLOW_ITEM_TYPE_ETH, diff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h index 492a48cd9..5bce8c99e 100644 --- a/drivers/net/ice/ice_generic_flow.h +++ b/drivers/net/ice/ice_generic_flow.h @@ -365,11 +365,35 @@ extern enum rte_flow_item_type pattern_eth_ipv6_nvgre_eth_ipv6_icmp6[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh[]; + +/* IPv4 GTPU IPv4 */ extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_sctp[]; extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[]; +/* IPv4 GTPU IPv6 */ +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_sctp[]; +extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_icmp[]; + +/* IPv6 GTPU IPv4 */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_sctp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_icmp[]; + +/* IPv6 GTPU IPv6 */ +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_udp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_tcp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_sctp[]; +extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_icmp[]; + /* PPPoE */ extern enum rte_flow_item_type pattern_eth_pppoed[]; extern enum rte_flow_item_type pattern_eth_vlan_pppoed[]; diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index 3d58b7184..a77bd3447 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -89,6 +89,7 @@ struct rss_type_match_hdr hint_3 = { struct rss_type_match_hdr hint_4 = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV_OTHER, ETH_RSS_NONFRAG_IPV4_SCTP}; + struct rss_type_match_hdr hint_5 = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER, ETH_RSS_IPV6}; struct rss_type_match_hdr hint_6 = { @@ -100,20 +101,51 @@ struct rss_type_match_hdr hint_7 = { struct rss_type_match_hdr hint_8 = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV_OTHER, ETH_RSS_NONFRAG_IPV6_SCTP}; + struct rss_type_match_hdr hint_9 = { - ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_IPV4}; -struct rss_type_match_hdr hint_10 = { ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_IPV4}; -struct rss_type_match_hdr hint_11 = { +struct rss_type_match_hdr hint_10 = { ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_NONFRAG_IPV4_UDP}; -struct rss_type_match_hdr hint_12 = { +struct rss_type_match_hdr hint_11 = { ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_NONFRAG_IPV4_TCP}; -struct rss_type_match_hdr hint_13 = { +struct rss_type_match_hdr hint_12 = { ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_NONFRAG_IPV4_SCTP}; + +struct rss_type_match_hdr hint_13 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_IPV4}; struct rss_type_match_hdr hint_14 = { ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_UDP}; struct rss_type_match_hdr hint_15 = { ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_TCP}; +struct rss_type_match_hdr hint_16 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_SCTP}; + +struct rss_type_match_hdr hint_17 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_IPV6}; +struct rss_type_match_hdr hint_18 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV6_UDP}; +struct rss_type_match_hdr hint_19 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV6_TCP}; +struct rss_type_match_hdr hint_20 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV6_SCTP}; + +struct rss_type_match_hdr hint_21 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_IPV4}; +struct rss_type_match_hdr hint_22 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_UDP}; +struct rss_type_match_hdr hint_23 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_TCP}; +struct rss_type_match_hdr hint_24 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_SCTP}; + +struct rss_type_match_hdr hint_25 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_IPV6}; +struct rss_type_match_hdr hint_26 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV6_UDP}; +struct rss_type_match_hdr hint_27 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV6_TCP}; +struct rss_type_match_hdr hint_28 = { + ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV6_SCTP}; /* Supported pattern for os default package. */ static struct ice_pattern_match_item ice_hash_pattern_list_os[] = { @@ -130,22 +162,42 @@ static struct ice_pattern_match_item ice_hash_pattern_list_os[] = { /* Supported pattern for comms package. */ static struct ice_pattern_match_item ice_hash_pattern_list_comms[] = { - {pattern_eth_ipv4, ICE_INSET_NONE, &hint_1}, - {pattern_eth_ipv4_udp, ICE_INSET_NONE, &hint_2}, - {pattern_eth_ipv4_tcp, ICE_INSET_NONE, &hint_3}, - {pattern_eth_ipv4_sctp, ICE_INSET_NONE, &hint_4}, - {pattern_eth_ipv6, ICE_INSET_NONE, &hint_5}, - {pattern_eth_ipv6_udp, ICE_INSET_NONE, &hint_6}, - {pattern_eth_ipv6_tcp, ICE_INSET_NONE, &hint_7}, - {pattern_eth_ipv6_sctp, ICE_INSET_NONE, &hint_8}, - {pattern_empty, ICE_INSET_NONE, &hint_0}, - {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_INSET_NONE, &hint_9}, - {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_INSET_NONE, &hint_14}, - {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, &hint_15}, - {pattern_eth_pppoes_ipv4, ICE_INSET_NONE, &hint_10}, - {pattern_eth_pppoes_ipv4_udp, ICE_INSET_NONE, &hint_11}, - {pattern_eth_pppoes_ipv4_tcp, ICE_INSET_NONE, &hint_12}, - {pattern_eth_pppoes_ipv4_sctp, ICE_INSET_NONE, &hint_13}, + {pattern_eth_ipv4, ICE_INSET_NONE, &hint_1}, + {pattern_eth_ipv4_udp, ICE_INSET_NONE, &hint_2}, + {pattern_eth_ipv4_tcp, ICE_INSET_NONE, &hint_3}, + {pattern_eth_ipv4_sctp, ICE_INSET_NONE, &hint_4}, + + {pattern_eth_ipv6, ICE_INSET_NONE, &hint_5}, + {pattern_eth_ipv6_udp, ICE_INSET_NONE, &hint_6}, + {pattern_eth_ipv6_tcp, ICE_INSET_NONE, &hint_7}, + {pattern_eth_ipv6_sctp, ICE_INSET_NONE, &hint_8}, + + {pattern_eth_pppoes_ipv4, ICE_INSET_NONE, &hint_9}, + {pattern_eth_pppoes_ipv4_udp, ICE_INSET_NONE, &hint_10}, + {pattern_eth_pppoes_ipv4_tcp, ICE_INSET_NONE, &hint_11}, + {pattern_eth_pppoes_ipv4_sctp, ICE_INSET_NONE, &hint_12}, + + {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_INSET_NONE, &hint_13}, + {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_INSET_NONE, &hint_14}, + {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, &hint_15}, + {pattern_eth_ipv4_gtpu_eh_ipv4_sctp, ICE_INSET_NONE, &hint_16}, + + {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_INSET_NONE, &hint_17}, + {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_INSET_NONE, &hint_18}, + {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_INSET_NONE, &hint_19}, + {pattern_eth_ipv4_gtpu_eh_ipv6_sctp, ICE_INSET_NONE, &hint_20}, + + {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_INSET_NONE, &hint_21}, + {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_INSET_NONE, &hint_22}, + {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, &hint_23}, + {pattern_eth_ipv6_gtpu_eh_ipv4_sctp, ICE_INSET_NONE, &hint_24}, + + {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_INSET_NONE, &hint_25}, + {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_INSET_NONE, &hint_26}, + {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_INSET_NONE, &hint_27}, + {pattern_eth_ipv6_gtpu_eh_ipv6_sctp, ICE_INSET_NONE, &hint_28}, + + {pattern_empty, ICE_INSET_NONE, &hint_0}, }; /** -- 2.17.1