test suite reviews and discussions
 help / color / mirror / Atom feed
* Re: [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases
  2021-06-03 14:29 ` [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases Hailin Xu
@ 2021-06-03  7:06   ` Xu, HailinX
  2021-06-07  9:23   ` Lin, Xueqin
  1 sibling, 0 replies; 6+ messages in thread
From: Xu, HailinX @ 2021-06-03  7:06 UTC (permalink / raw)
  To: dts; +Cc: Lin, Xueqin

[-- Attachment #1: Type: text/plain, Size: 402 bytes --]

> -----Original Message-----
> From: Xu, HailinX <hailinx.xu@intel.com>
> Sent: Thursday, June 3, 2021 10:29 PM
> To: dts@dpdk.org
> Cc: Lin, Xueqin <xueqin.lin@intel.com>; Xu, HailinX <hailinx.xu@intel.com>
> Subject: [dts][PATCH v1 2/2] tests/iavf_fdir: add new test cases
> 
> Add fdir with gtpu inner l3/l4 test cases.

Tested-by: Hailin Xu <hailinx.xu@intel.com>

Regards,
Xu, Hailin

[-- Attachment #2: TestIAVFFdir.log --]
[-- Type: application/octet-stream, Size: 1491732 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH v1 0/2] add new test plans and test cases
@ 2021-06-03 14:28 Hailin Xu
  2021-06-03 14:29 ` [dts] [PATCH v1 1/2] test_plans/iavf_fdir: add new test plans Hailin Xu
  2021-06-03 14:29 ` [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases Hailin Xu
  0 siblings, 2 replies; 6+ messages in thread
From: Hailin Xu @ 2021-06-03 14:28 UTC (permalink / raw)
  To: dts; +Cc: xueqin.lin, Hailin Xu

Add fdir with gtpu inner l3/l4 cases.

Hailin Xu (2):
  test_plans/iavf_fdir: add gtpu inner l3/l4 test plans
  tests/iavf_fdir: add gtpu inner l3/l4 test cases

 test_plans/iavf_fdir_test_plan.rst | 1725 ++++++++-
 tests/TestSuite_iavf_fdir.py       | 5512 +++++++++++++++++++++++++++-
 2 files changed, 7019 insertions(+), 218 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH v1 1/2] test_plans/iavf_fdir: add new test plans
  2021-06-03 14:28 [dts] [PATCH v1 0/2] add new test plans and test cases Hailin Xu
@ 2021-06-03 14:29 ` Hailin Xu
  2021-06-07  9:07   ` Lin, Xueqin
  2021-06-03 14:29 ` [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases Hailin Xu
  1 sibling, 1 reply; 6+ messages in thread
From: Hailin Xu @ 2021-06-03 14:29 UTC (permalink / raw)
  To: dts; +Cc: xueqin.lin, Hailin Xu

Add fdir with gtpu inner l3/l4 test palns.

Signed-off-by: Hailin Xu <hailinx.xu@intel.com>
---
 test_plans/iavf_fdir_test_plan.rst | 1725 +++++++++++++++++++++++++++-
 1 file changed, 1669 insertions(+), 56 deletions(-)

diff --git a/test_plans/iavf_fdir_test_plan.rst b/test_plans/iavf_fdir_test_plan.rst
index 1fd7b61b..4d339384 100644
--- a/test_plans/iavf_fdir_test_plan.rst
+++ b/test_plans/iavf_fdir_test_plan.rst
@@ -46,59 +46,107 @@ Description
 Pattern and input set
 ---------------------
 
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |    Packet Type               |        Pattern             |            Input Set                                              |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    | IPv4/IPv6 + TCP/UDP/SCTP     |      MAC_IPV4_PAY          | [Source IP], [Dest IP], [IP protocol], [TTL], [DSCP]              |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV4_UDP          | [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV4_TCP          | [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV4_SCTP         | [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_PAY          | [Source IP], [Dest IP], [IP protocol], [TTL], [TC]                |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_UDP          | [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]   |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_TCP          | [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]   |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_SCTP         | [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]   |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    | L2 Ethertype                 |      L2 Ethertype          | [Ethertype]                                                       |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    | PFCP                         |   MAC_IPV4_PFCP_NODE       | [Dest Port], [S-field]                                            |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |   MAC_IPV4_PFCP_SESSION    | [Dest Port], [S-field]                                            |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |   MAC_IPV6_PFCP_NODE       | [Dest Port], [S-field]                                            |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |   MAC_IPV6_PFCP_SESSION    | [Dest Port], [S-field]                                            |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    | IPv4/IPv6 + GTP-U            |   MAC_IPV4_GTPU            | [Source IP], [Dest IP], [TEID]                                    |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |   MAC_IPV4_GTPU_EH         | [Source IP], [Dest IP], [TEID], [QFI]                             |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |   MAC_IPV6_GTPU            | [Source IPV6], [Dest IPV6], [TEID]                                |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |   MAC_IPV6_GTPU_EH         | [Source IPV6], [Dest IPV6], [TEID], [QFI]                         |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    | L2TPv3                       |      MAC_IPV4_L2TPv3       | [Session ID]                                                      |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_L2TPv3       | [Session ID]                                                      |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    | ESP                          |      MAC_IPV4_ESP          | [SPI]                                                             |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_ESP          | [SPI]                                                             |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV4_AH           | [SPI]                                                             |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |      MAC_IPV6_AH           | [SPI]                                                             |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |     MAC_IPV4_NAT-T-ESP     | [Source IP], [Dest IP], [SPI]                                     |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
-    |                              |     MAC_IPV6_NAT-T-ESP     | [Source IP], [Dest IP], [SPI]                                     |
-    +------------------------------+----------------------------+-------------------------------------------------------------------+
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |    Packet Type               |        Pattern               |            Input Set                                              |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | IPv4/IPv6 + TCP/UDP/SCTP     |MAC_IPV4_PAY                  | [Source IP], [Dest IP], [IP protocol], [TTL], [DSCP]              |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_UDP                  | [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_TCP                  | [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_SCTP                 | [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_PAY                  | [Source IP], [Dest IP], [IP protocol], [TTL], [TC]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_UDP                  | [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]   |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_TCP                  | [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]   |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_SCTP                 | [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]   |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | L2 Ethertype                 |L2 Ethertype                  | [Ethertype]                                                       |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | PFCP                         |MAC_IPV4_PFCP_NODE            | [Dest Port], [S-field]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_PFCP_SESSION         | [Dest Port], [S-field]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_PFCP_NODE            | [Dest Port], [S-field]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_PFCP_SESSION         | [Dest Port], [S-field]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | L2TPv3                       |MAC_IPV4_L2TPv3               | [Session ID]                                                      |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_L2TPv3               | [Session ID]                                                      |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | ESP                          |MAC_IPV4_ESP                  | [SPI]                                                             |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_ESP                  | [SPI]                                                             |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_AH                   | [SPI]                                                             |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_AH                   | [SPI]                                                             |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_NAT-T-ESP            | [Source IP], [Dest IP], [SPI]                                     |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_NAT-T-ESP            | [Source IP], [Dest IP], [SPI]                                     |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | IPv4 + GTP-U  outer          |MAC_IPV4_GTPU                 | [Source IP], [Dest IP], [TEID]                                    |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH              | [Source IP], [Dest IP], [TEID], [QFI]                             |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | IPv6 + GTP-U  outer          |MAC_IPV6_GTPU                 | [Source IPV6], [Dest IPV6], [TEID]                                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV6_GTPU_EH              | [Source IPV6], [Dest IPV6], [TEID], [QFI]                         |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | IPv4 + GTP-U + inner IPv4    |MAC_IPV4_GTPU_IPV4            | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV4_UDP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV4_TCP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV4         | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV4_UDP     | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV4_TCP     | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_DL_IPV4      | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_DL_IPV4_UDP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_DL_IPV4_TCP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV4      | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV4_UDP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV4_TCP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    | IPv4 + GTP-U + inner IPv6    |MAC_IPV4_GTPU_IPV6            | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV6_UDP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV6_TCP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV6         | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV6_UDP     | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV6_TCP     | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6      | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_UDP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_TCP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6      | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_UDP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_TCP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
 
 
 Supported function type
@@ -191,7 +239,7 @@ Default parameters
 
     [Dest MAC]: 00:11:22:33:44:88
 
-   IPv4::
+   outer/inner IPv4::
 
     [Source IP]: 192.168.0.20
     [Dest IP]: 192.168.0.21
@@ -199,7 +247,7 @@ Default parameters
     [TTL]: 2
     [DSCP]: 4
 
-   IPv6::
+   outer/inner IPv6::
 
     [Source IPv6]: 2001::2
     [Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020
@@ -582,6 +630,382 @@ Send packets
     sendp(Ether(dst='00:11:22:33:44:55')/IPv6(dst="1111:2222:3333:4444:5555:6666:7777:9999")/UDP(dport=4500)/ESP(spi=2)/Raw('x'*480),iface="enp134s0f1")
     sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888")/UDP(dport=4500)/ESP(spi=2)/Raw('x'*480),iface="enp134s0f1")
 
+* MAC_IPV4_GTPU_IPV4
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP()/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_IPV4_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=24, dport=25)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_IPV4_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=24, dport=25)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_IPV4
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_IPV4_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_IPV4_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_DL_IPV4
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
+    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_DL_IPV4_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_DL_IPV4_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_UL_IPV4
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP()/Raw('x'*20)
+    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/Raw('x'*20)
+    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_UL_IPV4_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/Raw('x'*20)
+    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_UL_IPV4_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/Raw('x'*20)
+    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+
+* MAC_IPV4_GTPU_IPV6
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_IPV6_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_IPV6_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_IPV6
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_IPV6_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_IPV6_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_DL_IPV6
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
+    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_DL_IPV6_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_DL_IPV6_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_UL_IPV6
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
+    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
+    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_UL_IPV6_TCP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw('x'*20)
+
+* MAC_IPV4_GTPU_EH_UL_IPV6_UDP
+
+   matched packets::
+
+    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+   mismatched packets::
+
+    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
+    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
+
 
 Test case: flow validation
 ==========================
@@ -4816,4 +5240,1193 @@ Test Case: MAC_IPV6_UDP_WITHOUT_INPUT_SET
 
 1. replace "tcp" with "udp" in all the subcases of MAC_IPV6_TCP_WITHOUT_INPUT_SET pattern.
 2. Then repeat all the steps in all the subcases of MAC_IPV6_TCP_WITHOUT_INPUT_SET pattern.
-3. get the same result.
\ No newline at end of file
+3. get the same result.
+
+Test case: MAC_IPV4_GTPU_IPV4 pattern
+=====================================
+
+Subcase 1: MAC_IPV4_GTPU_IPV4 inner src ip queue index
+------------------------------------------------------
+all index cases steps and expected result are the same
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end
+
+2. send matched packets, check the packets are distributed to queue 1 with FDIR matched ID=0x1.
+   send mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID.
+
+3. verify rules can be listed and destroyed::
+
+    testpmd> flow list 0
+
+   check the rule listed.
+   destroy the rule::
+
+    testpmd> flow destroy 0 rule 0
+
+4. verify matched packets are received without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 2: MAC_IPV4_GTPU_IPV4 inner src ip rss queues
+-----------------------------------------------------
+all rss queues cases steps and expected result are the same
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end
+
+2. send matched packets, check the packets are distributed to queue 2 or queue 3 with FDIR matched ID=0x1.
+   send mismatched packets, check the packets are received without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are received without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 3: MAC_IPV4_GTPU_IPV4 inner src ip passthru
+---------------------------------------------------
+all passthru cases steps and expected result are the same
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end
+
+2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x1.
+   send mismatched packets, check the packets are received without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are received without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 4: MAC_IPV4_GTPU_IPV4 inner src ip drop
+-----------------------------------------------
+all drop cases steps and expected result are the same
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions drop / end
+
+2. send matched packets, check the packets are dropped.
+   send mismatched packets, check the packets are not dropped.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are not dropped.
+   Then check there is no rule listed.
+
+Subcase 5: MAC_IPV4_GTPU_IPV4 inner src ip mark+rss
+---------------------------------------------------
+all mark+rss cases steps and expected result are the same
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions rss / mark / end
+
+2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0.
+   send mismatched packets, check the packets are received without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are received without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 6: MAC_IPV4_GTPU_IPV4 inner dst ip queue index
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of subcase 1.
+
+Subcase 7: MAC_IPV4_GTPU_IPV4 inner dst ip rss queues
+-----------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of subcase 2.
+
+Subcase 8: MAC_IPV4_GTPU_IPV4 inner dst ip passthru
+---------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of subcase 3.
+
+Subcase 9: MAC_IPV4_GTPU_IPV4 inner dst ip drop
+------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions drop / end
+
+replace rule and repeat step of subcase 4.
+
+Subcase 10: MAC_IPV4_GTPU_IPV4 inner dst ip mark+rss
+----------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions rss / mark / end
+
+replace rule and repeat step of subcase 5.
+
+Subcase 11: MAC_IPV4_GTPU_IPV4 2 tuple queue index
+--------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 12: MAC_IPV4_GTPU_IPV4 2 tuple queue group
+--------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 13: MAC_IPV4_GTPU_IPV4 2 tuple passthru
+-----------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of subcase 3.
+
+Subcase 14: MAC_IPV4_GTPU_IPV4 2 tuple drop
+-------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
+
+replace rule and repeat step of subcase 4.
+
+Subcase 15: MAC_IPV4_GTPU_IPV4 2 tuple mark/rss
+-----------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end
+
+replace rule and repeat step of subcase 5.
+
+Test case: MAC_IPV4_GTPU_IPV4_TCP pattern
+=========================================
+
+Subcase 1: MAC_IPV4_GTPU_IPV4_TCP inner src ip queue index
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 2: MAC_IPV4_GTPU_IPV4_TCP inner src ip rss queues
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 3: MAC_IPV4_GTPU_IPV4_TCP inner src ip passthru
+-------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 4: MAC_IPV4_GTPU_IPV4_TCP inner src ip drop
+---------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 5: MAC_IPV4_GTPU_IPV4_TCP inner src ip mark+rss
+-------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 6: MAC_IPV4_GTPU_IPV4_TCP inner dst ip queue index
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 7: MAC_IPV4_GTPU_IPV4_TCP inner dst ip rss queues
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 8: MAC_IPV4_GTPU_IPV4_TCP inner dst ip passthru
+-------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 9: MAC_IPV4_GTPU_IPV4_TCP inner dst ip drop
+----------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 10: MAC_IPV4_GTPU_IPV4_TCP inner dst ip mark+rss
+--------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 11: MAC_IPV4_GTPU_IPV4_TCP 4 tuple queue index
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 12: MAC_IPV4_GTPU_IPV4_TCP 4 tuple queue group
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 13: MAC_IPV4_GTPU_IPV4_TCP 4 tuple passthru
+---------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 14: MAC_IPV4_GTPU_IPV4_TCP 4 tuple drop
+-----------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 15: MAC_IPV4_GTPU_IPV4_TCP 4 tuple mark/rss
+---------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss/ mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 16: MAC_IPV4_GTPU_IPV4_TCP inner src port queue index
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 17: MAC_IPV4_GTPU_IPV4_TCP inner src port queue group
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 18: MAC_IPV4_GTPU_IPV4_TCP inner src port passthru
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 19: MAC_IPV4_GTPU_IPV4_TCP inner src port drop
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 20: MAC_IPV4_GTPU_IPV4_TCP inner src port mark/rss
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 21: MAC_IPV4_GTPU_IPV4_TCP inner dst port queue index
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 22: MAC_IPV4_GTPU_IPV4_TCP inner dst port queue group
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 23: MAC_IPV4_GTPU_IPV4_TCP inner dst port passthru
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 24: MAC_IPV4_GTPU_IPV4_TCP inner dst port drop
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 25: MAC_IPV4_GTPU_IPV4_TCP inner dst port mark/rss
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 26: MAC_IPV4_GTPU_IPV4_TCP without inputset queue index
+---------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions mark id 1 / rss / end
+
+2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/TCP()/("X"*480)], iface="ens192f0")
+
+   send mismatched packets, check the packets are redirected by RSS without FDIR matched ID::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/UDP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/SCTP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/ICMP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/TCP()/("X"*480)], iface="ens192f0")
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR matched ID.
+   check there is no rule listed.
+
+Subcase 27: MAC_IPV4_GTPU_IPV4_TCP without inputset queue group
+---------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 src / udp / gtpu / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end
+
+2. send matched packets of subcase 26, check the packets are distributed to queue group with FDIR matched ID=0x1.
+   send mismatched packets of subcase 26, check the packets are distributed by RSS without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 28: MAC_IPV4_GTPU_IPV4_TCP without inputset passthru
+------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions passthru / mark id 1 / end
+
+2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x1.
+   send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR ID.
+   check there is no rule listed.
+
+Subcase 29: MAC_IPV4_GTPU_IPV4_TCP without inputset drop
+--------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions drop / end
+
+2. send matched packets of subcase 26, check the packets are dropped.
+   send mismatched packets of subcase 26, check the packets are not dropped without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are not dropped without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 30: MAC_IPV4_GTPU_IPV4_TCP without inputset mark/rss
+------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss / mark / end
+
+2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x0.
+   send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR matched ID.
+   check there is no rule listed.
+
+Test case: MAC_IPV4_GTPU_IPV4_UDP pattern
+=========================================
+
+1. replace "tcp" with "udp" in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
+2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
+3. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_IPV4 pattern
+========================================
+
+Subcase 1: MAC_IPV4_GTPU_EH_IPV4 inner src ip queue index
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 2: MAC_IPV4_GTPU_EH_IPV4 inner src ip rss queues
+--------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 3: MAC_IPV4_GTPU_EH_IPV4 inner src ip passthru
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 4: MAC_IPV4_GTPU_EH_IPV4 inner src ip drop
+--------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 5: MAC_IPV4_GTPU_EH_IPV4 inner src ip mark+rss
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 6: MAC_IPV4_GTPU_EH_IPV4 inner dst ip queue index
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 7: MAC_IPV4_GTPU_EH_IPV4 inner dst ip rss queues
+--------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 8: MAC_IPV4_GTPU_EH_IPV4 inner dst ip passthru
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 9: MAC_IPV4_GTPU_EH_IPV4 inner dst ip drop
+---------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 10: MAC_IPV4_GTPU_EH_IPV4 inner dst ip mark+rss
+-------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 11: MAC_IPV4_GTPU_EH_IPV4 2 tuple queue index
+-----------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 12: MAC_IPV4_GTPU_EH_IPV4 2 tuple queue group
+-----------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 13: MAC_IPV4_GTPU_EH_IPV4 2 tuple passthru
+--------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 14: MAC_IPV4_GTPU_EH_IPV4 2 tuple drop
+----------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 15: MAC_IPV4_GTPU_EH_IPV4 2 tuple mark/rss
+--------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark id 1 / rss / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+
+Test case: MAC_IPV4_GTPU_EH_IPV4_TCP pattern
+============================================
+
+Subcase 1: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip queue index
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 2: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip rss queues
+------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 3: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip passthru
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 4: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip drop
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 5: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip mark+rss
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 6: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip queue index
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 7: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip rss queues
+------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 8: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip passthru
+----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 9: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip drop
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 10: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip mark+rss
+-----------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 11: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple queue index
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 12: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple queue group
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 13: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple passthru
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 14: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple drop
+--------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 15: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple mark/rss
+------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 16: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port queue index
+----------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 17: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port queue group
+----------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 18: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port passthru
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 19: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port drop
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 20: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port mark/rss
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 21: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port queue index
+----------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
+
+Subcase 22: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port queue group
+----------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions rss queues 2 3 end / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
+
+Subcase 23: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port passthru
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
+
+Subcase 24: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port drop
+---------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions drop / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
+
+Subcase 25: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port mark/rss
+-------------------------------------------------------------
+
+rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions rss / mark / end
+
+replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
+
+Subcase 26: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset queue index
+------------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions mark id 1 / rss / end
+
+2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
+
+   send mismatched packets, check the packets are redirected by RSS without FDIR matched ID::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/SCTP()("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/ICMP()("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)], iface="ens192f0")
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR matched ID.
+   check there is no rule listed.
+
+Subcase 27: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset queue group
+------------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 src / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end
+
+2. send matched packets of subcase 26, check the packets are distributed to queue group with FDIR matched ID=0x1.
+   send mismatched packets of subcase 26, check the packets are distributed by RSS without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 28: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset passthru
+---------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions passthru / mark id 1 / end
+
+2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x1.
+   send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR ID.
+   check there is no rule listed.
+
+Subcase 29: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset drop
+-----------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions drop / end
+
+2. send matched packets of subcase 26, check the packets are dropped.
+   send mismatched packets of subcase 26, check the packets are not dropped without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are not dropped without FDIR matched ID.
+   Then check there is no rule listed.
+
+Subcase 30: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset mark/rss
+---------------------------------------------------------------
+
+1. create filter rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss / mark / end
+
+2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x0.
+   send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.
+
+3. repeat step 3 of subcase 1.
+
+4. verify matched packets are distributed by RSS without FDIR matched ID.
+   check there is no rule listed.
+
+Test case: MAC_IPV4_GTPU_EH_IPV4_UDP pattern
+============================================
+
+1. replace "tcp" with "udp" in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+3. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern
+===============================================
+
+without inputset match packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
+
+without inputset mismatch packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/ICMP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)], iface="ens192f0")
+
+1. replace "gtp_psc" with "gtp_psc pdu_t is 0" in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+2. replace without inputset packets in the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+4. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_DL_IPV4_UDP pattern
+===============================================
+
+1. replace "tcp" with "udp" in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
+2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
+3. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_UL_IPV4 pattern
+===========================================
+
+1. replace "gtp_psc" with "gtp_psc pdu_t is 1" in all the subcases of MAC_IPV4_GTPU_EH_IPV4 pattern.
+2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4 pattern.
+3. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern
+===============================================
+
+without inputset match packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
+
+without inputset mismatch packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/SCTP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/ICMP()/("X"*480)], iface="ens192f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)], iface="ens192f0")
+
+1. replace "gtp_psc" with "gtp_psc pdu_t is 1" in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+2. replace without inputset packets in the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+4. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_UL_IPV4_UDP pattern
+===============================================
+1. replace "tcp" with "udp" in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
+2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
+3. get the same result.
+
+Test case: MAC_IPV4_GTPU_IPV6 pattern
+=====================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_IPV4 pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_IPV4 pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4 pattern.
+4. get the same result
+
+Test case: MAC_IPV4_GTPU_IPV6_TCP pattern
+=========================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
+4. get the same result
+
+Test case: MAC_IPV4_GTPU_IPV6_UDP pattern
+=========================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_IPV4_UDP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_IPV4_UDP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_UDP pattern.
+4. get the same result
+
+Test case: MAC_IPV4_GTPU_EH_IPV6_TCP pattern
+============================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
+4. get the same result
+
+Test case: MAC_IPV4_GTPU_EH_IPV6_UDP pattern
+============================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
+4. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_DL_IPV6_TCP pattern
+===============================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
+4. get the same result
+
+Test case: MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern
+===============================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
+4. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_UL_IPV6_TCP pattern
+===============================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
+4. get the same result.
+
+Test case: MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern
+===============================================
+1. replace inner "ipv4" with "ipv6" in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
+2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
+3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
+4. get the same result.
+
+Test case: GTPU inner co-exist test
+===================================
+
+Subcase 1: inner IPv4 gtpu conflict rule
+-----------------------------------------
+
+Rules::
+
+   #1 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
+   #2 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #3 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #4 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
+   #5 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #6 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #7 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
+   #8 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #9 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #10 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
+   #11 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #12 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+
+packets::
+
+   pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+   pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+   pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+   pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+   pkt7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+   pkt8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt9 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+   pkt10 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
+   pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+1. First create #1 rule, verify #2/3 rule create failed and #4 create successfully.
+   send match packets(pkt1/4), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+2. destroy #1 rule, verify #5-12 any rule create failed and #2 create successfully.
+   send match packets(pkt2/4), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+3. destroy #4 rule, verify #1 rule create failed and #5 create successfully.
+   send match packets(pkt2/5), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+4. destroy #2 rule, verify #4/7/8/10/11 rule create failed and #6 create successfully.
+   send match packets(pkt5/6), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+5. destroy #5 rule, verify #4/7/9/10/12 rule create failed and #8 create successfully.
+   send match packets(pkt6/8), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+6. destroy #6 rule, verify #4/5/7 rule create failed and #9 create successfully.
+   send match packets(pkt8/9), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+7. destroy #8 rule, verify #4/6/7 rule create failed and #10 create successfully.
+   send match packets(pkt9/10), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+8. destroy #9 rule, verify #4/5/6/11/12 rule create failed and #7 create successfully.
+   send match packets(pkt7/10), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+9. destroy #10 rule, verify #4/5/6/8/9 rule create failed and #11 create successfully.
+   send match packets(pkt7/11), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+10. verify #4/5/6/8/9/10 rule create failed and #12 create successfully.
+   send match packets(pkt7/11/12), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+11. verify #4/5/6/8/9/10 rule create failed and #3 create successfully.
+   send match packets(pkt3/7/11/12), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
+
+Subcase 2: inner IPv6 gtpu conflict rule
+----------------------------------------
+
+Rules::
+
+   #1 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
+   #2 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #3 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #4 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
+   #5 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #6 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #7 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
+   #8 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #9 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #10 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
+   #11 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+   #12 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
+
+packets::
+
+   pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+   pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+   pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+   pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+   pkt7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+   pkt8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt9 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+   pkt10 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
+   pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
+   pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
+
+repeat step 1-12 of subcase 1.
\ No newline at end of file
-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases
  2021-06-03 14:28 [dts] [PATCH v1 0/2] add new test plans and test cases Hailin Xu
  2021-06-03 14:29 ` [dts] [PATCH v1 1/2] test_plans/iavf_fdir: add new test plans Hailin Xu
@ 2021-06-03 14:29 ` Hailin Xu
  2021-06-03  7:06   ` Xu, HailinX
  2021-06-07  9:23   ` Lin, Xueqin
  1 sibling, 2 replies; 6+ messages in thread
From: Hailin Xu @ 2021-06-03 14:29 UTC (permalink / raw)
  To: dts; +Cc: xueqin.lin, Hailin Xu

Add fdir with gtpu inner l3/l4 test cases.

Signed-off-by: Hailin Xu <hailinx.xu@intel.com>
---
 tests/TestSuite_iavf_fdir.py | 5512 +++++++++++++++++++++++++++++++++-
 1 file changed, 5350 insertions(+), 162 deletions(-)

diff --git a/tests/TestSuite_iavf_fdir.py b/tests/TestSuite_iavf_fdir.py
index 27f92f80..960ecbce 100644
--- a/tests/TestSuite_iavf_fdir.py
+++ b/tests/TestSuite_iavf_fdir.py
@@ -607,6 +607,395 @@ MAC_IPV6_UDP_WITHOUT = {
                  'Ether(dst="00:11:22:33:44:55")/IPv6()/SCTP(sport=RandShort(),dport=RandShort())']
 }
 
+# inner L3/L4 packets
+MAC_IPV4_GTPU_IPV4 = {
+    "match" : ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+               'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw("x"*20)',
+               'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw("x"*20)',
+               'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+               'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_IPV4_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_IPV4_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_IPV4_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/UDP(sport=22, dport=23)/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_IPV4_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_IPV4 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_IPV4_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_IPV4_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_IPV4_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP(sport=22, dport=23)/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_IPV4_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV4 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV4_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV4_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)',],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV4_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV4_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV4 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV4_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV4_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV4_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV4_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_IPV6 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_IPV6_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_IPV6_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_IPV6_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_IPV6_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_IPV6 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_IPV6_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_IPV6_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_IPV6_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_IPV6_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV6 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV6_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV6_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV6_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_DL_IPV6_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP()/("X"*480)',
+              'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV6 = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+              'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV6_TCP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV6_TCP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV6_UDP = {
+    "match": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)'],
+    "mismatch": ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP(sport=22, dport=23)/Raw("x"*20)',
+                 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU_EH_UL_IPV6_UDP_WITHOUT_INPUTSET = {
+    "match": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP()/("X"*480)'],
+    "mismatch": ['Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/ICMP()/("X"*480)',
+                 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)']
+}
+
 tv_mac_ipv4_pay_queue_index = {
     "name": "test_mac_ipv4_pay_queue_index",
     "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end",
@@ -1759,242 +2148,4467 @@ tv_mac_ipv6_ah_queue_index = {
     "check_param": {"port_id": 0, "queue": 13, "mark_id": 7}
 }
 
-tv_mac_ipv6_ah_queue_group = {
-    "name": "test_mac_ipv6_ah_queue_group",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end",
-    "scapy_str": MAC_IPV6_AH,
-    "check_param": {"port_id": 0, "queue": [1, 2, 3, 4], "mark_id": 6}
+tv_mac_ipv6_ah_queue_group = {
+    "name": "test_mac_ipv6_ah_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end",
+    "scapy_str": MAC_IPV6_AH,
+    "check_param": {"port_id": 0, "queue": [1, 2, 3, 4], "mark_id": 6}
+}
+
+tv_mac_ipv6_ah_mark = {
+    "name": "test_mac_ipv6_ah_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions mark id 15 / end",
+    "scapy_str": MAC_IPV6_AH,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 15}
+}
+
+tv_mac_ipv4_nat_t_esp_queue_index = {
+    "name": "test_mac_ipv4_nat_t_esp_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / esp spi is 2 / end actions queue index 13 / mark id 7 / end",
+    "scapy_str": MAC_IPV4_NAT_T_ESP,
+    "check_param": {"port_id": 0, "queue": 13, "mark_id": 7}
+}
+
+tv_mac_ipv4_nat_t_esp_queue_group = {
+    "name": "test_mac_ipv4_nat_t_esp_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / esp spi is 2 / end actions rss queues 1 2 3 4 end / mark id 6 / end",
+    "scapy_str": MAC_IPV4_NAT_T_ESP,
+    "check_param": {"port_id": 0, "queue": [1, 2, 3, 4], "mark_id": 6}
+}
+
+tv_mac_ipv4_nat_t_esp_mark = {
+    "name": "test_mac_ipv4_nat_t_esp_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / esp spi is 2 / end actions mark id 15 / end",
+    "scapy_str": MAC_IPV4_NAT_T_ESP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 15}
+}
+
+tv_mac_ipv6_nat_t_esp_queue_index = {
+    "name": "test_mac_ipv6_nat_t_esp_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 2 / end actions queue index 13 / mark id 7 / end",
+    "scapy_str": MAC_IPV6_NAT_T_ESP,
+    "check_param": {"port_id": 0, "queue": 13, "mark_id": 7}
+}
+
+tv_mac_ipv6_nat_t_esp_queue_group = {
+    "name": "test_mac_ipv6_nat_t_esp_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 2 / end actions rss queues 1 2 3 4 end / mark id 6 / end",
+    "scapy_str": MAC_IPV6_NAT_T_ESP,
+    "check_param": {"port_id": 0, "queue": [1, 2, 3, 4], "mark_id": 6}
+}
+
+tv_mac_ipv6_nat_t_esp_mark = {
+    "name": "test_mac_ipv6_nat_t_esp_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 2 / end actions mark id 15 / end",
+    "scapy_str": MAC_IPV6_NAT_T_ESP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 15}
+}
+
+# mac_ipv4_tcp_without_input_set
+tv_mac_ipv4_tcp_without_input_set_queue_index = {
+    "name": "test_mac_ipv4_tcp_without_input_set_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions queue index 1 / end",
+    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": 1}
+}
+
+tv_mac_ipv4_tcp_without_input_set_queue_group = {
+    "name": "test_mac_ipv4_tcp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss queues 0 1 2 3 end / end",
+    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_tcp_without_input_set_passthru = {
+    "name": "test_mac_ipv4_tcp_without_input_set_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_tcp_without_input_set_drop = {
+    "name": "test_mac_ipv4_tcp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_tcp_without_input_set_mark_rss = {
+    "name": "test_mac_ipv4_tcp_without_input_set_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions mark id 2 / rss / end",
+    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+}
+
+tv_mac_ipv4_tcp_without_input_set_mark = {
+    "name": "test_mac_ipv4_tcp_without_input_set_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions mark id 1 / end",
+    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+# mac_ipv4_udp_without_input_set
+tv_mac_ipv4_udp_without_input_set_queue_index = {
+    "name": "test_mac_ipv4_udp_without_input_set_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions queue index 1 / end",
+    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": 1}
+}
+
+tv_mac_ipv4_udp_without_input_set_queue_group = {
+    "name": "test_mac_ipv4_udp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss queues 0 1 2 3 end / end",
+    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_udp_without_input_set_passthru = {
+    "name": "test_mac_ipv4_udp_without_input_set_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_udp_without_input_set_drop = {
+    "name": "test_mac_ipv4_udp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_udp_without_input_set_mark_rss = {
+    "name": "test_mac_ipv4_udp_without_input_set_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions mark id 2 / rss / end",
+    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+}
+
+tv_mac_ipv4_udp_without_input_set_mark = {
+    "name": "test_mac_ipv4_udp_without_input_set_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions mark id 1 / end",
+    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+# mac_ipv6_tcp_without_input_set
+tv_mac_ipv6_tcp_without_input_set_queue_index = {
+    "name": "test_mac_ipv6_tcp_without_input_set_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions queue index 1 / end",
+    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": 1}
+}
+
+tv_mac_ipv6_tcp_without_input_set_queue_group = {
+    "name": "test_mac_ipv6_tcp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss queues 0 1 2 3 end / end",
+    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv6_tcp_without_input_set_passthru = {
+    "name": "test_mac_ipv6_tcp_without_input_set_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv6_tcp_without_input_set_drop = {
+    "name": "test_mac_ipv6_tcp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv6_tcp_without_input_set_mark_rss = {
+    "name": "test_mac_ipv6_tcp_without_input_set_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions mark id 2 / rss / end",
+    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+}
+
+tv_mac_ipv6_tcp_without_input_set_mark = {
+    "name": "test_mac_ipv6_tcp_without_input_set_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions mark id 1 / end",
+    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+# mac_ipv6_udp_without_input_set
+tv_mac_ipv6_udp_without_input_set_queue_index = {
+    "name": "test_mac_ipv6_udp_without_input_set_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions queue index 1 / end",
+    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": 1}
+}
+
+tv_mac_ipv6_udp_without_input_set_queue_group = {
+    "name": "test_mac_ipv6_udp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss queues 0 1 2 3 end / end",
+    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+    "count": 10,
+    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv6_udp_without_input_set_passthru = {
+    "name": "test_mac_ipv6_udp_without_input_set_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv6_udp_without_input_set_drop = {
+    "name": "test_mac_ipv6_udp_without_input_set_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv6_udp_without_input_set_mark_rss = {
+    "name": "test_mac_ipv6_udp_without_input_set_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions mark id 2 / rss / end",
+    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+}
+
+tv_mac_ipv6_udp_without_input_set_mark = {
+    "name": "test_mac_ipv6_udp_without_input_set_mark",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions mark id 1 / end",
+    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+#inner L3/L4 cases
+# mac_ipv4_gtpu_ipv4 test case
+tv_mac_ipv4_gtpu_ipv4_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv4_tcp test case
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv4_udp test case
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / ipv4 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv4_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_eh_ipv4 test case
+tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_eh_ipv4_tcp test case
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_eh_ipv4_udp test case
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# MAC_IPV4_GTPU_EH_DL_ipv4 test case
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv4_tcp test case
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv4_udp test case
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 dst is 192.168.0.21 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# MAC_IPV4_GTPU_EH_UL_ipv4 test case
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv4_tcp test case
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv4_udp test case
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 dst is 192.168.0.21 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV4_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv6 test case
+tv_mac_ipv4_gtpu_ipv6_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv6_tcp test case
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / ipv6 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv6_udp test case
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / ipv6 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_ipv6_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_eh_ipv4 test case
+tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_eh_ipv6_tcp test case
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc / ipv6 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_eh_ipv6_udp test case
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc / ipv6 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_GTPU_EH_DL_ipv4 test case
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv6_tcp test case
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv6_udp test case
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_DL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_GTPU_EH_UL_ipv4 test case
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+# mac_ipv4_gtpu_ipv6_tcp test case
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-tv_mac_ipv6_ah_mark = {
-    "name": "test_mac_ipv6_ah_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions mark id 15 / end",
-    "scapy_str": MAC_IPV6_AH,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 15}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv4_nat_t_esp_queue_index = {
-    "name": "test_mac_ipv4_nat_t_esp_queue_index",
-    "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / esp spi is 2 / end actions queue index 13 / mark id 7 / end",
-    "scapy_str": MAC_IPV4_NAT_T_ESP,
-    "check_param": {"port_id": 0, "queue": 13, "mark_id": 7}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv4_nat_t_esp_queue_group = {
-    "name": "test_mac_ipv4_nat_t_esp_queue_group",
-    "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / esp spi is 2 / end actions rss queues 1 2 3 4 end / mark id 6 / end",
-    "scapy_str": MAC_IPV4_NAT_T_ESP,
-    "check_param": {"port_id": 0, "queue": [1, 2, 3, 4], "mark_id": 6}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
 }
 
-tv_mac_ipv4_nat_t_esp_mark = {
-    "name": "test_mac_ipv4_nat_t_esp_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / esp spi is 2 / end actions mark id 15 / end",
-    "scapy_str": MAC_IPV4_NAT_T_ESP,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 15}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
 }
 
-tv_mac_ipv6_nat_t_esp_queue_index = {
-    "name": "test_mac_ipv6_nat_t_esp_queue_index",
-    "rule": "flow create 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 2 / end actions queue index 13 / mark id 7 / end",
-    "scapy_str": MAC_IPV6_NAT_T_ESP,
-    "check_param": {"port_id": 0, "queue": 13, "mark_id": 7}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-tv_mac_ipv6_nat_t_esp_queue_group = {
-    "name": "test_mac_ipv6_nat_t_esp_queue_group",
-    "rule": "flow create 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 2 / end actions rss queues 1 2 3 4 end / mark id 6 / end",
-    "scapy_str": MAC_IPV6_NAT_T_ESP,
-    "check_param": {"port_id": 0, "queue": [1, 2, 3, 4], "mark_id": 6}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv6_nat_t_esp_mark = {
-    "name": "test_mac_ipv6_nat_t_esp_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 2 / end actions mark id 15 / end",
-    "scapy_str": MAC_IPV6_NAT_T_ESP,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 15}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-# mac_ipv4_tcp_without_input_set
-tv_mac_ipv4_tcp_without_input_set_queue_index = {
-    "name": "test_mac_ipv4_tcp_without_input_set_queue_index",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions queue index 1 / end",
-    "scapy_str": MAC_IPV4_TCP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
 }
 
-tv_mac_ipv4_tcp_without_input_set_queue_group = {
-    "name": "test_mac_ipv4_tcp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss queues 0 1 2 3 end / end",
-    "scapy_str": MAC_IPV4_TCP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
 }
 
-tv_mac_ipv4_tcp_without_input_set_passthru = {
-    "name": "test_mac_ipv4_tcp_without_input_set_passthru",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions passthru / mark id 1 / end",
-    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-tv_mac_ipv4_tcp_without_input_set_drop = {
-    "name": "test_mac_ipv4_tcp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions drop / end",
-    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
     "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv4_tcp_without_input_set_mark_rss = {
-    "name": "test_mac_ipv4_tcp_without_input_set_mark_rss",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions mark id 2 / rss / end",
-    "scapy_str": MAC_IPV4_TCP_WITHOUT,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv4_tcp_without_input_set_mark = {
-    "name": "test_mac_ipv4_tcp_without_input_set_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / tcp / end actions mark id 1 / end",
-    "scapy_str": MAC_IPV4_TCP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP_WITHOUT_INPUTSET,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-# mac_ipv4_udp_without_input_set
-tv_mac_ipv4_udp_without_input_set_queue_index = {
-    "name": "test_mac_ipv4_udp_without_input_set_queue_index",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions queue index 1 / end",
-    "scapy_str": MAC_IPV4_UDP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv4_udp_without_input_set_queue_group = {
-    "name": "test_mac_ipv4_udp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions rss queues 0 1 2 3 end / end",
-    "scapy_str": MAC_IPV4_UDP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_TCP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv4_udp_without_input_set_passthru = {
-    "name": "test_mac_ipv4_udp_without_input_set_passthru",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions passthru / mark id 1 / end",
-    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+# mac_ipv4_gtpu_ipv6_udp test case
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-tv_mac_ipv4_udp_without_input_set_drop = {
-    "name": "test_mac_ipv4_udp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions drop / end",
-    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv4_udp_without_input_set_mark_rss = {
-    "name": "test_mac_ipv4_udp_without_input_set_mark_rss",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions mark id 2 / rss / end",
-    "scapy_str": MAC_IPV4_UDP_WITHOUT,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv4_udp_without_input_set_mark = {
-    "name": "test_mac_ipv4_udp_without_input_set_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / end actions mark id 1 / end",
-    "scapy_str": MAC_IPV4_UDP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss queues 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-# mac_ipv6_tcp_without_input_set
-tv_mac_ipv6_tcp_without_input_set_queue_index = {
-    "name": "test_mac_ipv6_tcp_without_input_set_queue_index",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions queue index 1 / end",
-    "scapy_str": MAC_IPV6_TCP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv6_tcp_without_input_set_queue_group = {
-    "name": "test_mac_ipv6_tcp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss queues 0 1 2 3 end / end",
-    "scapy_str": MAC_IPV6_TCP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv6_tcp_without_input_set_passthru = {
-    "name": "test_mac_ipv6_tcp_without_input_set_passthru",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions passthru / mark id 1 / end",
-    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 10}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_passthru = {
+    "name": "tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-tv_mac_ipv6_tcp_without_input_set_drop = {
-    "name": "test_mac_ipv6_tcp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions drop / end",
-    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv6_tcp_without_input_set_mark_rss = {
-    "name": "test_mac_ipv6_tcp_without_input_set_mark_rss",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions mark id 2 / rss / end",
-    "scapy_str": MAC_IPV6_TCP_WITHOUT,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv6_tcp_without_input_set_mark = {
-    "name": "test_mac_ipv6_tcp_without_input_set_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions mark id 1 / end",
-    "scapy_str": MAC_IPV6_TCP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp src is 22 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp src is 22 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp src is 22 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-# mac_ipv6_udp_without_input_set
-tv_mac_ipv6_udp_without_input_set_queue_index = {
-    "name": "test_mac_ipv6_udp_without_input_set_queue_index",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions queue index 1 / end",
-    "scapy_str": MAC_IPV6_UDP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp src is 22 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv6_udp_without_input_set_queue_group = {
-    "name": "test_mac_ipv6_udp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss queues 0 1 2 3 end / end",
-    "scapy_str": MAC_IPV6_UDP_WITHOUT,
-    "count": 10,
-    "check_param": {"port_id": 0, "queue": [0, 1, 2, 3]}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp src is 22 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv6_udp_without_input_set_passthru = {
-    "name": "test_mac_ipv6_udp_without_input_set_passthru",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions passthru / mark id 1 / end",
-    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp dst is 23 / end actions queue index 1 / mark id 3 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp dst is 23 / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
-tv_mac_ipv6_udp_without_input_set_drop = {
-    "name": "test_mac_ipv6_udp_without_input_set_drop",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions drop / end",
-    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp dst is 23 / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
     "check_param": {"port_id": 0, "drop": 1}
 }
 
-tv_mac_ipv6_udp_without_input_set_mark_rss = {
-    "name": "test_mac_ipv6_udp_without_input_set_mark_rss",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions mark id 2 / rss / end",
-    "scapy_str": MAC_IPV6_UDP_WITHOUT,
-    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 2}
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp dst is 23 / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
 }
 
-tv_mac_ipv6_udp_without_input_set_mark = {
-    "name": "test_mac_ipv6_udp_without_input_set_mark",
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions mark id 1 / end",
-    "scapy_str": MAC_IPV6_UDP_WITHOUT,
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_queue_index = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_queue_index",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp / end actions queue index 1 / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_queue_group = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_queue_group",
+    "rule": "flow create 0 ingress pattern eth / ipv4  / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_passthru = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_passthru",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp / end actions passthru / mark id 1 / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP_WITHOUT_INPUTSET,
     "check_param": {"port_id": 0, "passthru": 1, "mark_id": 1}
 }
 
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_drop = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_drop",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp / end actions drop / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "drop": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_mark_rss = {
+    "name": "test_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_mark_rss",
+    "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp / end actions rss / mark / end",
+    "scapy_str": MAC_IPV4_GTPU_EH_UL_IPV6_UDP_WITHOUT_INPUTSET,
+    "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0}
+}
+
 vectors_ipv4_pay = [tv_mac_ipv4_pay_queue_index, tv_mac_ipv4_pay_mark_rss,tv_mac_ipv4_pay_passthru,
                          tv_mac_ipv4_pay_drop, tv_mac_ipv4_pay_queue_group, tv_mac_ipv4_pay_mark]
 
@@ -2101,6 +6715,390 @@ vectors_ipv6_udp_without_input_set = [tv_mac_ipv6_udp_without_input_set_queue_in
                                       tv_mac_ipv6_udp_without_input_set_mark_rss, tv_mac_ipv6_udp_without_input_set_passthru,
                                       tv_mac_ipv6_udp_without_input_set_drop, tv_mac_ipv6_udp_without_input_set_mark]
 
+vectors_ipv4_gtpu_ipv4 = [tv_mac_ipv4_gtpu_ipv4_inner_srcip_queue_index, tv_mac_ipv4_gtpu_ipv4_inner_srcip_queue_group,
+                          tv_mac_ipv4_gtpu_ipv4_inner_srcip_passthru, tv_mac_ipv4_gtpu_ipv4_inner_srcip_drop,
+                          tv_mac_ipv4_gtpu_ipv4_inner_srcip_mark_rss,
+                          tv_mac_ipv4_gtpu_ipv4_inner_dstip_queue_index, tv_mac_ipv4_gtpu_ipv4_inner_dstip_queue_group,
+                          tv_mac_ipv4_gtpu_ipv4_inner_dstip_passthru, tv_mac_ipv4_gtpu_ipv4_inner_dstip_drop,
+                          tv_mac_ipv4_gtpu_ipv4_inner_dstip_mark_rss,
+                          tv_mac_ipv4_gtpu_ipv4_inner_tuple_queue_index, tv_mac_ipv4_gtpu_ipv4_inner_tuple_queue_group,
+                          tv_mac_ipv4_gtpu_ipv4_inner_tuple_passthru, tv_mac_ipv4_gtpu_ipv4_inner_tuple_drop,
+                          tv_mac_ipv4_gtpu_ipv4_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_ipv4_tcp = [tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_ipv4_udp = [tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_ipv4_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ipv4 = [tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_eh_ipv4_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_eh_ipv4_tcp = [tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ipv4_udp = [tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv4_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_dl_ipv4 = [tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv4_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_eh_dl_ipv4_tcp = [tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_dl_ipv4_udp = [tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv4_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ul_ipv4 = [tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv4_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_eh_ul_ipv4_tcp = [tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ul_ipv4_udp = [tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv4_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_ipv6 = [tv_mac_ipv4_gtpu_ipv6_inner_srcip_queue_index, tv_mac_ipv4_gtpu_ipv6_inner_srcip_queue_group,
+                         tv_mac_ipv4_gtpu_ipv6_inner_srcip_passthru, tv_mac_ipv4_gtpu_ipv6_inner_srcip_drop,
+                         tv_mac_ipv4_gtpu_ipv6_inner_srcip_mark_rss,
+                         tv_mac_ipv4_gtpu_ipv6_inner_dstip_queue_index, tv_mac_ipv4_gtpu_ipv6_inner_dstip_queue_group,
+                         tv_mac_ipv4_gtpu_ipv6_inner_dstip_passthru, tv_mac_ipv4_gtpu_ipv6_inner_dstip_drop,
+                         tv_mac_ipv4_gtpu_ipv6_inner_dstip_mark_rss,
+                         tv_mac_ipv4_gtpu_ipv6_inner_tuple_queue_index, tv_mac_ipv4_gtpu_ipv6_inner_tuple_queue_group,
+                         tv_mac_ipv4_gtpu_ipv6_inner_tuple_passthru, tv_mac_ipv4_gtpu_ipv6_inner_tuple_drop,
+                         tv_mac_ipv4_gtpu_ipv6_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_ipv6_tcp = [tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_tuple_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_drop,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_srcport_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_drop,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_inner_dstport_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_drop,
+                             tv_mac_ipv4_gtpu_ipv6_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_ipv6_udp = [tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_tuple_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_drop,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_srcport_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_drop,
+                             tv_mac_ipv4_gtpu_ipv6_udp_inner_dstport_mark_rss,
+                             tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_queue_group,
+                             tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_drop,
+                             tv_mac_ipv4_gtpu_ipv6_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ipv6 = [tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_eh_ipv6_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_eh_ipv6_tcp = [tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ipv6_udp = [tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ipv6_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_dl_ipv6 = [tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_eh_dl_ipv6_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_eh_dl_ipv6_tcp = [tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_dl_ipv6_udp = [tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_dl_ipv6_udp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ul_ipv6 = [tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_drop,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_srcip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_drop,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_dstip_mark_rss,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_queue_group,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_drop,
+                             tv_mac_ipv4_gtpu_eh_ul_ipv6_inner_tuple_mark_rss]
+
+vectors_ipv4_gtpu_eh_ul_ipv6_tcp = [tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_tcp_without_inputset_mark_rss]
+
+vectors_ipv4_gtpu_eh_ul_ipv6_udp = [tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstip_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_tuple_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_srcport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_inner_dstport_mark_rss,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_queue_index, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_queue_group,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_passthru, tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_drop,
+                                 tv_mac_ipv4_gtpu_eh_ul_ipv6_udp_without_inputset_mark_rss]
+
 class TestIAVFFdir(TestCase):
 
     def rte_flow_process(self, vectors):
@@ -2309,8 +7307,8 @@ class TestIAVFFdir(TestCase):
     def config_testpmd(self):
         self.pmd_output.execute_cmd("set fwd rxonly")
         self.pmd_output.execute_cmd("set verbose 1")
-        self.pmd_output.execute_cmd("vlan set filter on 0")
-        self.pmd_output.execute_cmd("rx_vlan add 1 0")
+        #self.pmd_output.execute_cmd("vlan set filter on 0")
+        #self.pmd_output.execute_cmd("rx_vlan add 1 0")
         # specify a fixed rss-hash-key for cvl ether
         self.pmd_output.execute_cmd(
             "port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd")
@@ -4184,6 +9182,196 @@ class TestIAVFFdir(TestCase):
         out = self.send_pkts_getouput(pkt_ipv4_pay_ipv6_pay)
         rfc.verify_iavf_fdir_directed_by_rss(out, stats=True)
 
+    def test_mac_ipv4_gtpu_ipv4(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_ipv4)
+
+    def test_mac_ipv4_gtpu_ipv4_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_ipv4_tcp)
+
+    def test_mac_ipv4_gtpu_ipv4_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_ipv4_udp)
+
+    def test_mac_ipv4_gtpu_eh_ipv4(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ipv4)
+
+    def test_mac_ipv4_gtpu_eh_ipv4_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ipv4_tcp)
+
+    def test_mac_ipv4_gtpu_eh_ipv4_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ipv4_udp)
+
+    def test_mac_ipv4_gtpu_eh_dl_ipv4(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_dl_ipv4)
+
+    def test_mac_ipv4_gtpu_eh_dl_ipv4_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_dl_ipv4_tcp)
+
+    def test_mac_ipv4_gtpu_eh_dl_ipv4_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_dl_ipv4_udp)
+
+    def test_mac_ipv4_gtpu_eh_ul_ipv4(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ul_ipv4)
+
+    def test_mac_ipv4_gtpu_eh_ul_ipv4_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ul_ipv4_tcp)
+
+    def test_mac_ipv4_gtpu_eh_ul_ipv4_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ul_ipv4_udp)
+
+    def test_mac_ipv4_gtpu_ipv6(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_ipv6)
+
+    def test_mac_ipv4_gtpu_ipv6_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_ipv6_tcp)
+
+    def test_mac_ipv4_gtpu_ipv6_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_ipv6_udp)
+
+    def test_mac_ipv4_gtpu_eh_ipv6(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ipv6)
+
+    def test_mac_ipv4_gtpu_eh_ipv6_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ipv6_tcp)
+
+    def test_mac_ipv4_gtpu_eh_ipv6_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ipv6_udp)
+
+    def test_mac_ipv4_gtpu_eh_dl_ipv6(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_dl_ipv6)
+
+    def test_mac_ipv4_gtpu_eh_dl_ipv6_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_dl_ipv6_tcp)
+
+    def test_mac_ipv4_gtpu_eh_dl_ipv6_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_dl_ipv6_udp)
+
+    def test_mac_ipv4_gtpu_eh_ul_ipv6(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ul_ipv6)
+
+    def test_mac_ipv4_gtpu_eh_ul_ipv6_tcp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ul_ipv6_tcp)
+
+    def test_mac_ipv4_gtpu_eh_ul_ipv6_udp(self):
+        self.rte_flow_process(vectors_ipv4_gtpu_eh_ul_ipv6_udp)
+
+    def _rte_conflict_rule(self, conflict_rule, rule, match_pkt, stats=True):
+        check_param = {"port_id": 0, "mark_id": 1, "queue": 10}
+
+        self.create_fdir_rule(conflict_rule, check_stats=False)
+        rule_id = self.create_fdir_rule(rule, check_stats=True)
+        out = self.send_pkts_getouput(pkts=match_pkt)
+        pkt_num = len(match_pkt)
+        rfc.check_iavf_fdir_mark(out, pkt_num=pkt_num, check_param=check_param)
+        if int(rule_id[0]) > 1:
+            rule_id = int(rule_id[0]) - 1
+        else:
+            rule_id = 0
+        if stats:
+            self.destroy_fdir_rule(rule_id)
+
+    def _create_check_conflict_rule(self, rules, pkts):
+        self.create_fdir_rule(rules[0], check_stats=True)
+        pkt_list = [pkts[0], pkts[3]]
+        self._rte_conflict_rule(rules[1:3], rules[3], pkt_list)
+
+        pkt_list = [pkts[1], pkts[3]]
+        self._rte_conflict_rule(rules[5:], rules[1], pkt_list)
+
+        pkt_list = [pkts[1], pkts[4]]
+        self._rte_conflict_rule(rules[0], rules[4], pkt_list)
+
+        c_rules = [rules[3], rules[4], rules[7], rules[9], rules[10]]
+        pkt_list = [pkts[4], pkts[5]]
+        self._rte_conflict_rule(c_rules, rules[5], pkt_list)
+
+        c_rules = [rules[3], rules[6], rules[8], rules[9], rules[11]]
+        pkt_list = [pkts[5], pkts[7]]
+        self._rte_conflict_rule(c_rules, rules[7], pkt_list)
+
+        c_rules = [rules[3], rules[4], rules[6]]
+        pkt_list = [pkts[7], pkts[8]]
+        self._rte_conflict_rule(c_rules, rules[8], pkt_list)
+
+        c_rules = [rules[3], rules[5], rules[6]]
+        pkt_list = [pkts[8], pkts[9]]
+        self._rte_conflict_rule(c_rules, rules[9], pkt_list)
+
+        c_rules = [rules[3], rules[4], rules[5], rules[9], rules[10], rules[11]]
+        pkt_list = [pkts[6], pkts[9]]
+        self._rte_conflict_rule(c_rules, rules[6], pkt_list)
+
+        c_rules = [rules[3], rules[4], rules[5], rules[7], rules[8]]
+        pkt_list = [pkts[6], pkts[10]]
+        self._rte_conflict_rule(c_rules, rules[10], pkt_list, stats=False)
+
+        c_rules = [rules[3], rules[4], rules[5], rules[7], rules[8], rules[9]]
+        pkt_list = [pkts[6], pkts[10], pkts[11]]
+        self._rte_conflict_rule(c_rules, rules[11], pkt_list, stats=False)
+
+        c_rules = [rules[3], rules[4], rules[5], rules[7], rules[8], rules[9]]
+        pkt_list = [pkts[2], pkts[6], pkts[10], pkts[11]]
+        self._rte_conflict_rule(c_rules, rules[2], pkt_list, stats=False)
+
+    def test_mac_inner_ipv4_gtpu_conflict_rule(self):
+        rules = ["flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+                 "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end"]
+
+        pkts = ['Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw("x"*20)',
+                'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw("x"*20)']
+
+        self._create_check_conflict_rule(rules, pkts)
+
+    def test_mac_inner_ipv6_gtpu_conflict_rule(self):
+        rules = [
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end",
+            "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end"]
+
+        pkts = [
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw("x"*20)',
+            'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw("x"*20)']
+
+        self._create_check_conflict_rule(rules, pkts)
+
     def tear_down(self):
         # destroy all flow rule on port 0
         self.dut.kill_all()
-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dts] [PATCH v1 1/2] test_plans/iavf_fdir: add new test plans
  2021-06-03 14:29 ` [dts] [PATCH v1 1/2] test_plans/iavf_fdir: add new test plans Hailin Xu
@ 2021-06-07  9:07   ` Lin, Xueqin
  0 siblings, 0 replies; 6+ messages in thread
From: Lin, Xueqin @ 2021-06-07  9:07 UTC (permalink / raw)
  To: Xu, HailinX, dts

Hi Halin,

1. Could you help to clarify input is outer or inner part such as below.

+    | IPv4 + GTP-U + inner IPv4    |MAC_IPV4_GTPU_IPV4            | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV4_UDP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
    

[Source IP], [Dest IP], [Source Port], [Dest Port]--> inner: [Source IP], [Dest IP], [Source Port], [Dest Port]

2. Wrong for below inner IPv6 table, input should be ipv6 not IP, such as   inner: [Souce IPV6], [Dest IPV6]


+    | IPv4 + GTP-U + inner IPv6    |MAC_IPV4_GTPU_IPV6            | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV6_UDP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_IPV6_TCP        | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV6         | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV6_UDP     | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_IPV6_TCP     | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6      | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_UDP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_TCP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6      | [Source IP], [Dest IP]                                            |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_UDP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+
+    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_TCP  | [Source IP], [Dest IP], [Source Port], [Dest Port]                |
+    +------------------------------+------------------------------+-------------------------------------------------------------------+Best regards,
Xueqin

> -----Original Message-----
> From: Xu, HailinX <hailinx.xu@intel.com>
> Sent: Thursday, June 3, 2021 10:29 PM
> To: dts@dpdk.org
> Cc: Lin, Xueqin <xueqin.lin@intel.com>; Xu, HailinX <hailinx.xu@intel.com>
> Subject: [dts][PATCH v1 1/2] test_plans/iavf_fdir: add new test plans
> 
> Add fdir with gtpu inner l3/l4 test palns.
> 
> Signed-off-by: Hailin Xu <hailinx.xu@intel.com>
> ---
>  test_plans/iavf_fdir_test_plan.rst | 1725 +++++++++++++++++++++++++++-
>  1 file changed, 1669 insertions(+), 56 deletions(-)
> 
> diff --git a/test_plans/iavf_fdir_test_plan.rst
> b/test_plans/iavf_fdir_test_plan.rst
> index 1fd7b61b..4d339384 100644
> --- a/test_plans/iavf_fdir_test_plan.rst
> +++ b/test_plans/iavf_fdir_test_plan.rst
> @@ -46,59 +46,107 @@ Description
>  Pattern and input set
>  ---------------------
> 
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |    Packet Type               |        Pattern             |            Input Set
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    | IPv4/IPv6 + TCP/UDP/SCTP     |      MAC_IPV4_PAY          | [Source IP], [Dest
> IP], [IP protocol], [TTL], [DSCP]              |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV4_UDP          | [Source IP], [Dest IP], [TTL],
> [DSCP], [Source Port], [Dest Port] |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV4_TCP          | [Source IP], [Dest IP], [TTL],
> [DSCP], [Source Port], [Dest Port] |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV4_SCTP         | [Source IP], [Dest IP], [TTL],
> [DSCP], [Source Port], [Dest Port] |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_PAY          | [Source IP], [Dest IP], [IP
> protocol], [TTL], [TC]                |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_UDP          | [Source IP], [Dest IP], [TTL],
> [TC], [Source Port], [Dest Port]   |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_TCP          | [Source IP], [Dest IP], [TTL],
> [TC], [Source Port], [Dest Port]   |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_SCTP         | [Source IP], [Dest IP], [TTL],
> [TC], [Source Port], [Dest Port]   |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    | L2 Ethertype                 |      L2 Ethertype          | [Ethertype]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    | PFCP                         |   MAC_IPV4_PFCP_NODE       | [Dest Port], [S-field]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |   MAC_IPV4_PFCP_SESSION    | [Dest Port], [S-field]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |   MAC_IPV6_PFCP_NODE       | [Dest Port], [S-field]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |   MAC_IPV6_PFCP_SESSION    | [Dest Port], [S-field]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    | IPv4/IPv6 + GTP-U            |   MAC_IPV4_GTPU            | [Source IP], [Dest IP],
> [TEID]                                    |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |   MAC_IPV4_GTPU_EH         | [Source IP], [Dest IP],
> [TEID], [QFI]                             |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |   MAC_IPV6_GTPU            | [Source IPV6], [Dest IPV6],
> [TEID]                                |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |   MAC_IPV6_GTPU_EH         | [Source IPV6], [Dest IPV6],
> [TEID], [QFI]                         |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    | L2TPv3                       |      MAC_IPV4_L2TPv3       | [Session ID]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_L2TPv3       | [Session ID]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    | ESP                          |      MAC_IPV4_ESP          | [SPI]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_ESP          | [SPI]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV4_AH           | [SPI]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |      MAC_IPV6_AH           | [SPI]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |     MAC_IPV4_NAT-T-ESP     | [Source IP], [Dest IP], [SPI]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> -    |                              |     MAC_IPV6_NAT-T-ESP     | [Source IP], [Dest IP], [SPI]
> |
> -    +------------------------------+----------------------------+-------------------------------------
> ------------------------------+
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |    Packet Type               |        Pattern               |            Input Set
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | IPv4/IPv6 + TCP/UDP/SCTP     |MAC_IPV4_PAY                  | [Source IP],
> [Dest IP], [IP protocol], [TTL], [DSCP]              |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_UDP                  | [Source IP], [Dest IP], [TTL],
> [DSCP], [Source Port], [Dest Port] |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_TCP                  | [Source IP], [Dest IP], [TTL],
> [DSCP], [Source Port], [Dest Port] |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_SCTP                 | [Source IP], [Dest IP], [TTL],
> [DSCP], [Source Port], [Dest Port] |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_PAY                  | [Source IP], [Dest IP], [IP
> protocol], [TTL], [TC]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_UDP                  | [Source IP], [Dest IP], [TTL],
> [TC], [Source Port], [Dest Port]   |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_TCP                  | [Source IP], [Dest IP], [TTL],
> [TC], [Source Port], [Dest Port]   |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_SCTP                 | [Source IP], [Dest IP], [TTL],
> [TC], [Source Port], [Dest Port]   |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | L2 Ethertype                 |L2 Ethertype                  | [Ethertype]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | PFCP                         |MAC_IPV4_PFCP_NODE            | [Dest Port], [S-field]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_PFCP_SESSION         | [Dest Port], [S-field]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_PFCP_NODE            | [Dest Port], [S-field]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_PFCP_SESSION         | [Dest Port], [S-field]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | L2TPv3                       |MAC_IPV4_L2TPv3               | [Session ID]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_L2TPv3               | [Session ID]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | ESP                          |MAC_IPV4_ESP                  | [SPI]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_ESP                  | [SPI]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_AH                   | [SPI]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_AH                   | [SPI]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_NAT-T-ESP            | [Source IP], [Dest IP],
> [SPI]                                     |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_NAT-T-ESP            | [Source IP], [Dest IP],
> [SPI]                                     |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | IPv4 + GTP-U  outer          |MAC_IPV4_GTPU                 | [Source IP], [Dest
> IP], [TEID]                                    |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH              | [Source IP], [Dest IP],
> [TEID], [QFI]                             |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | IPv6 + GTP-U  outer          |MAC_IPV6_GTPU                 | [Source IPV6],
> [Dest IPV6], [TEID]                                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV6_GTPU_EH              | [Source IPV6], [Dest
> IPV6], [TEID], [QFI]                         |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | IPv4 + GTP-U + inner IPv4    |MAC_IPV4_GTPU_IPV4            | [Source IP],
> [Dest IP]                                            |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_IPV4_UDP        | [Source IP], [Dest IP],
> [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_IPV4_TCP        | [Source IP], [Dest IP],
> [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_IPV4         | [Source IP], [Dest IP]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_IPV4_UDP     | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_IPV4_TCP     | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_DL_IPV4      | [Source IP], [Dest IP]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_DL_IPV4_UDP  | [Source IP],
> [Dest IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_DL_IPV4_TCP  | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV4      | [Source IP], [Dest IP]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV4_UDP  | [Source IP],
> [Dest IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV4_TCP  | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    | IPv4 + GTP-U + inner IPv6    |MAC_IPV4_GTPU_IPV6            | [Source IP],
> [Dest IP]                                            |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_IPV6_UDP        | [Source IP], [Dest IP],
> [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_IPV6_TCP        | [Source IP], [Dest IP],
> [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_IPV6         | [Source IP], [Dest IP]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_IPV6_UDP     | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_IPV6_TCP     | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV6      | [Source IP], [Dest IP]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_UDP  | [Source IP],
> [Dest IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_TCP  | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV6      | [Source IP], [Dest IP]
> |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_UDP  | [Source IP],
> [Dest IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> +    |                              |MAC_IPV4_GTPU_EH_UL_IPV6_TCP  | [Source IP], [Dest
> IP], [Source Port], [Dest Port]                |
> +    +------------------------------+------------------------------+-----------------------------------
> --------------------------------+
> 
> 
>  Supported function type
> @@ -191,7 +239,7 @@ Default parameters
> 
>      [Dest MAC]: 00:11:22:33:44:88
> 
> -   IPv4::
> +   outer/inner IPv4::
> 
>      [Source IP]: 192.168.0.20
>      [Dest IP]: 192.168.0.21
> @@ -199,7 +247,7 @@ Default parameters
>      [TTL]: 2
>      [DSCP]: 4
> 
> -   IPv6::
> +   outer/inner IPv6::
> 
>      [Source IPv6]: 2001::2
>      [Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020
> @@ -582,6 +630,382 @@ Send packets
> 
> sendp(Ether(dst='00:11:22:33:44:55')/IPv6(dst="1111:2222:3333:4444:5555:6
> 666:7777:9999")/UDP(dport=4500)/ESP(spi=2)/Raw('x'*480),iface="enp134s0f
> 1")
> 
> sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="1111:2222:3333:4444:5555:6
> 666:7777:8888")/UDP(dport=4500)/ESP(spi=2)/Raw('x'*480),iface="enp134s0f
> 1")
> 
> +* MAC_IPV4_GTPU_IPV4
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.22", dst="192.168.0.23")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/SCTP()/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/Raw('
> x'*20)
> +
> +* MAC_IPV4_GTPU_IPV4_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.22", dst="192.168.0.23")/TCP(sport=24, dport=25)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/TCP(s
> port=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'
> *20)
> +
> +* MAC_IPV4_GTPU_IPV4_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.22", dst="192.168.0.23")/UDP(sport=24, dport=25)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/UDP(
> sport=22, dport=23)/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_IPV4
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_IPV4_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25,
> dport=24)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_IPV4_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25,
> dport=24)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_DL_IPV4
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21",
> frag=1)/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP()/Raw('x'*20)
> +    pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_DL_IPV4_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.22",
> dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_DL_IPV4_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.22",
> dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_UL_IPV4
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21",
> frag=1)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP()/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/SCTP()/Raw('x'*20)
> +    pkt16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/Raw('x'*20)
> +    pkt17 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_UL_IPV4_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.22",
> dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/Raw('x'*20)
> +    pkt16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt17 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_UL_IPV4_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.22",
> dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/Raw('x'*20)
> +    pkt16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +    pkt17 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +
> +* MAC_IPV4_GTPU_IPV6
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'
> *20)
> +
> +* MAC_IPV4_GTPU_IPV6_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/TCP(spo
> rt=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'
> *20)
> +
> +* MAC_IPV4_GTPU_IPV6_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/UDP(sp
> ort=22, dport=23)/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_IPV6
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_IPV6_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_IPV6_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_DL_IPV6
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
> +    pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_DL_IPV6_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_DL_IPV6_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_UL_IPV6
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
> +    pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
> +    pkt16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_UL_IPV6_TCP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    pkt17 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP()/Raw('x'*20)
> +
> +* MAC_IPV4_GTPU_EH_UL_IPV6_UDP
> +
> +   matched packets::
> +
> +    pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +   mismatched packets::
> +
> +    pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::4",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24,
> dport=25)/Raw('x'*20)
> +    pkt14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +    pkt16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +    pkt17 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> 
>  Test case: flow validation
>  ==========================
> @@ -4816,4 +5240,1193 @@ Test Case:
> MAC_IPV6_UDP_WITHOUT_INPUT_SET
> 
>  1. replace "tcp" with "udp" in all the subcases of
> MAC_IPV6_TCP_WITHOUT_INPUT_SET pattern.
>  2. Then repeat all the steps in all the subcases of
> MAC_IPV6_TCP_WITHOUT_INPUT_SET pattern.
> -3. get the same result.
> \ No newline at end of file
> +3. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_IPV4 pattern
> +=====================================
> +
> +Subcase 1: MAC_IPV4_GTPU_IPV4 inner src ip queue index
> +------------------------------------------------------
> +all index cases steps and expected result are the same
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / end actions queue index 1 / mark id 1 / end
> +
> +2. send matched packets, check the packets are distributed to queue 1 with
> FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are not distributed to queue 1
> without FDIR matched ID.
> +
> +3. verify rules can be listed and destroyed::
> +
> +    testpmd> flow list 0
> +
> +   check the rule listed.
> +   destroy the rule::
> +
> +    testpmd> flow destroy 0 rule 0
> +
> +4. verify matched packets are received without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 2: MAC_IPV4_GTPU_IPV4 inner src ip rss queues
> +-----------------------------------------------------
> +all rss queues cases steps and expected result are the same
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end
> +
> +2. send matched packets, check the packets are distributed to queue 2 or
> queue 3 with FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are received without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 3: MAC_IPV4_GTPU_IPV4 inner src ip passthru
> +---------------------------------------------------
> +all passthru cases steps and expected result are the same
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / end actions passthru / mark id 1 / end
> +
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are received without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 4: MAC_IPV4_GTPU_IPV4 inner src ip drop
> +-----------------------------------------------
> +all drop cases steps and expected result are the same
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / end actions drop / end
> +
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are not dropped.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are not dropped.
> +   Then check there is no rule listed.
> +
> +Subcase 5: MAC_IPV4_GTPU_IPV4 inner src ip mark+rss
> +---------------------------------------------------
> +all mark+rss cases steps and expected result are the same
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / end actions rss / mark / end
> +
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are received without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 6: MAC_IPV4_GTPU_IPV4 inner dst ip queue index
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of subcase 1.
> +
> +Subcase 7: MAC_IPV4_GTPU_IPV4 inner dst ip rss queues
> +-----------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of subcase 2.
> +
> +Subcase 8: MAC_IPV4_GTPU_IPV4 inner dst ip passthru
> +---------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of subcase 3.
> +
> +Subcase 9: MAC_IPV4_GTPU_IPV4 inner dst ip drop
> +------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / end actions drop / end
> +
> +replace rule and repeat step of subcase 4.
> +
> +Subcase 10: MAC_IPV4_GTPU_IPV4 inner dst ip mark+rss
> +----------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / end actions rss / mark / end
> +
> +replace rule and repeat step of subcase 5.
> +
> +Subcase 11: MAC_IPV4_GTPU_IPV4 2 tuple queue index
> +--------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 12: MAC_IPV4_GTPU_IPV4 2 tuple queue group
> +--------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 /
> end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 13: MAC_IPV4_GTPU_IPV4 2 tuple passthru
> +-----------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of subcase 3.
> +
> +Subcase 14: MAC_IPV4_GTPU_IPV4 2 tuple drop
> +-------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
> +
> +replace rule and repeat step of subcase 4.
> +
> +Subcase 15: MAC_IPV4_GTPU_IPV4 2 tuple mark/rss
> +-----------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end
> +
> +replace rule and repeat step of subcase 5.
> +
> +Test case: MAC_IPV4_GTPU_IPV4_TCP pattern
> +=========================================
> +
> +Subcase 1: MAC_IPV4_GTPU_IPV4_TCP inner src ip queue index
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 2: MAC_IPV4_GTPU_IPV4_TCP inner src ip rss queues
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 3: MAC_IPV4_GTPU_IPV4_TCP inner src ip passthru
> +-------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / tcp / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 4: MAC_IPV4_GTPU_IPV4_TCP inner src ip drop
> +---------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / tcp / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 5: MAC_IPV4_GTPU_IPV4_TCP inner src ip mark+rss
> +-------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 / tcp / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 6: MAC_IPV4_GTPU_IPV4_TCP inner dst ip queue index
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 7: MAC_IPV4_GTPU_IPV4_TCP inner dst ip rss queues
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 8: MAC_IPV4_GTPU_IPV4_TCP inner dst ip passthru
> +-------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / tcp / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 9: MAC_IPV4_GTPU_IPV4_TCP inner dst ip drop
> +----------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / tcp / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 10: MAC_IPV4_GTPU_IPV4_TCP inner dst ip mark+rss
> +--------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is
> 192.168.0.21 / tcp / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 11: MAC_IPV4_GTPU_IPV4_TCP 4 tuple queue index
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 12: MAC_IPV4_GTPU_IPV4_TCP 4 tuple queue group
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss
> queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 13: MAC_IPV4_GTPU_IPV4_TCP 4 tuple passthru
> +---------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru
> / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 14: MAC_IPV4_GTPU_IPV4_TCP 4 tuple drop
> +-----------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop /
> end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 15: MAC_IPV4_GTPU_IPV4_TCP 4 tuple mark/rss
> +---------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss/ mark
> / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 16: MAC_IPV4_GTPU_IPV4_TCP inner src port queue index
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 /
> end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 17: MAC_IPV4_GTPU_IPV4_TCP inner src port queue group
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 /
> end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 18: MAC_IPV4_GTPU_IPV4_TCP inner src port passthru
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 /
> end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 19: MAC_IPV4_GTPU_IPV4_TCP inner src port drop
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 /
> end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 20: MAC_IPV4_GTPU_IPV4_TCP inner src port mark/rss
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 /
> end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 21: MAC_IPV4_GTPU_IPV4_TCP inner dst port queue index
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 /
> end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 22: MAC_IPV4_GTPU_IPV4_TCP inner dst port queue group
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 /
> end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 23: MAC_IPV4_GTPU_IPV4_TCP inner dst port passthru
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 /
> end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 24: MAC_IPV4_GTPU_IPV4_TCP inner dst port drop
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 /
> end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 25: MAC_IPV4_GTPU_IPV4_TCP inner dst port mark/rss
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 /
> end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 26: MAC_IPV4_GTPU_IPV4_TCP without inputset queue index
> +---------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end
> actions mark id 1 / rss / end
> +
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x1::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/TCP()/
> ("X"*480)], iface="ens192f0")
> +
> +   send mismatched packets, check the packets are redirected by RSS without
> FDIR matched ID::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/("X"*
> 480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/UDP()
> /("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/SCTP(
> )/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/ICMP(
> )/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/TCP
> ()/("X"*480)], iface="ens192f0")
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR matched ID.
> +   check there is no rule listed.
> +
> +Subcase 27: MAC_IPV4_GTPU_IPV4_TCP without inputset queue group
> +---------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 src / udp / gtpu / ipv4 / tcp / end
> actions rss queues 0 1 2 3 end / mark id 1 / end
> +
> +2. send matched packets of subcase 26, check the packets are distributed to
> queue group with FDIR matched ID=0x1.
> +   send mismatched packets of subcase 26, check the packets are distributed
> by RSS without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 28: MAC_IPV4_GTPU_IPV4_TCP without inputset passthru
> +------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end
> actions passthru / mark id 1 / end
> +
> +2. send matched packets of subcase 26, check the packets are redirected by
> RSS with FDIR matched ID=0x1.
> +   send mismatched packets of subcase 26, check the packets are redirected by
> RSS without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR ID.
> +   check there is no rule listed.
> +
> +Subcase 29: MAC_IPV4_GTPU_IPV4_TCP without inputset drop
> +--------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end
> actions drop / end
> +
> +2. send matched packets of subcase 26, check the packets are dropped.
> +   send mismatched packets of subcase 26, check the packets are not dropped
> without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are not dropped without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 30: MAC_IPV4_GTPU_IPV4_TCP without inputset mark/rss
> +------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end
> actions rss / mark / end
> +
> +2. send matched packets of subcase 26, check the packets are redirected by
> RSS with FDIR matched ID=0x0.
> +   send mismatched packets of subcase 26, check the packets are redirected by
> RSS without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR matched ID.
> +   check there is no rule listed.
> +
> +Test case: MAC_IPV4_GTPU_IPV4_UDP pattern
> +=========================================
> +
> +1. replace "tcp" with "udp" in all the subcases of MAC_IPV4_GTPU_IPV4_TCP
> pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_TCP
> pattern.
> +3. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_IPV4 pattern
> +========================================
> +
> +Subcase 1: MAC_IPV4_GTPU_EH_IPV4 inner src ip queue index
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 2: MAC_IPV4_GTPU_EH_IPV4 inner src ip rss queues
> +--------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 3: MAC_IPV4_GTPU_EH_IPV4 inner src ip passthru
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 4: MAC_IPV4_GTPU_EH_IPV4 inner src ip drop
> +--------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 5: MAC_IPV4_GTPU_EH_IPV4 inner src ip mark+rss
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 6: MAC_IPV4_GTPU_EH_IPV4 inner dst ip queue index
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 7: MAC_IPV4_GTPU_EH_IPV4 inner dst ip rss queues
> +--------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 8: MAC_IPV4_GTPU_EH_IPV4 inner dst ip passthru
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 9: MAC_IPV4_GTPU_EH_IPV4 inner dst ip drop
> +---------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 10: MAC_IPV4_GTPU_EH_IPV4 inner dst ip mark+rss
> +-------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 11: MAC_IPV4_GTPU_EH_IPV4 2 tuple queue index
> +-----------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 12: MAC_IPV4_GTPU_EH_IPV4 2 tuple queue group
> +-----------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 /
> end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 13: MAC_IPV4_GTPU_EH_IPV4 2 tuple passthru
> +--------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 14: MAC_IPV4_GTPU_EH_IPV4 2 tuple drop
> +----------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 15: MAC_IPV4_GTPU_EH_IPV4 2 tuple mark/rss
> +--------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark id 1 / rss / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +
> +Test case: MAC_IPV4_GTPU_EH_IPV4_TCP pattern
> +============================================
> +
> +Subcase 1: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip queue index
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 2: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip rss queues
> +------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 3: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip passthru
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / tcp / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 4: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip drop
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / tcp / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 5: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip mark+rss
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 / tcp / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 6: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip queue index
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 7: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip rss queues
> +------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 8: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip passthru
> +----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / tcp / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 9: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip drop
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / tcp / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 10: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip mark+rss
> +-----------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is
> 192.168.0.21 / tcp / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 11: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple queue index
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 12: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple queue group
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss
> queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 13: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple passthru
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru
> / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 14: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple drop
> +--------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop /
> end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 15: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple mark/rss
> +------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark
> / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 16: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port queue index
> +----------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> src is 22 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 17: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port queue group
> +----------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> src is 22 / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 18: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port passthru
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> src is 22 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 19: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port drop
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> src is 22 / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 20: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port mark/rss
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> src is 22 / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 21: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port queue index
> +----------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> dst is 23 / end actions queue index 1 / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.
> +
> +Subcase 22: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port queue group
> +----------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> dst is 23 / end actions rss queues 2 3 end / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.
> +
> +Subcase 23: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port passthru
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> dst is 23 / end actions passthru / mark id 1 / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.
> +
> +Subcase 24: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port drop
> +---------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> dst is 23 / end actions drop / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.
> +
> +Subcase 25: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port mark/rss
> +-------------------------------------------------------------
> +
> +rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp
> dst is 23 / end actions rss / mark / end
> +
> +replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.
> +
> +Subcase 26: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset queue index
> +------------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp /
> end actions mark id 1 / rss / end
> +
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x1::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> +   send mismatched packets, check the packets are redirected by RSS without
> FDIR matched ID::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/UDP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/SCTP()("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/ICMP()("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IPv6()/TCP()/("X"*480)], iface="ens192f0")
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR matched ID.
> +   check there is no rule listed.
> +
> +Subcase 27: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset queue group
> +------------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 src / udp / gtpu / gtp_psc / ipv4 /
> tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end
> +
> +2. send matched packets of subcase 26, check the packets are distributed to
> queue group with FDIR matched ID=0x1.
> +   send mismatched packets of subcase 26, check the packets are distributed
> by RSS without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 28: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset passthru
> +---------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp /
> end actions passthru / mark id 1 / end
> +
> +2. send matched packets of subcase 26, check the packets are redirected by
> RSS with FDIR matched ID=0x1.
> +   send mismatched packets of subcase 26, check the packets are redirected by
> RSS without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR ID.
> +   check there is no rule listed.
> +
> +Subcase 29: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset drop
> +-----------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp /
> end actions drop / end
> +
> +2. send matched packets of subcase 26, check the packets are dropped.
> +   send mismatched packets of subcase 26, check the packets are not dropped
> without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are not dropped without FDIR matched ID.
> +   Then check there is no rule listed.
> +
> +Subcase 30: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset mark/rss
> +---------------------------------------------------------------
> +
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp /
> end actions rss / mark / end
> +
> +2. send matched packets of subcase 26, check the packets are redirected by
> RSS with FDIR matched ID=0x0.
> +   send mismatched packets of subcase 26, check the packets are redirected by
> RSS without FDIR matched ID.
> +
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed by RSS without FDIR matched ID.
> +   check there is no rule listed.
> +
> +Test case: MAC_IPV4_GTPU_EH_IPV4_UDP pattern
> +============================================
> +
> +1. replace "tcp" with "udp" in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +2. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +3. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern
> +===============================================
> +
> +without inputset match packets::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> +without inputset mismatch packets::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IP()/UDP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IP()/ICMP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IPv6()/TCP()/("X"*480)], iface="ens192f0")
> +
> +1. replace "gtp_psc" with "gtp_psc pdu_t is 0" in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +2. replace without inputset packets in the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +4. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_DL_IPV4_UDP pattern
> +===============================================
> +
> +1. replace "tcp" with "udp" in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
> +2. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
> +3. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_UL_IPV4 pattern
> +===========================================
> +
> +1. replace "gtp_psc" with "gtp_psc pdu_t is 1" in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4 pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4
> pattern.
> +3. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern
> +===============================================
> +
> +without inputset match packets::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> +without inputset mismatch packets::
> +
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/UDP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/SCTP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IP()/ICMP()/("X"*480)], iface="ens192f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSe
> ssionContainer(type=1)/IPv6()/TCP()/("X"*480)], iface="ens192f0")
> +
> +1. replace "gtp_psc" with "gtp_psc pdu_t is 1" in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +2. replace without inputset packets in the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +4. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_UL_IPV4_UDP pattern
> +===============================================
> +1. replace "tcp" with "udp" in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
> +2. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
> +3. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_IPV6 pattern
> +=====================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_IPV4 pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_IPV4 pattern.
> +3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4
> pattern.
> +4. get the same result
> +
> +Test case: MAC_IPV4_GTPU_IPV6_TCP pattern
> +=========================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_IPV4_TCP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_IPV4_TCP pattern.
> +3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_TCP
> pattern.
> +4. get the same result
> +
> +Test case: MAC_IPV4_GTPU_IPV6_UDP pattern
> +=========================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_IPV4_UDP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_IPV4_UDP pattern.
> +3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_UDP
> pattern.
> +4. get the same result
> +
> +Test case: MAC_IPV4_GTPU_EH_IPV6_TCP pattern
> +============================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
> +4. get the same result
> +
> +Test case: MAC_IPV4_GTPU_EH_IPV6_UDP pattern
> +============================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
> +4. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_DL_IPV6_TCP pattern
> +===============================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
> +4. get the same result
> +
> +Test case: MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern
> +===============================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
> +4. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_UL_IPV6_TCP pattern
> +===============================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
> +4. get the same result.
> +
> +Test case: MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern
> +===============================================
> +1. replace inner "ipv4" with "ipv6" in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
> +2. replace inner ipv4 src/dst ip with ipv6 src/dst vlaue in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
> +3. Then repeat all the steps in all the subcases of
> MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
> +4. get the same result.
> +
> +Test case: GTPU inner co-exist test
> +===================================
> +
> +Subcase 1: inner IPv4 gtpu conflict rule
> +-----------------------------------------
> +
> +Rules::
> +
> +   #1 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
> +   #2 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 10 / mark id 1 / end
> +   #3 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 10 / mark id 1 / end
> +   #4 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
> +   #5 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 10 / mark id 1 / end
> +   #6 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 10 / mark id 1 / end
> +   #7 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 /
> ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 /
> mark id 1 / end
> +   #8 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 /
> ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions
> queue index 10 / mark id 1 / end
> +   #9 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 /
> ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end
> actions queue index 10 / mark id 1 / end
> +   #10 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1
> / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 /
> mark id 1 / end
> +   #11 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1
> / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end
> actions queue index 10 / mark id 1 / end
> +   #12 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1
> / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end
> actions queue index 10 / mark id 1 / end
> +
> +packets::
> +
> +   pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +   pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +   pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.
> 168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +   pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +   pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt7 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +   pkt8 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +   pkt9 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +   pkt10 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
> +   pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
> +   pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
> +
> +1. First create #1 rule, verify #2/3 rule create failed and #4 create successfully.
> +   send match packets(pkt1/4), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +2. destroy #1 rule, verify #5-12 any rule create failed and #2 create
> successfully.
> +   send match packets(pkt2/4), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +3. destroy #4 rule, verify #1 rule create failed and #5 create successfully.
> +   send match packets(pkt2/5), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +4. destroy #2 rule, verify #4/7/8/10/11 rule create failed and #6 create
> successfully.
> +   send match packets(pkt5/6), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +5. destroy #5 rule, verify #4/7/9/10/12 rule create failed and #8 create
> successfully.
> +   send match packets(pkt6/8), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +6. destroy #6 rule, verify #4/5/7 rule create failed and #9 create successfully.
> +   send match packets(pkt8/9), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +7. destroy #8 rule, verify #4/6/7 rule create failed and #10 create successfully.
> +   send match packets(pkt9/10), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +8. destroy #9 rule, verify #4/5/6/11/12 rule create failed and #7 create
> successfully.
> +   send match packets(pkt7/10), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +9. destroy #10 rule, verify #4/5/6/8/9 rule create failed and #11 create
> successfully.
> +   send match packets(pkt7/11), check the packets are distributed to queue 10
> with FDIR matched ID=0x1.
> +
> +10. verify #4/5/6/8/9/10 rule create failed and #12 create successfully.
> +   send match packets(pkt7/11/12), check the packets are distributed to queue
> 10 with FDIR matched ID=0x1.
> +
> +11. verify #4/5/6/8/9/10 rule create failed and #3 create successfully.
> +   send match packets(pkt3/7/11/12), check the packets are distributed to
> queue 10 with FDIR matched ID=0x1.
> +
> +Subcase 2: inner IPv6 gtpu conflict rule
> +----------------------------------------
> +
> +Rules::
> +
> +   #1 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2
> dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index
> 10 / mark id 1 / end
> +   #2 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2
> dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 /
> end actions queue index 10 / mark id 1 / end
> +   #3 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2
> dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 /
> end actions queue index 10 / mark id 1 / end
> +   #4 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is
> 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions
> queue index 10 / mark id 1 / end
> +   #5 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is
> 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst
> is 23 / end actions queue index 10 / mark id 1 / end
> +   #6 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is
> 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst
> is 23 / end actions queue index 10 / mark id 1 / end
> +   #7 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 /
> ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end
> actions queue index 10 / mark id 1 / end
> +   #8 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 /
> ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src
> is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
> +   #9 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 /
> ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp
> src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
> +   #10 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1
> / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end
> actions queue index 10 / mark id 1 / end
> +   #11 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1
> / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp
> src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
> +   #12 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1
> / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp
> src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
> +
> +packets::
> +
> +   pkt1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +   pkt2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2
> 001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +   pkt5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer()/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt7 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +   pkt8 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt9 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=0)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt10 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
> +   pkt11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,
> dport=23)/Raw('x'*20)
> +   pkt12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSes
> sionContainer(type=1)/IPv6(src="2001::2",
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,
> dport=23)/Raw('x'*20)
> +
> +repeat step 1-12 of subcase 1.
> \ No newline at end of file
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases
  2021-06-03 14:29 ` [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases Hailin Xu
  2021-06-03  7:06   ` Xu, HailinX
@ 2021-06-07  9:23   ` Lin, Xueqin
  1 sibling, 0 replies; 6+ messages in thread
From: Lin, Xueqin @ 2021-06-07  9:23 UTC (permalink / raw)
  To: Xu, HailinX, dts

> -----Original Message-----
> From: Xu, HailinX <hailinx.xu@intel.com>
> Sent: Thursday, June 3, 2021 10:29 PM
> To: dts@dpdk.org
> Cc: Lin, Xueqin <xueqin.lin@intel.com>; Xu, HailinX <hailinx.xu@intel.com>
> Subject: [dts][PATCH v1 2/2] tests/iavf_fdir: add new test cases
> 
> Add fdir with gtpu inner l3/l4 test cases.
> 
> Signed-off-by: Hailin Xu <hailinx.xu@intel.com>
Acked-by: Xueqin Lin <Xueqin.lin@intel.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-06-07  9:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-03 14:28 [dts] [PATCH v1 0/2] add new test plans and test cases Hailin Xu
2021-06-03 14:29 ` [dts] [PATCH v1 1/2] test_plans/iavf_fdir: add new test plans Hailin Xu
2021-06-07  9:07   ` Lin, Xueqin
2021-06-03 14:29 ` [dts] [PATCH v1 2/2] tests/iavf_fdir: add new test cases Hailin Xu
2021-06-03  7:06   ` Xu, HailinX
2021-06-07  9:23   ` Lin, Xueqin

test suite reviews and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dts/0 dts/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dts dts/ https://inbox.dpdk.org/dts \
		dts@dpdk.org
	public-inbox-index dts

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dts


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git