test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH] framework/flow: Update rteflow for new scapy versions
@ 2021-08-23 19:02 ohilyard
  2021-09-06  7:09 ` Tu, Lijuan
  0 siblings, 1 reply; 2+ messages in thread
From: ohilyard @ 2021-08-23 19:02 UTC (permalink / raw)
  To: dts; +Cc: lijuan.tu, Owen Hilyard

From: Owen Hilyard <ohilyard@iol.unh.edu>

Scapy changed some behavior which broke the test suite. This should fix
that.

Signed-off-by: Owen Hilyard <ohilyard@iol.unh.edu>
---
 framework/flow/flow.py               |   3 +-
 framework/flow/flow_action_items.py  | 670 +++++++++++++--------------
 framework/flow/flow_pattern_items.py | 630 ++++++++++++-------------
 framework/flow/generator.py          |  11 +-
 tests/TestSuite_rte_flow.py          |  42 +-
 5 files changed, 677 insertions(+), 679 deletions(-)

diff --git a/framework/flow/flow.py b/framework/flow/flow.py
index 2cce0796..24ed2d7d 100644
--- a/framework/flow/flow.py
+++ b/framework/flow/flow.py
@@ -39,6 +39,7 @@ from functools import reduce
 from typing import List, FrozenSet, Union, Iterable, Tuple
 
 from scapy.layers.l2 import Ether
+from scapy.packet import Raw
 
 from flow.enums import FlowItemType, FlowActionType
 from flow.exceptions import InvalidFlowItemException
@@ -47,7 +48,7 @@ from flow.flow_items import FlowItem
 from flow.flow_pattern_items import PatternFlowItem, TUNNELING_PROTOCOLS
 
 # Get reserved mac addresses
-NEVER_MATCH_PACKET = Ether(src="", dst="") / ('\x00' * 64)
+NEVER_MATCH_PACKET = Ether(src="", dst="") / Raw('\x00' * 64)
 
 
 def _iterable_deep_compare(i1, i2):
diff --git a/framework/flow/flow_action_items.py b/framework/flow/flow_action_items.py
index b08272f9..7130f846 100644
--- a/framework/flow/flow_action_items.py
+++ b/framework/flow/flow_action_items.py
@@ -107,11 +107,11 @@ class FlowActionVoid(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions void / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -119,11 +119,11 @@ class FlowActionPassthru(ActionFlowItem):
     type = FlowActionType.PASSTHRU
     test_case = {
         'test':  ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions passthru / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -131,11 +131,11 @@ class FlowActionFlag(ActionFlowItem):
     type = FlowActionType.FLAG
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions flag / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -143,11 +143,11 @@ class FlowActionDrop(ActionFlowItem):
     type = FlowActionType.DROP
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions drop / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -156,17 +156,17 @@ class FlowActionCount(ActionFlowItem):
     test_case = {
         'test_shared': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                         ' / udp / end actions count shared 0 id 1 / end',
-                        frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                        frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                   "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                   "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                   "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                        frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                        frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                   "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                   "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                   "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
         'test_id': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions count id 1 / end',
-                    frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                    frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                    frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                    frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -176,15 +176,15 @@ class FlowActionMac_swap(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions mac_swap / end',
                   frozenset({"Ether(src=\"90:61:ae:fd:41:43\", dst = \"ab:cd:ef:12:34:56\") "
-                            "/ IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
+                            "/ IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
                   frozenset({"Ether(src=\"90:61:ae:fd:41:43\", dst = \"ab:cd:ef:12:34:56\") "
-                            "/ IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
+                            "/ IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
                              "Ether(src=\"90:61:ae:fd:41:43\", dst = \"ab:cd:ef:12:34:56\") "
-                             "/ IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
+                             "/ IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
                              "Ether(src=\"90:61:ae:fd:41:43\", dst = \"ab:cd:ef:12:34:56\") "
-                             "/ IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
+                             "/ IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
                              "Ether(src=\"90:61:ae:fd:41:43\", dst = \"ab:cd:ef:12:34:56\") "
-                             "/ IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                             "/ IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -193,11 +193,11 @@ class FlowActionDec_ttl(ActionFlowItem):
 
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions dec_ttl / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\", ttl = 128) / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\", ttl = 128) / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\", ttl = 128) / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\", ttl = 128 ) / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\", ttl = 128) / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\", ttl = 128) / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\", ttl = 128) / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\", ttl = 128) / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\", ttl = 128 ) / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\", ttl = 128) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -206,11 +206,11 @@ class FlowActionJump(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions jump group 1 / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -219,11 +219,11 @@ class FlowActionMark(ActionFlowItem):
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                  '/ udp / end actions mark id 0xABCDEF / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -231,11 +231,11 @@ class FlowActionQueue(ActionFlowItem):
     type = FlowActionType.QUEUE
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions queue index 1 / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -246,11 +246,11 @@ class FlowActionRss(ActionFlowItem):
     '''
      test_case = {
          'case1': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions / end',
-                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                   frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                   frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
      }
      '''
 
@@ -259,11 +259,11 @@ class FlowActionPf(ActionFlowItem):
     type = FlowActionType.PF
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions pf / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -272,17 +272,17 @@ class FlowActionVf(ActionFlowItem):
     test_case = {
         'test_original': ('ingress pattern eth / ipv4 src is 192.168.0.1 /'
                           ' udp / end actions vf original 1/ end',
-                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
         'test_id': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions vf id 1 / end',
-                    frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                    frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                    frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                    frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -293,19 +293,19 @@ class FlowActionPhy_port(ActionFlowItem):
          # original port index
          'test_original': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                            ' / udp / end actions phy_port original / end',
-                           frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                           frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                      "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                      "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                      "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                           frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                           frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                      "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                      "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                      "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
          # physical port index
          'test_index': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                         '/ udp / end actions phy_port index 1 / end',
-                        frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                        frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                   "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                   "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                   "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                        frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                        frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                   "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                   "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                   "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -316,19 +316,19 @@ class FlowActionPort_id(ActionFlowItem):
         # original DPDK port ID
         'test_original': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                           '/ udp / end actions port_id original / end',
-                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
         # DPDK port ID
         'test_id': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                     '/ udp / end actions port_id id 1 / end',
-                    frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                    frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                               "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                    frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                    frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                               "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -336,11 +336,11 @@ class FlowActionMeter(ActionFlowItem):
     type = FlowActionType.METER
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions meter mtr_id 1 / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -349,11 +349,11 @@ class FlowActionSecurity(ActionFlowItem):
     test_case = {
         'test': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                  ' / udp / end actions security security_session 1 / end',
-                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                 frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                 frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -364,12 +364,12 @@ class FlowActionOf_set_mpls_ttl(ActionFlowItem):
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                   '/ udp / end actions of_set_mpls_ttl mpls_ttl 64 / end',
                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128)"
-                             " / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
+                             " / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
                              "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128)"
-                             " / UDP() / ('\\x00' * 64)"})),
+                             " / UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -379,11 +379,11 @@ class FlowActionOf_dec_mpls_ttl(ActionFlowItem):
     test_case = {
         'test': (
             'ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions of_dec_mpls_ttl / end',
-            frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)"}),
-            frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)"})),
+            frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)"}),
+            frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -393,11 +393,11 @@ class FlowActionOf_set_nw_ttl(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                   '/ udp / end actions of_set_nw_ttl nw_ttl 64 / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\", ttl=128) / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\", ttl=128) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\", ttl=128) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\", ttl=128) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\", ttl=128) / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\", ttl=128) / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\", ttl=128) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\", ttl=128) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\", ttl=128) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\", ttl=128) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -406,11 +406,11 @@ class FlowActionOf_dec_nw_ttl(ActionFlowItem):
     test_case = {
         'test': (
             'ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions of_dec_nw_ttl / end',
-            frozenset({"Ether() / IP(src=\"192.168.0.1\", ttl=128) / UDP() / ('\\x00' * 64)"}),
-            frozenset({"Ether() / IP(src=\"192.168.0.2\", ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"10.0.30.99\", ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"8.8.8.8\", ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"132.177.0.99\", ttl=128) / UDP() / ('\\x00' * 64)"})),
+            frozenset({"Ether() / IP(src=\"192.168.0.1\", ttl=128) / UDP() / Raw('\\x00' * 64)"}),
+            frozenset({"Ether() / IP(src=\"192.168.0.2\", ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"10.0.30.99\", ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"8.8.8.8\", ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"132.177.0.99\", ttl=128) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -420,11 +420,11 @@ class FlowActionOf_copy_ttl_out(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                   '/ udp / end actions of_copy_ttl_out / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -434,11 +434,11 @@ class FlowActionOf_copy_ttl_in(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                   '/ udp / end actions of_copy_ttl_out / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -448,15 +448,15 @@ class FlowActionOf_pop_vlan(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions of_pop_vlan / end',
                   frozenset({"Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.1\") "
-                             "/ UDP() / ('\\x00' * 64)"}),
+                             "/ UDP() / Raw('\\x00' * 64)"}),
                   frozenset({"Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.2\") "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                              "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"10.0.30.99\") "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                              "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"8.8.8.8\") "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                              "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"132.177.0.99\")"
-                             " / UDP() / ('\\x00' * 64)"})),
+                             " / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -466,15 +466,15 @@ class FlowActionOf_push_vlan(ActionFlowItem):
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                   ' / udp / end actions of_push_vlan ethertype 0x8100 / end',
                   frozenset({"Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.1\") "
-                             "/ UDP() / ('\\x00' * 64)"}),
+                             "/ UDP() / Raw('\\x00' * 64)"}),
                   frozenset({"Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.2\") "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                              "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"10.0.30.99\") "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                              "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"8.8.8.8\") "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                              "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"132.177.0.99\")"
-                             " / UDP() / ('\\x00' * 64)"})),
+                             " / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -486,16 +486,16 @@ class FlowActionOf_set_vlan_vid(ActionFlowItem):
                  '/ udp / end actions of_set_vlan_vid vlan_vid 0xbbb / end',
                  frozenset({
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.1\")"
-                               " / UDP() / ('\\x00' * 64)"}),
+                               " / UDP() / Raw('\\x00' * 64)"}),
                  frozenset({
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.2\") "
-                               "/ UDP() / ('\\x00' * 64)",
+                               "/ UDP() / Raw('\\x00' * 64)",
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"10.0.30.99\") "
-                               "/ UDP() / ('\x00' * 64)",
+                               "/ UDP() / Raw('\x00' * 64)",
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"8.8.8.8\") "
-                               "/ UDP() / ('\x00' * 64)",
+                               "/ UDP() / Raw('\x00' * 64)",
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"132.177.0.99\") "
-                               "/ UDP() / ('\\x00' * 64)"})),
+                               "/ UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -506,16 +506,16 @@ class FlowActionOf_set_vlan_pcp(ActionFlowItem):
                  ' / udp / end actions of_set_vlan_vid vlan_pcp 0x7 / end',
                  frozenset({
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.1\") "
-                               "/ UDP() / ('\\x00' * 64)"}),
+                               "/ UDP() / Raw('\\x00' * 64)"}),
                  frozenset({
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"192.168.0.2\") "
-                               "/ UDP() / ('\\x00' * 64)",
+                               "/ UDP() / Raw('\\x00' * 64)",
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"10.0.30.99\") "
-                               "/ UDP() / ('\x00' * 64)",
+                               "/ UDP() / Raw('\x00' * 64)",
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"8.8.8.8\") "
-                               "/ UDP() / ('\x00' * 64)",
+                               "/ UDP() / Raw('\x00' * 64)",
                                "Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / IP(src=\"132.177.0.99\") "
-                               "/ UDP() / ('\\x00' * 64)"})),
+                               "/ UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -525,11 +525,11 @@ class FlowActionOf_pop_mpls(ActionFlowItem):
         'test': (
             'ingress pattern eth / ipv4 src is 192.168.0.1 '
             '/ udp / end actions of_pop_mpls ethertype 0x0806 / end',
-            frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)"}),
-            frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\x00' * 64)",
-                       "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\x00' * 64)",
-                       "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)"})),
+            frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)"}),
+            frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\x00' * 64)",
+                       "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\x00' * 64)",
+                       "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -540,11 +540,11 @@ class FlowActionOf_push_mpls(ActionFlowItem):
         'test': (
             'ingress pattern eth / ipv4 src is 192.168.0.1'
             ' / udp / end actions of_push_mpls ethertype 0x0806 / end',
-            frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)"}),
-            frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)",
-                       "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\x00' * 64)",
-                       "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\x00' * 64)",
-                       "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128) / UDP() / ('\\x00' * 64)"})),
+            frozenset({"Ether() / IP(src=\"192.168.0.1\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)"}),
+            frozenset({"Ether() / IP(src=\"192.168.0.2\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)",
+                       "Ether() / IP(src=\"10.0.30.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\x00' * 64)",
+                       "Ether() / IP(src=\"8.8.8.8\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\x00' * 64)",
+                       "Ether() / IP(src=\"132.177.0.99\") / MPLS(label = 0xab, ttl=128) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -555,11 +555,11 @@ class FlowActionVxlan_encap(ActionFlowItem):
          # VXLAN encap definition is the VNI?
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                   ' / udp / end actions vxlan_encap definition 0x112233 / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -568,11 +568,11 @@ class FlowActionVxlan_decap(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions vxlan_decap / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / VXLAN() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / VXLAN() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / VXLAN() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / VXLAN() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / VXLAN() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / VXLAN() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / VXLAN() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / VXLAN() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / VXLAN() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / VXLAN() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -583,11 +583,11 @@ class FlowActionNvgre_encap(ActionFlowItem):
      test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1
          / udp / end actions nvgre_encap definition 0x112233 / end',
-                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() /  NVGRE() / ('\\x00' * 64)"}),
-                   frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() /  NVGRE() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"10.0.30.99\") / UDP() /  NVGRE() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"8.8.8.8\") / UDP() /  NVGRE() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"132.177.0.99\") / UDP() /  NVGRE() / ('\\x00' * 64)"})),
+                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() /  NVGRE() / Raw('\\x00' * 64)"}),
+                   frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() /  NVGRE() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"10.0.30.99\") / UDP() /  NVGRE() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"8.8.8.8\") / UDP() /  NVGRE() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"132.177.0.99\") / UDP() /  NVGRE() / Raw('\\x00' * 64)"})),
      }
      '''
 
@@ -598,11 +598,11 @@ class FlowActionNvgre_decap(ActionFlowItem):
     '''
      test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions nvgre_decap / end',
-                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / NVGRE() / ('\\x00' * 64)"}),
-                   frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / NVGRE() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"10.0.30.99\") / UDP() / NVGRE() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"8.8.8.8\") / UDP() / NVGRE() / ('\\x00' * 64)",
-                              "Ether() / IP(src=\"132.177.0.99\") / UDP() / NVGRE() / ('\\x00' * 64)"})),
+                   frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / NVGRE() / Raw('\\x00' * 64)"}),
+                   frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / NVGRE() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"10.0.30.99\") / UDP() / NVGRE() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"8.8.8.8\") / UDP() / NVGRE() / Raw('\\x00' * 64)",
+                              "Ether() / IP(src=\"132.177.0.99\") / UDP() / NVGRE() / Raw('\\x00' * 64)"})),
      }
      '''
 
@@ -618,27 +618,27 @@ class FlowActionRaw_encap(ActionFlowItem):
     test_case = {
         'test_data': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                       '/ udp / end actions raw_encap data 0x8100aaaa / end',
-                      frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                      frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                 "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                 "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                 "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                      frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                      frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                 "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                 "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                 "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
 
         'test_preserve': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                           '/ udp / end actions raw_encap data 0x8100aaaa preserve 0xffffffff / end',
-                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
         # Is "size" in bits or bytes? Unclear in documentation, defaulting to bits.
         'test_size': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                       '/ udp / end actions raw_encap data 0x8100aaaa size 32 / end',
-                      frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                      frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                 "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                 "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                 "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                      frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                      frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                 "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                 "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                 "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -648,30 +648,30 @@ class FlowActionRaw_decap(ActionFlowItem):
         'test_data': (
             'ingress pattern eth / ipv4 src is 192.168.0.1 '
             '/ udp / end actions raw_decap data 0x8100aaaa / end',
-            frozenset({"Ether()  / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
+            frozenset({"Ether()  / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
             frozenset({"Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"192.168.0.2\")"
-                       " / UDP() / ('\\x00' * 64)",
+                       " / UDP() / Raw('\\x00' * 64)",
                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"10.0.30.99\") "
-                       "/ UDP() / ('\x00' * 64)",
+                       "/ UDP() / Raw('\x00' * 64)",
                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"8.8.8.8\")"
-                       " / UDP() / ('\x00' * 64)",
+                       " / UDP() / Raw('\x00' * 64)",
                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"132.177.0.99\") "
-                       "/ UDP() / ('\\x00' * 64)"})),
+                       "/ UDP() / Raw('\\x00' * 64)"})),
 
         # Is "size" in bits or bytes? Unclear in documentation, defaulting to bits.
         'test_size': (
             'ingress pattern eth / ipv4 src is 192.168.0.1 '
             '/ udp / end actions raw_decap data 0x8100aaaa size 32 / end',
             frozenset({"Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"192.168.0.1\") "
-                       "/ UDP() / ('\\x00' * 64)"}),
+                       "/ UDP() / Raw('\\x00' * 64)"}),
             frozenset({"Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"192.168.0.2\") "
-                       "/ UDP() / ('\\x00' * 64)",
+                       "/ UDP() / Raw('\\x00' * 64)",
                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"10.0.30.99\")"
-                       " / UDP() / ('\x00' * 64)",
+                       " / UDP() / Raw('\x00' * 64)",
                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"8.8.8.8\") "
-                       "/ UDP() / ('\x00' * 64)",
+                       "/ UDP() / Raw('\x00' * 64)",
                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xbbb) / IP(src=\"132.177.0.99\") "
-                       "/ UDP() / ('\\x00' * 64)"})),
+                       "/ UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -681,11 +681,11 @@ class FlowActionSet_ipv4_src(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                   '/ udp / end actions set_ipv4_src ipv4_addr 172.16.0.10  / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -695,11 +695,11 @@ class FlowActionSet_ipv4_dst(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 dst is 192.168.0.1'
                   ' / udp / end actions set_ipv4_dst ipv4_addr 172.16.0.10 / end',
-                  frozenset({"Ether() / IP(dst=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(dst=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(dst=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(dst=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(dst=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(dst=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(dst=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(dst=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(dst=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(dst=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -710,12 +710,12 @@ class FlowActionSet_ipv6_src(ActionFlowItem):
          'test': ('ingress pattern eth / ipv6 src is 2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2 '
                   '/ udp / end actions set_ipv6_src ipv6_addr 2001:0000:9d38:6ab8:1c48:9999:aaaa:bbbb',
                   frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\") "
-                             "/ UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / UDP() / ('\x00' * 64)",
-                             "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / UDP() / ('\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / UDP() / Raw('\x00' * 64)",
                              "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\") "
-                             "/ UDP() / ('\\x00' * 64)"})),
+                             "/ UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -726,12 +726,12 @@ class FlowActionSet_ipv6_dst(ActionFlowItem):
          'test': ('ingress pattern eth / ipv6 dst is 2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2 '
                   '/ udp / end actions set_ipv6_dst ipv6_addr 2001:0000:9d38:6ab8:1c48:9999:aaaa:bbbb',
                   frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\")"
-                             " / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / UDP() / ('\\x00' * 64)",
-                            "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / UDP() / ('\x00' * 64)",
-                             "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / UDP() / ('\x00' * 64)",
+                             " / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / UDP() / Raw('\x00' * 64)",
                              "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\") "
-                             "/ UDP() / ('\\x00' * 64)"})),
+                             "/ UDP() / Raw('\\x00' * 64)"})),
       }
 
 
@@ -742,20 +742,20 @@ class FlowActionSet_tp_src(ActionFlowItem):
         # UDP
         'test_udp': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                      ' / udp / end actions set_tp_src port 1998 / end',
-                     frozenset({"Ether() / IP(src=\"192.168.0.1\") UDP(sport=3838) / ('\\x00' * 64)"}),
-                     frozenset({"Ether() / IP(src=\"192.168.0.2\") UDP(sport=3838) / ('\\x00' * 64)",
-                                "Ether() / IP(src=\"10.0.30.99\") UDP(sport=3838) / ('\x00' * 64)",
-                                "Ether() / IP(src=\"8.8.8.8\") UDP(sport=3838) / ('\x00' * 64)",
-                                "Ether() / IP(src=\"132.177.0.99\") UDP(sport=3838) / ('\\x00' * 64)"})),
+                     frozenset({"Ether() / IP(src=\"192.168.0.1\") UDP(sport=3838) / Raw('\\x00' * 64)"}),
+                     frozenset({"Ether() / IP(src=\"192.168.0.2\") UDP(sport=3838) / Raw('\\x00' * 64)",
+                                "Ether() / IP(src=\"10.0.30.99\") UDP(sport=3838) / Raw('\x00' * 64)",
+                                "Ether() / IP(src=\"8.8.8.8\") UDP(sport=3838) / Raw('\x00' * 64)",
+                                "Ether() / IP(src=\"132.177.0.99\") UDP(sport=3838) / Raw('\\x00' * 64)"})),
 
         # TCP
         'test_tcp': (
           'ingress pattern eth / ipv4 src is 192.168.0.1 / tcp / end actions set_tp_src port 1998 / end',
-          frozenset({"Ether() / IP(src=\"192.168.0.1\") TCP(sport=3838) / ('\\x00' * 64)"}),
-          frozenset({"Ether() / IP(src=\"192.168.0.2\") TCP(sport=3838) / ('\\x00' * 64)",
-                     "Ether() / IP(src=\"10.0.30.99\") TCP(sport=3838) / ('\x00' * 64)",
-                     "Ether() / IP(src=\"8.8.8.8\") TCP(sport=3838) / ('\x00' * 64)",
-                     "Ether() / IP(src=\"132.177.0.99\") TCP(sport=3838) / ('\\x00' * 64)"})),
+          frozenset({"Ether() / IP(src=\"192.168.0.1\") TCP(sport=3838) / Raw('\\x00' * 64)"}),
+          frozenset({"Ether() / IP(src=\"192.168.0.2\") TCP(sport=3838) / Raw('\\x00' * 64)",
+                     "Ether() / IP(src=\"10.0.30.99\") TCP(sport=3838) / Raw('\x00' * 64)",
+                     "Ether() / IP(src=\"8.8.8.8\") TCP(sport=3838) / Raw('\x00' * 64)",
+                     "Ether() / IP(src=\"132.177.0.99\") TCP(sport=3838) / Raw('\\x00' * 64)"})),
     }
 
 
@@ -766,20 +766,20 @@ class FlowActionSet_tp_dst(ActionFlowItem):
         # UDP
         'test_udp': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                      '/ udp / end actions set_tp_dst port 1998 / end',
-                     frozenset({"Ether() / IP(src=\"192.168.0.1\") UDP(dport=3838) / ('\\x00' * 64)"}),
-                     frozenset({"Ether() / IP(src=\"192.168.0.2\") UDP(dport=3838) / ('\\x00' * 64)",
-                                "Ether() / IP(src=\"10.0.30.99\") UDP(dport=3838) / ('\x00' * 64)",
-                                "Ether() / IP(src=\"8.8.8.8\") UDP(dport=3838) / ('\x00' * 64)",
-                                "Ether() / IP(src=\"132.177.0.99\") UDP(dport=3838) / ('\\x00' * 64)"})),
+                     frozenset({"Ether() / IP(src=\"192.168.0.1\") UDP(dport=3838) / Raw('\\x00' * 64)"}),
+                     frozenset({"Ether() / IP(src=\"192.168.0.2\") UDP(dport=3838) / Raw('\\x00' * 64)",
+                                "Ether() / IP(src=\"10.0.30.99\") UDP(dport=3838) / Raw('\x00' * 64)",
+                                "Ether() / IP(src=\"8.8.8.8\") UDP(dport=3838) / Raw('\x00' * 64)",
+                                "Ether() / IP(src=\"132.177.0.99\") UDP(dport=3838) / Raw('\\x00' * 64)"})),
 
         # TCP
         'test_tcp': (
           'ingress pattern eth / ipv4 src is 192.168.0.1 / tcp / end actions set_tp_dst port 1998 / end',
-          frozenset({"Ether() / IP(src=\"192.168.0.1\") TCP(dport=3838) / ('\\x00' * 64)"}),
-          frozenset({"Ether() / IP(src=\"192.168.0.2\") TCP(dport=3838) / ('\\x00' * 64)",
-                     "Ether() / IP(src=\"10.0.30.99\") TCP(dport=3838) / ('\x00' * 64)",
-                     "Ether() / IP(src=\"8.8.8.8\") TCP(dport=3838) / ('\x00' * 64)",
-                     "Ether() / IP(src=\"132.177.0.99\") TCP(dport=3838) / ('\\x00' * 64)"})),
+          frozenset({"Ether() / IP(src=\"192.168.0.1\") TCP(dport=3838) / Raw('\\x00' * 64)"}),
+          frozenset({"Ether() / IP(src=\"192.168.0.2\") TCP(dport=3838) / Raw('\\x00' * 64)",
+                     "Ether() / IP(src=\"10.0.30.99\") TCP(dport=3838) / Raw('\x00' * 64)",
+                     "Ether() / IP(src=\"8.8.8.8\") TCP(dport=3838) / Raw('\x00' * 64)",
+                     "Ether() / IP(src=\"132.177.0.99\") TCP(dport=3838) / Raw('\\x00' * 64)"})),
 
     }
 
@@ -790,11 +790,11 @@ class FlowActionSet_ttl(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                   ' / udp / end actions set_ttl ttl_value 64 / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\" , ttl=128 ) / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\" , ttl=128 ) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\" , ttl=128 ) / UDP() / ('\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\", ttl=128 ) / UDP() / ('\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\", ttl=128 ) / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\" , ttl=128 ) / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\" , ttl=128 ) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\" , ttl=128 ) / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\", ttl=128 ) / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\", ttl=128 ) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -804,11 +804,11 @@ class FlowActionSet_mac_src(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                   ' / udp / end actions set_mac_src mac_addr 10:20:30:40:50:60 / end',
-                  frozenset({"Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                            "Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                             "Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                             "Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                            "Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                             "Ether(src=\"90:61:ae:fd:41:43\") / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -818,12 +818,12 @@ class FlowActionSet_mac_dst(ActionFlowItem):
              'test': ('ingress pattern eth / ipv4 src is 192.168.0.1'
                       ' / udp / end actions set_mac_dst mac_addr 10:20:30:40:50:60 / end',
                       frozenset({"Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.1\") "
-                                 "/ UDP() / ('\\x00' * 64)"}),
-                      frozenset({"Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                "Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                 "Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
+                                 "/ UDP() / Raw('\\x00' * 64)"}),
+                      frozenset({"Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                "Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                 "Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
                                  "Ether(dst=\"90:61:ae:fd:41:43\") / IP(src=\"132.177.0.99\") "
-                                 "/ UDP() / ('\\x00' * 64)"})),
+                                 "/ UDP() / Raw('\\x00' * 64)"})),
          }
 
 
@@ -832,11 +832,11 @@ class FlowActionInc_tcp_seq(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / tcp / end actions inc_tcp_seq / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(seq=2) / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(seq=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / TCP(seq=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / TCP(seq=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / TCP(seq=2) / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(seq=2) / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(seq=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / TCP(seq=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / TCP(seq=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / TCP(seq=2) / Raw('\\x00' * 64)"})),
      }
 
 
@@ -845,11 +845,11 @@ class FlowActionDec_tcp_seq(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / tcp / end actions dec_tcp_seq / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(seq=2) / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(seq=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / TCP(seq=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / TCP(seq=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / TCP(seq=2) / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(seq=2) / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(seq=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / TCP(seq=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / TCP(seq=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / TCP(seq=2) / Raw('\\x00' * 64)"})),
     }
 
 
@@ -858,11 +858,11 @@ class FlowActionInc_tcp_ack(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / tcp / end actions inc_tcp_ack / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(ack=2) / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(ack=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / TCP(ack=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / TCP(ack=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / TCP(ack=2) / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(ack=2) / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(ack=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / TCP(ack=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / TCP(ack=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / TCP(ack=2) / Raw('\\x00' * 64)"})),
      }
 
 
@@ -871,11 +871,11 @@ class FlowActionDec_tcp_ack(ActionFlowItem):
 
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 / tcp / end actions dec_tcp_ack / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(ack=2) / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(ack=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\") / TCP(ack=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\") / TCP(ack=2) / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\") / TCP(ack=2) / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\") / TCP(ack=2) / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\") / TCP(ack=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\") / TCP(ack=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\") / TCP(ack=2) / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\") / TCP(ack=2) / Raw('\\x00' * 64)"})),
     }
 
 
@@ -885,26 +885,26 @@ class FlowActionSet_tag(ActionFlowItem):
     test_case = {
          'test_data': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                        '/ udp / end actions set_tag data 0xabc / end',
-                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
          # bit-mask applies to "data"
          'test_mask': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                        '/ udp / end actions set_tag data 0xabc mask 0xcba / end',
-                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
          'test_index': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                         '/ udp / end actions set_tag data 0xabc index 1 / end',
-                        frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                        frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                   "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                   "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                   "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                        frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                        frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                   "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                   "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                   "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -914,19 +914,19 @@ class FlowActionSet_meta(ActionFlowItem):
     test_case = {
          'test_data': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                        '/ udp / end actions set_meta data 0xabc / end',
-                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
          # bit-mask applies to "data"
          'test_mask': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                        '/ udp / end actions set_meta data 0xabc mask 0xcb / end',
-                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                       frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                       frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                  "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                  "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                  "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -936,11 +936,11 @@ class FlowActionSet_ipv4_dscp(ActionFlowItem):
     test_case = {
          'test': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                   '/ udp / end actions set_ipv4_dscp dscp 2 / end',
-                  frozenset({"Ether() / IP(src=\"192.168.0.1\", tos = 0) / UDP() / ('\\x00' * 64)"}),
-                  frozenset({"Ether() / IP(src=\"192.168.0.2\", tos = 0) / UDP() / ('\\x00' * 64)",
-                             "Ether() / IP(src=\"10.0.30.99\", tos = 0) / UDP() / ('\x00' * 64)",
-                             "Ether() / IP(src=\"8.8.8.8\", tos = 0) / UDP() / ('\x00' * 64)",
-                             "Ether() / IP(src=\"132.177.0.99\", tos = 0) / UDP() / ('\\x00' * 64)"})),
+                  frozenset({"Ether() / IP(src=\"192.168.0.1\", tos = 0) / UDP() / Raw('\\x00' * 64)"}),
+                  frozenset({"Ether() / IP(src=\"192.168.0.2\", tos = 0) / UDP() / Raw('\\x00' * 64)",
+                             "Ether() / IP(src=\"10.0.30.99\", tos = 0) / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IP(src=\"8.8.8.8\", tos = 0) / UDP() / Raw('\x00' * 64)",
+                             "Ether() / IP(src=\"132.177.0.99\", tos = 0) / UDP() / Raw('\\x00' * 64)"})),
     }
 
 
@@ -951,15 +951,15 @@ class FlowActionSet_ipv6_dscp(ActionFlowItem):
          'test': ('ingress pattern eth / ipv6 src is 2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2 '
                   '/ udp / end actions set_ipv6_dscp dscp 0x30',
                   frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\", tc = 0) "
-                             "/ UDP() / ('\\x00' * 64)"}),
+                             "/ UDP() / Raw('\\x00' * 64)"}),
                   frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\", tc = 0) "
-                             "/ UDP() / ('\\x00' * 64)",
+                             "/ UDP() / Raw('\\x00' * 64)",
                             "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\", tc = 0) "
-                             "/ UDP() / ('\x00' * 64)",
+                             "/ UDP() / Raw('\x00' * 64)",
                              "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\", tc = 0) "
-                             "/ UDP() / ('\x00' * 64)",
+                             "/ UDP() / Raw('\x00' * 64)",
                              "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\", tc = 0) "
-                             "/ UDP() / ('\\x00' * 64)"})),
+                             "/ UDP() / Raw('\\x00' * 64)"})),
      }
 
 
@@ -969,27 +969,27 @@ class FlowActionAge(ActionFlowItem):
     test_case = {
          'test_timeout': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                           '/ udp / end actions age timeout 128 / end',
-                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
          # 8 bits reserved, must be zero
          'test_reserved': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                            '/ udp / end actions age timeout 128 reserved 0 / end',
-                           frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                           frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                      "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\x00' * 64)",
-                                      "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\x00' * 64)",
-                                      "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                           frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                           frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                      "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\x00' * 64)",
+                                      "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\x00' * 64)",
+                                      "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
          # The user flow context, NULL means the rte_flow pointer.
          'test_context': ('ingress pattern eth / ipv4 src is 192.168.0.1 '
                           '/ udp / end actions age timeout 128 context NULL / end',
-                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / ('\\x00' * 64)"}),
-                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / ('\\x00' * 64)",
-                                    "Ether() / IP(src=\"10.0.30.99\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / ('\\x00' * 64)",
-                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / ('\\x00' * 64)"})),
+                          frozenset({"Ether() / IP(src=\"192.168.0.1\") / UDP() / Raw('\\x00' * 64)"}),
+                          frozenset({"Ether() / IP(src=\"192.168.0.2\") / UDP() / Raw('\\x00' * 64)",
+                                    "Ether() / IP(src=\"10.0.30.99\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"8.8.8.8\") / UDP() / Raw('\\x00' * 64)",
+                                     "Ether() / IP(src=\"132.177.0.99\") / UDP() / Raw('\\x00' * 64)"})),
 
     }
 
diff --git a/framework/flow/flow_pattern_items.py b/framework/flow/flow_pattern_items.py
index bb143067..965d8cd2 100644
--- a/framework/flow/flow_pattern_items.py
+++ b/framework/flow/flow_pattern_items.py
@@ -138,90 +138,90 @@ class FlowItemArp_eth_ipv4(PatternFlowItem):
     possible_properties = {
         'hdr':
             ('arp_eth_ipv4 hdr is 1',
-             frozenset({"Ether() / ARP(hwtype=1) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(hwtype=1) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(hwtype=2) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwtype=3) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwtype=6) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwtype-15) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(hwtype=2) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwtype=3) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwtype=6) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwtype-15) / Raw('\\x00' * 64)"
                         })),
         'pro':
             ('arp_eth_ipv4 pro is 0x0800',
-             frozenset({"Ether() / ARP(ptype=0x0800) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(ptype=0x0800) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(ptype=0x0800) / ('\\x00' * 64)",
-                        "Ether() / ARP(ptype=0x0842) / ('\\x00' * 64)",
-                        "Ether() / ARP(ptype=0x6004) / ('\\x00' * 64)",
-                        "Ether() / ARP(ptype=0x809b) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(ptype=0x0800) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(ptype=0x0842) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(ptype=0x6004) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(ptype=0x809b) / Raw('\\x00' * 64)"
                         })),
 
         'hln':
             ('arp_eth_ipv4 hln is 6',
-             frozenset({"Ether() / ARP(hwlen=6) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(hwlen=6) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(hwlen=12) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwlen=2) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwlen=8) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwlen=4) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(hwlen=12) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwlen=2) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwlen=8) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwlen=4) / Raw('\\x00' * 64)"
                         })),
 
         'pln':
             ('arp_eth_ipv4 pln is 4',
-             frozenset({"Ether() / ARP(plen=4) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(plen=4) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(plen=6) / ('\\x00' * 64)",
-                        "Ether() / ARP(plen=2) / ('\\x00' * 64)",
-                        "Ether() / ARP(plen=8) / ('\\x00' * 64)",
-                        "Ether() / ARP(plen=12) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(plen=6) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(plen=2) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(plen=8) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(plen=12) / Raw('\\x00' * 64)"
                         })),
 
         'op':
             ('arp_eth_ipv4 op is 1',
-             frozenset({"Ether() / ARP(op=1) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(op=1) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(op=2) / ('\\x00' * 64)",
-                        "Ether() / ARP(op=3) / ('\\x00' * 64)",
-                        "Ether() / ARP(op=4) / ('\\x00' * 64)",
-                        "Ether() / ARP(op=5) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(op=2) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(op=3) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(op=4) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(op=5) / Raw('\\x00' * 64)"
                         })),
 
         'sha':
             ('arp_eth_ipv4 sha is 90:61:ae:fd:41:43',
-             frozenset({"Ether() / ARP(hwsrc=\"90:61:ae:fd:41:43\") / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(hwsrc=\"90:61:ae:fd:41:43\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(hwsrc=\"90:61:ae:fd:41:44\") / ('\\x00' * 64)",
-                        "Ether() / ARP(hwsrc=\"90:61:ae:fd:41:45\") / ('\\x00' * 64)",
-                        "Ether() / ARP(hwsrc=\"90:61:ae:fd:41:46\") / ('\\x00' * 64)",
-                        "Ether() / ARP(hwsrc=\"90:61:ae:fd:41:47\") / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(hwsrc=\"90:61:ae:fd:41:44\") / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwsrc=\"90:61:ae:fd:41:45\") / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwsrc=\"90:61:ae:fd:41:46\") / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwsrc=\"90:61:ae:fd:41:47\") / Raw('\\x00' * 64)"
                         })),
 
         'spa':
             ('arp_eth_ipv4 spa is 192.168.0.80',
-             frozenset({"Ether() / ARP(psrc=\"192.168.0.80\") / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(psrc=\"192.168.0.80\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(psrc=\"10.0.30.10\") / ('\\x00' * 64)",
-                        "Ether() / ARP(psrc=\"8.8.8.8\") / ('\\x00' * 64)",
-                        "Ether() / ARP(psrc=\"132.177.0.5\") / ('\\x00' * 64)",
-                        "Ether() / ARP(psrc=\"123.4.5.6\") / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(psrc=\"10.0.30.10\") / Raw('\\x00' * 64)",
+                        "Ether() / ARP(psrc=\"8.8.8.8\") / Raw('\\x00' * 64)",
+                        "Ether() / ARP(psrc=\"132.177.0.5\") / Raw('\\x00' * 64)",
+                        "Ether() / ARP(psrc=\"123.4.5.6\") / Raw('\\x00' * 64)"
                         })),
         'tha':
             ('arp_eth_ipv4 tha is 00:00:00:00:00:00',
-             frozenset({"Ether() / ARP(hwdst=00:00:00:00:00:00) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(hwdst=00:00:00:00:00:00) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(hwdst=90:61:ae:fd:41:45) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwdst=90:61:ae:fd:41:46) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwdst=90:61:ae:fd:41:47) / ('\\x00' * 64)",
-                        "Ether() / ARP(hwdst=90:61:ae:fd:41:48) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(hwdst=90:61:ae:fd:41:45) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwdst=90:61:ae:fd:41:46) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwdst=90:61:ae:fd:41:47) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(hwdst=90:61:ae:fd:41:48) / Raw('\\x00' * 64)"
                         })),
 
         'tpa':
             ('arp_eth_ipv4 tpa is 192.168.0.1',
-             frozenset({"Ether() / ARP(pdst=192.168.0.1) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ARP(pdst=192.168.0.1) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ARP(pdst=10.0.30.10) / ('\\x00' * 64)",
-                        "Ether() / ARP(pdst=8.8.8.8) / ('\\x00' * 64)",
-                        "Ether() / ARP(pdst=132.177.0.5) / ('\\x00' * 64)",
-                        "Ether() / ARP(pdst=123.4.5.6) / ('\\x00' * 64)"
+             frozenset({"Ether() / ARP(pdst=10.0.30.10) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(pdst=8.8.8.8) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(pdst=132.177.0.5) / Raw('\\x00' * 64)",
+                        "Ether() / ARP(pdst=123.4.5.6) / Raw('\\x00' * 64)"
                         })),
 
     }
@@ -242,31 +242,31 @@ class FlowItemEth(PatternFlowItem):
     possible_properties = {
         'dst':
             ('eth dst is 90:61:ae:fd:41:43',
-             frozenset({"Ether(dst=\"90:61:ae:fd:41:43\") / ('\\x00' * 64)"}),
+             frozenset({"Ether(dst=\"90:61:ae:fd:41:43\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether(dst=\"90:61:ae:fd:41:44\") / ('\\x00' * 64)",
-                        "Ether(dst=\"90:61:ae:fd:41:45\") / ('\\x00' * 64)",
-                        "Ether(dst=\"90:61:ae:fd:41:46\") / ('\\x00' * 64)",
-                        "Ether(dst=\"91:61:ae:fd:41:43\") / ('\\x00' * 64)"
+             frozenset({"Ether(dst=\"90:61:ae:fd:41:44\") / Raw('\\x00' * 64)",
+                        "Ether(dst=\"90:61:ae:fd:41:45\") / Raw('\\x00' * 64)",
+                        "Ether(dst=\"90:61:ae:fd:41:46\") / Raw('\\x00' * 64)",
+                        "Ether(dst=\"91:61:ae:fd:41:43\") / Raw('\\x00' * 64)"
                         })),
         'src':
             ('eth src is 90:61:ae:fd:41:43',
-             frozenset({"Ether(src=\"90:61:ae:fd:41:43\") / ('\\x00' * 64)"}),
+             frozenset({"Ether(src=\"90:61:ae:fd:41:43\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether(src=\"90:61:ae:fd:41:44\") / ('\\x00' * 64)",
-                        "Ether(src=\"90:61:ae:fd:41:45\") / ('\\x00' * 64)",
-                        "Ether(src=\"90:61:ae:fd:41:46\") / ('\\x00' * 64)",
-                        "Ether(src=\"91:61:ae:fd:41:43\") / ('\\x00' * 64)"
+             frozenset({"Ether(src=\"90:61:ae:fd:41:44\") / Raw('\\x00' * 64)",
+                        "Ether(src=\"90:61:ae:fd:41:45\") / Raw('\\x00' * 64)",
+                        "Ether(src=\"90:61:ae:fd:41:46\") / Raw('\\x00' * 64)",
+                        "Ether(src=\"91:61:ae:fd:41:43\") / Raw('\\x00' * 64)"
                         })),
         'type':
             ('eth type is 0x0800',  # IPv4 EtherType
-             frozenset({"Ether(type=0x0800) / ('\\x00' * 64)"}),
+             frozenset({"Ether(type=0x0800) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether(type=0x0842) / ('\\x00' * 64)",
-                        "Ether(type=0x8100) / ('\\x00' * 64)",  # Possibly a special case? TPID/VLAN
-                        "Ether(type=0x9100) / ('\\x00' * 64)",  # Possibly special, VLAN double tagging
-                        "Ether(type=0x8863) / ('\\x00' * 64)",
-                        "Ether(type=0x9000) / ('\\x00' * 64)"
+             frozenset({"Ether(type=0x0842) / Raw('\\x00' * 64)",
+                        "Ether(type=0x8100) / Raw('\\x00' * 64)",  # Possibly a special case? TPID/VLAN
+                        "Ether(type=0x9100) / Raw('\\x00' * 64)",  # Possibly special, VLAN double tagging
+                        "Ether(type=0x8863) / Raw('\\x00' * 64)",
+                        "Ether(type=0x9000) / Raw('\\x00' * 64)"
                         })),
     }
 
@@ -283,18 +283,18 @@ class FlowItemGre(PatternFlowItem):
     possible_properties = {
         'c_rsvd0_ver':
            ('gre c_rsvd0_ver is 0',
-            frozenset({"Ether() / GRE(chksum_present=0, version=0) / ('\\x00' * 64)"}),
+            frozenset({"Ether() / GRE(chksum_present=0, version=0) / Raw('\\x00' * 64)"}),
 
-           frozenset({"Ether() / GRE(chksum_present=1, version=0)) / ('\\x00' * 64)", #this is the only other option
+           frozenset({"Ether() / GRE(chksum_present=1, version=0)) / Raw('\\x00' * 64)", #this is the only other option
                       })),
         'protocol':
             ('gre protocol is 0x0800',
-             frozenset({"Ether() / GRE(proto=0x0800) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / GRE(proto=0x0800) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / GRE(proto=0x0842) / ('\\x00' * 64)",
-                        "Ether() / GRE(proto=0x8100) / ('\\x00' * 64)",
-                        "Ether() / GRE(proto=0x0806) / ('\\x00' * 64)",
-                        "Ether() / GRE(proto=0x809B) / ('\\x00' * 64)"
+             frozenset({"Ether() / GRE(proto=0x0842) / Raw('\\x00' * 64)",
+                        "Ether() / GRE(proto=0x8100) / Raw('\\x00' * 64)",
+                        "Ether() / GRE(proto=0x0806) / Raw('\\x00' * 64)",
+                        "Ether() / GRE(proto=0x809B) / Raw('\\x00' * 64)"
                         }))
     }
 
@@ -318,49 +318,49 @@ class FlowItemIcmp(PatternFlowItem):
 
         'icmp_type':
             ('icmp type is 3',
-             frozenset({"Ether() / ICMP(type=3) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ICMP(type=3) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ICMP(type=3) / ('\\x00' * 64)",
-                        "Ether() / ICMP(type=11) / ('\\x00' * 64)",
-                        "Ether() / ICMP(type=13) / ('\\x00' * 64)",
-                        "Ether() / ICMP(type=0) / ('\\x00' * 64)"
+             frozenset({"Ether() / ICMP(type=3) / Raw('\\x00' * 64)",
+                        "Ether() / ICMP(type=11) / Raw('\\x00' * 64)",
+                        "Ether() / ICMP(type=13) / Raw('\\x00' * 64)",
+                        "Ether() / ICMP(type=0) / Raw('\\x00' * 64)"
                         })),
         'icmp_code':
             ('icmp type is 3 code is 3',  # Assume type 3 code 3; code meanings/options are dependent on type.
 
-             frozenset({"Ether() / ICMP(type=3, code=3) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ICMP(type=3, code=3) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ICMP(type=3, code=0) / ('\\x00' * 64)",
-                        "Ether() / ICMP(type=3, code=2) / ('\\x00' * 64)",
-                        "Ether() / ICMP(type=11, code=1) / ('\\x00' * 64)",
-                        "Ether() / ICMP(type=12, code=2) / ('\\x00' * 64)"
+             frozenset({"Ether() / ICMP(type=3, code=0) / Raw('\\x00' * 64)",
+                        "Ether() / ICMP(type=3, code=2) / Raw('\\x00' * 64)",
+                        "Ether() / ICMP(type=11, code=1) / Raw('\\x00' * 64)",
+                        "Ether() / ICMP(type=12, code=2) / Raw('\\x00' * 64)"
                         })),
         'icmp_cksum':
            ('icmp cksum is 0x0800',
-            frozenset({"Ether() / ICMP() / UDP() / ('\x00' * 64)"}),
+            frozenset({"Ether() / ICMP() / UDP() / Raw('\x00' * 64)"}),
 
-            frozenset({"Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)"
+            frozenset({"Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)"
                        })),
         'icmp_ident':
            ('icmp ident is 0x0800',
-            frozenset({"Ether() / ICMP() / UDP() / ('\x00' * 64)"}),
+            frozenset({"Ether() / ICMP() / UDP() / Raw('\x00' * 64)"}),
 
-            frozenset({"Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)"
+            frozenset({"Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)"
                        })),
         'icmp_seq_nb':
            ('icmp seq_nb is 0x0800',
-            frozenset({"Ether() / ICMP(proto=0x0800) / UDP() / ('\x00' * 64)"}),
+            frozenset({"Ether() / ICMP(proto=0x0800) / UDP() / Raw('\x00' * 64)"}),
 
-            frozenset({"Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)",
-                       "Ether() / ICMP() / UDP() / ('\x00' * 64)"
+            frozenset({"Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)",
+                       "Ether() / ICMP() / UDP() / Raw('\x00' * 64)"
                         })),
     }
 
@@ -380,31 +380,31 @@ class FlowItemIcmp6(PatternFlowItem):
     possible_properties = {
         'type':
             ('icmp6 type is 1',  # Destination Unreachable
-             frozenset({"Ether() / ICMPv6DestUnreach(type=1) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ICMPv6DestUnreach(type=1) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ICMPv6DestUnreach(type=128) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(type=129) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(type=3) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(type=135) / ('\\x00' * 64)"
+             frozenset({"Ether() / ICMPv6DestUnreach(type=128) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(type=129) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(type=3) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(type=135) / Raw('\\x00' * 64)"
                         })),
         'code':  # ICMP code is dependent on type; these are possible Destination Unreachable codes
             ('icmp6 code is 0',
-             frozenset({"Ether() / ICMPv6DestUnreach(code=0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ICMPv6DestUnreach(code=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ICMPv6DestUnreach(code=1) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(code=2) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(code=3) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(code=4) / ('\\x00' * 64)"
+             frozenset({"Ether() / ICMPv6DestUnreach(code=1) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(code=2) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(code=3) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(code=4) / Raw('\\x00' * 64)"
                         })),
 
         'checksum':
             ('icmp6 cksum is 0x1234',
-             frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x1234) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x1234) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x4321) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(cksum=0xffff) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(cksum=0x1233) / ('\\x00' * 64)",
-                        "Ether() / ICMPv6DestUnreach(cksum=0x1010) / ('\\x00' * 64)"
+             frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x4321) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(cksum=0xffff) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(cksum=0x1233) / Raw('\\x00' * 64)",
+                        "Ether() / ICMPv6DestUnreach(cksum=0x1010) / Raw('\\x00' * 64)"
                         })),
     }
 
@@ -424,58 +424,58 @@ class FlowItemIpv4(PatternFlowItem):
 
         'tos':
             ('ipv4 tos is 0',
-             frozenset({"Ether() / IP(tos=0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP(tos=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP(tos=2) / ('\\x00' * 64)",
-                        "Ether() / IP(tos=4) / ('\\x00' * 64)",
-                        "Ether() / IP(tos=8) / ('\\x00' * 64)",
-                        "Ether() / IP(tos=16) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP(tos=2) / Raw('\\x00' * 64)",
+                        "Ether() / IP(tos=4) / Raw('\\x00' * 64)",
+                        "Ether() / IP(tos=8) / Raw('\\x00' * 64)",
+                        "Ether() / IP(tos=16) / Raw('\\x00' * 64)"
                         })),
         'ttl':
             ('ipv4 ttl is 64',
-             frozenset({"Ether() / IP(ttl=64) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP(ttl=64) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP(ttl=128) / ('\\x00' * 64)",
-                        "Ether() / IP(ttl=255) / ('\\x00' * 64)",
-                        "Ether() / IP(ttl=32)  / ('\\x00' * 64)",
-                        "Ether() / IP(ttl=100) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP(ttl=128) / Raw('\\x00' * 64)",
+                        "Ether() / IP(ttl=255) / Raw('\\x00' * 64)",
+                        "Ether() / IP(ttl=32)  / Raw('\\x00' * 64)",
+                        "Ether() / IP(ttl=100) / Raw('\\x00' * 64)"
                         })),
         'proto':
             ('ipv4 proto is 0x06',  # TCP
-             frozenset({"Ether() / IP(proto=0x06) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP(proto=0x06) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP(proto=0x01) / ('\\x00' * 64)",
-                        "Ether() / IP(proto=0x11) / ('\\x00' * 64)",
-                        "Ether() / IP(proto=0x12) / ('\\x00' * 64)",
-                        "Ether() / IP(proto=0x58) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP(proto=0x01) / Raw('\\x00' * 64)",
+                        "Ether() / IP(proto=0x11) / Raw('\\x00' * 64)",
+                        "Ether() / IP(proto=0x12) / Raw('\\x00' * 64)",
+                        "Ether() / IP(proto=0x58) / Raw('\\x00' * 64)"
                         })),
         'src':
             ('ipv4 src is 192.168.0.5',
-             frozenset({"Ether() / IP(src=\"192.168.0.5\") / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP(src=\"192.168.0.5\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP(src=\"10.10.10.10\") / ('\\x00' * 64)",
-                        "Ether() / IP(src=\"132.177.127.6\") / ('\\x00' * 64)",
-                        "Ether() / IP(src=\"192.168.0.4\") / ('\\x00' * 64)",
-                        "Ether() / IP(src=\"192.168.0.250\") / ('\\x00' * 64)"
+             frozenset({"Ether() / IP(src=\"10.10.10.10\") / Raw('\\x00' * 64)",
+                        "Ether() / IP(src=\"132.177.127.6\") / Raw('\\x00' * 64)",
+                        "Ether() / IP(src=\"192.168.0.4\") / Raw('\\x00' * 64)",
+                        "Ether() / IP(src=\"192.168.0.250\") / Raw('\\x00' * 64)"
                         })),
         'dst':
             ('ipv4 dst is 192.168.0.5',
-             frozenset({"Ether() / IP(dst=\"192.168.0.5\") / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP(dst=\"192.168.0.5\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP(dst=\"10.10.10.10\") / ('\\x00' * 64)",
-                        "Ether() / IP(dst=\"132.177.127.6\") / ('\\x00' * 64)",
-                        "Ether() / IP(dst=\"192.168.0.4\") / ('\\x00' * 64)",
-                        "Ether() / IP(dst=\"192.168.0.250\") / ('\\x00' * 64)"
+             frozenset({"Ether() / IP(dst=\"10.10.10.10\") / Raw('\\x00' * 64)",
+                        "Ether() / IP(dst=\"132.177.127.6\") / Raw('\\x00' * 64)",
+                        "Ether() / IP(dst=\"192.168.0.4\") / Raw('\\x00' * 64)",
+                        "Ether() / IP(dst=\"192.168.0.250\") / Raw('\\x00' * 64)"
                         })),
         # CHECKSUM PROPERTY NOT SUPPORTED BY TESTPMD; DO NOT UNCOMMENT UNTIL SUPPORTED
         # 'checksum':
         #     ('ipv4 chksum is 0x1234',
-        #     frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x1234) / ('\\x00' * 64)"}),
+        #     frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x1234) / Raw('\\x00' * 64)"}),
 
-        #     frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x4321) / ('\\x00' * 64)",
-        #                "Ether() / ICMPv6DestUnreach(cksum=0xffff) / ('\\x00' * 64)",
-        #                "Ether() / ICMPv6DestUnreach(cksum=0x1233) / ('\\x00' * 64)",
-        #                "Ether() / ICMPv6DestUnreach(cksum=0x1010) / ('\\x00' * 64)"
+        #     frozenset({"Ether() / ICMPv6DestUnreach(cksum=0x4321) / Raw('\\x00' * 64)",
+        #                "Ether() / ICMPv6DestUnreach(cksum=0xffff) / Raw('\\x00' * 64)",
+        #                "Ether() / ICMPv6DestUnreach(cksum=0x1233) / Raw('\\x00' * 64)",
+        #                "Ether() / ICMPv6DestUnreach(cksum=0x1010) / Raw('\\x00' * 64)"
         #                })),
 
         ##########################################################################
@@ -499,76 +499,76 @@ class FlowItemIpv6(PatternFlowItem):
         # They are still tested to future proof this test suite.
         'vtc_flow':
             ('ipv6 vtc_flow is 0x0',
-             frozenset({"Ether() / IPv6(tc=0, fl=0, version=0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(tc=0, fl=0, version=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(tc=1, fl=0, version=0) / ('\\x00' * 64)",
-                        "Ether() / IPv6(tc=0, fl=0xABCD, version=0) / ('\\x00' * 64)",
-                        "Ether() / IPv6(tc=0, fl=0, version=1) / ('\\x00' * 64)",
-                        "Ether() / IPv6(tc=6, fl=0x9999, version=1) / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(tc=1, fl=0, version=0) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(tc=0, fl=0xABCD, version=0) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(tc=0, fl=0, version=1) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(tc=6, fl=0x9999, version=1) / Raw('\\x00' * 64)"
                         })),
         'payload_len':
             ('ipv6 payload_len is 64',
-             frozenset({"Ether() / IPv6(plen=64) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(plen=64) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(plen=32) / ('\\x00' * 64)",
-                        "Ether() / IPv6(plen=128) / ('\\x00' * 64)",
-                        "Ether() / IPv6(plen=5000) / ('\\x00' * 64)",
-                        "Ether() / IPv6(plen=4) / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(plen=32) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(plen=128) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(plen=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(plen=4) / Raw('\\x00' * 64)"
                         })),
         # END UNSUPPORTED PROPERTIES
         'tc':
             ('ipv6 tc is 0',
-             frozenset({"Ether() / IPv6(tc=0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(tc=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(tc=1) / ('\\x00' * 64)",
-                        "Ether() / IPv6(tc=2) / ('\\x00' * 64)",
-                        "Ether() / IPv6(tc=4) / ('\\x00' * 64)",
-                        "Ether() / IPv6(tc=6) / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(tc=1) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(tc=2) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(tc=4) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(tc=6) / Raw('\\x00' * 64)"
                         })),
         'flow':
             ('ipv6 flow is 0xABCD',
-             frozenset({"Ether() / IPv6(fl=0xABCD) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(fl=0xABCD) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(fl=0xABCE) / ('\\x00' * 64)",
-                        "Ether() / IPv6(fl=0x0001) / ('\\x00' * 64)",
-                        "Ether() / IPv6(fl=0xFFFF) / ('\\x00' * 64)",
-                        "Ether() / IPv6(fl=0x1234) / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(fl=0xABCE) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(fl=0x0001) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(fl=0xFFFF) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(fl=0x1234) / Raw('\\x00' * 64)"
                         })),
         'proto':  # next header (nh)
             ('ipv6 proto is 6',  # TCP
-             frozenset({"Ether() / IPv6(nh=6) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(nh=6) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(nh=17) / ('\\x00' * 64)",
-                        "Ether() / IPv6(nh=41) / ('\\x00' * 64)",
-                        "Ether() / IPv6(nh=0) / ('\\x00' * 64)",
-                        "Ether() / IPv6(nh=60) / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(nh=17) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(nh=41) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(nh=0) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(nh=60) / Raw('\\x00' * 64)"
                         })),
         'hop':  # hop limit
             ('ipv6 hop is 64',
-             frozenset({"Ether() / IPv6(hlim=64) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(hlim=64) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(hlim=128) / ('\\x00' * 64)",
-                        "Ether() / IPv6(hlim=32) / ('\\x00' * 64)",
-                        "Ether() / IPv6(hlim=255) / ('\\x00' * 64)",
-                        "Ether() / IPv6(hlim=100) / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(hlim=128) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(hlim=32) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(hlim=255) / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(hlim=100) / Raw('\\x00' * 64)"
                         })),
         'dst':
             ('ipv6 dst is 2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2',
-             frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\") / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / ('\\x00' * 64)",
-                        "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / ('\\x00' * 64)",
-                        "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / ('\\x00' * 64)",
-                        "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\") / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(dst=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\") / Raw('\\x00' * 64)"
                         })),
         'src':
             ('ipv6 src is 2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2',
-             frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\") / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c2\") / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / ('\\x00' * 64)",
-                        "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / ('\\x00' * 64)",
-                        "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / ('\\x00' * 64)",
-                        "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\") / ('\\x00' * 64)"
+             frozenset({"Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c3\") / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c4\") / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c5\") / Raw('\\x00' * 64)",
+                        "Ether() / IPv6(src=\"2001:0000:9d38:6ab8:1c48:3a1c:a95a:b1c6\") / Raw('\\x00' * 64)"
                         })),
     }
 
@@ -587,41 +587,41 @@ class FlowItemSctp(PatternFlowItem):
 
         'src':
             ('sctp src is 3838',
-             frozenset({"Ether() / IP() / SCTP(sport=3838) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / SCTP(sport=3838) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / SCTP(sport=3939) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(sport=5000) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(sport=1998) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(sport=1028) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / SCTP(sport=3939) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(sport=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(sport=1998) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(sport=1028) / Raw('\\x00' * 64)"
                         })),
 
         'dst':
             ('sctp dst is 3838',
-             frozenset({"Ether() / IP() / SCTP(dport=3838) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / SCTP(dport=3838) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / SCTP(dport=3939) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(dport=5000) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(dport=1998) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(dport=1028) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / SCTP(dport=3939) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(dport=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(dport=1998) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(dport=1028) / Raw('\\x00' * 64)"
                         })),
         'tag':
             ('sctp tag is 12345',
-             frozenset({"Ether() / IP() / SCTP(tag=12345) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / SCTP(tag=12345) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / SCTP(tag=12346) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(tag=12) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(tag=9999) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(tag=42) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / SCTP(tag=12346) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(tag=12) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(tag=9999) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(tag=42) / Raw('\\x00' * 64)"
                         })),
 
         'cksum':
             ('sctp cksum is 0x01535b67',
-             frozenset({"Ether() / IP() / SCTP(chksum=0x01535b67) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / SCTP(chksum=0x01535b67) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / SCTP(chksum=0x01535b68) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(chksum=0xdeadbeef) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(chksum=0x12345678) / ('\\x00' * 64)",
-                        "Ether() / IP() / SCTP(chksum=0x385030fe) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / SCTP(chksum=0x01535b68) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(chksum=0xdeadbeef) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(chksum=0x12345678) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / SCTP(chksum=0x385030fe) / Raw('\\x00' * 64)"
                         }))
     }
 
@@ -658,59 +658,59 @@ class FlowItemTcp(PatternFlowItem):
         # They are still tested to future proof this test suite.
         'data_off':
             ('tcp data_off is 0',
-             frozenset({"Ether() / IP() / TCP(dataofs=0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / TCP(dataofs=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  IP() / TCP(dataofs=1) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(dataofs=2) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(dataofs=3) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(dataofs=4) / ('\\x00' * 64)"
+             frozenset({"Ether() /  IP() / TCP(dataofs=1) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(dataofs=2) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(dataofs=3) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(dataofs=4) / Raw('\\x00' * 64)"
                         })),
         'rx_win':
             ('tcp rx_win is 64',
-             frozenset({"Ether() /  IP() / TCP(window=64)/ ('\\x00' * 64)"}),
+             frozenset({"Ether() /  IP() / TCP(window=64)/ Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  IP() / TCP(window=16)/ ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(window=128) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(window=32) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(window=255) / ('\\x00' * 64)"
+             frozenset({"Ether() /  IP() / TCP(window=16)/ Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(window=128) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(window=32) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(window=255) / Raw('\\x00' * 64)"
                         })),
         'cksum':
             ('tcp cksum is 0x1234',
-             frozenset({"Ether() /  IP() / TCP(chksum=0x1234) / ('\\x00' * 64)"}),
+             frozenset({"Ether() /  IP() / TCP(chksum=0x1234) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / TCP(chksum=0x4321) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(chksum=0xffff) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(chksum=0x9999) / ('\\x00' * 64)",
-                        "Ether() /  IP() / TCP(chksum=0x1233)  / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / TCP(chksum=0x4321) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(chksum=0xffff) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(chksum=0x9999) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / TCP(chksum=0x1233)  / Raw('\\x00' * 64)"
                         })),
         # END UNSUPPORTED PROPERTIES
         'src':
             ('tcp src is 3838',
-             frozenset({"Ether() / IP() / TCP(sport=3838) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / TCP(sport=3838) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / TCP(sport=3939) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(sport=5000) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(sport=1998) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(sport=1028) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / TCP(sport=3939) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(sport=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(sport=1998) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(sport=1028) / Raw('\\x00' * 64)"
                         })),
 
         'dst':
             ('tcp dst is 3838',
-             frozenset({"Ether() / IP() / TCP(dport=3838) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / TCP(dport=3838) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / TCP(dport=3939) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(dport=5000) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(dport=1998) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(dport=1028) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / TCP(dport=3939) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(dport=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(dport=1998) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(dport=1028) / Raw('\\x00' * 64)"
                         })),
         'flags':
             ('tcp flags is 0x02',
-             frozenset({"Ether() / IP() / TCP(flags=0x02) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / TCP(flags=0x02) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / TCP(flags=0x01) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(flags=0x04) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(flags=0x08) / ('\\x00' * 64)",
-                        "Ether() / IP() / TCP(flags=0x10) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / TCP(flags=0x01) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(flags=0x04) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(flags=0x08) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / TCP(flags=0x10) / Raw('\\x00' * 64)"
                         }))
 
     }
@@ -730,42 +730,42 @@ class FlowItemUdp(PatternFlowItem):
         # They are still tested to future proof this test suite.
         'dgram_len':
             ('udp dgram_len is 64',
-             frozenset({"Ether() / IP() / UDP(len=64) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / UDP(len=64) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  IP() / UDP(len=128) / ('\\x00' * 64)",
-                        "Ether() /  IP() / UDP(len=32) / ('\\x00' * 64)",
-                        "Ether() /  IP() / UDP(len=16) / ('\\x00' * 64)",
-                        "Ether() /  IP() / UDP(len=255) / ('\\x00' * 64)"
+             frozenset({"Ether() /  IP() / UDP(len=128) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / UDP(len=32) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / UDP(len=16) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / UDP(len=255) / Raw('\\x00' * 64)"
                         })),
         'dgram_cksum':
             ('udp dgram_cksum is 0x1234',
-             frozenset({"Ether() /  IP() / UDP(chksum=0x1234) / ('\\x00' * 64)"}),
+             frozenset({"Ether() /  IP() / UDP(chksum=0x1234) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / UDP(chksum=0x4321) / ('\\x00' * 64)",
-                        "Ether() /  IP() / UDP(chksum=0xffff) / ('\\x00' * 64)",
-                        "Ether() /  IP() / UDP(chksum=0x9999) / ('\\x00' * 64)",
-                        "Ether() /  IP() / UDP(chksum=0x1233)  / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / UDP(chksum=0x4321) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / UDP(chksum=0xffff) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / UDP(chksum=0x9999) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / UDP(chksum=0x1233)  / Raw('\\x00' * 64)"
                         })),
         # END UNSUPPORTED PROPERTIES
 
         'src':
             ('udp src is 3838',
-             frozenset({"Ether() / IP() / UDP(sport=3838) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / UDP(sport=3838) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / UDP(sport=3939) / ('\\x00' * 64)",
-                        "Ether() / IP() / UDP(sport=5000) / ('\\x00' * 64)",
-                        "Ether() / IP() / UDP(sport=1998) / ('\\x00' * 64)",
-                        "Ether() / IP() / UDP(sport=1028) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / UDP(sport=3939) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / UDP(sport=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / UDP(sport=1998) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / UDP(sport=1028) / Raw('\\x00' * 64)"
                         })),
 
         'dst':
             ('udp dst is 3838',
-             frozenset({"Ether() / IP() / UDP(dport=3838) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / UDP(dport=3838) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / UDP(dport=3939) / ('\\x00' * 64)",
-                        "Ether() / IP() / UDP(dport=5000) / ('\\x00' * 64)",
-                        "Ether() / IP() / UDP(dport=1998) / ('\\x00' * 64)",
-                        "Ether() / IP() / UDP(dport=1028) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / UDP(dport=3939) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / UDP(dport=5000) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / UDP(dport=1998) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / UDP(dport=1028) / Raw('\\x00' * 64)"
                         })),
 
     }
@@ -798,48 +798,48 @@ class FlowItemVlan(PatternFlowItem):
 
         'tci':
             ('vlan tci is 0xaaaa',
-             frozenset({"Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / Dot1Q(prio = 0x5, id = 0x0, vlan = 0xaaa) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  Dot1Q(prio = 0x0, id = 0x1, vlan = 0xbbb) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xccc) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(prio = 0x5, id = 0x1, vlan = 0xaaa) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(prio = 0x4, id = 0x0, vlan = 0xaaa) / ('\\x00' * 64)"
+             frozenset({"Ether() /  Dot1Q(prio = 0x0, id = 0x1, vlan = 0xbbb) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(prio = 0x5, id = 0x0, vlan = 0xccc) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(prio = 0x5, id = 0x1, vlan = 0xaaa) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(prio = 0x4, id = 0x0, vlan = 0xaaa) / Raw('\\x00' * 64)"
                         })),
 
         'pcp':
             ('vlan pcp is 0x0',
-             frozenset({"Ether() / Dot1Q(prio=0x0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / Dot1Q(prio=0x0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  Dot1Q(prio=0x1) /  ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(prio=0x2) /  ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(prio=0x3) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(prio=0x7) / ('\\x00' * 64)"
+             frozenset({"Ether() /  Dot1Q(prio=0x1) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(prio=0x2) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(prio=0x3) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(prio=0x7) / Raw('\\x00' * 64)"
                         })),
         'dei':
             ('vlan dei is 0',
-             frozenset({"Ether() / Dot1Q(id=0) /  ('\\x00' * 64)"}),
+             frozenset({"Ether() / Dot1Q(id=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  Dot1Q(id=1) / ('\\x00' * 64)"
+             frozenset({"Ether() /  Dot1Q(id=1) / Raw('\\x00' * 64)"
                         })),
 
         'vid':
             ('vlan vid is 0xabc',
-             frozenset({"Ether() / Dot1Q(vlan=0xabc) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / Dot1Q(vlan=0xabc) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  Dot1Q(vlan=0xaaa) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(vlan=0x123) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(vlan=0x1f5) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(vlan=0x999) / ('\\x00' * 64)"
+             frozenset({"Ether() /  Dot1Q(vlan=0xaaa) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(vlan=0x123) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(vlan=0x1f5) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(vlan=0x999) / Raw('\\x00' * 64)"
                         })),
 
         'tpid':
             ('vlan tpid is 0x8100',  # standard value
-             frozenset({"Ether() / Dot1Q(type=0x8100) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / Dot1Q(type=0x8100) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  Dot1Q(type=0x0800) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(type=0x0842) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(type=0x809b) / ('\\x00' * 64)",
-                        "Ether() /  Dot1Q(type=0x86dd) / ('\\x00' * 64)"
+             frozenset({"Ether() /  Dot1Q(type=0x0800) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(type=0x0842) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(type=0x809b) / Raw('\\x00' * 64)",
+                        "Ether() /  Dot1Q(type=0x86dd) / Raw('\\x00' * 64)"
                         })),
     }
 
@@ -864,40 +864,40 @@ possible_properties = {
     # They are still tested to future proof this test suite.
     'rsvd0':
         ('vxlan rsvd0 is 0x000000',
-         frozenset({"Ether() / IP() / VXLAN(reserved0=0) / ('\\x00' * 64)"}),
+         frozenset({"Ether() / IP() / VXLAN(reserved0=0) / Raw('\\x00' * 64)"}),
 
-         frozenset({"Ether() /  IP() / VXLAN(reserved0=1) /  ('\\x00' * 64)",
-                    "Ether() /  IP() /  VXLAN(reserved0=2) /  ('\\x00' * 64)",
-                    "Ether() /  IP() /  VXLAN(reserved0=3) /  ('\\x00' * 64)",
-                    "Ether() /  IP()  / VXLAN(reserved0=4) /  ('\\x00' * 64)"
+         frozenset({"Ether() /  IP() / VXLAN(reserved0=1) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() /  VXLAN(reserved0=2) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() /  VXLAN(reserved0=3) / Raw('\\x00' * 64)",
+                    "Ether() /  IP()  / VXLAN(reserved0=4) / Raw('\\x00' * 64)"
                     })),
     'rsvd1':
         ('vxlan rsvd1 is 0x00',
-         frozenset({"Ether() /  IP() /  VXLAN(reserved0=0) /  ('\\x00' * 64)"}),
+         frozenset({"Ether() /  IP() /  VXLAN(reserved0=0) / Raw('\\x00' * 64)"}),
 
-         frozenset({"Ether() / IP() /  VXLAN(reserved0=1) /  ('\\x00' * 64)",
-                    "Ether() /  IP() /  VXLAN(reserved0=2) /  ('\\x00' * 64)",
-                    "Ether() /  IP() / VXLAN(reserved0=3) /  ('\\x00' * 64)",
-                    "Ether() /  IP() /  VXLAN(reserved0=4) /  ('\\x00' * 64)"
+         frozenset({"Ether() / IP() /  VXLAN(reserved0=1) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() /  VXLAN(reserved0=2) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() / VXLAN(reserved0=3) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() /  VXLAN(reserved0=4) / Raw('\\x00' * 64)"
                     })),
     'flags':
         ('vxlan flags is 0x08',
-         frozenset({"Ether() /  IP() /  VXLAN(flags=0x08) /  ('\\x00' * 64)"}),
+         frozenset({"Ether() /  IP() /  VXLAN(flags=0x08) / Raw('\\x00' * 64)"}),
 
-         frozenset({"Ether() / IP() /  VXLAN(flags=0x80) /  ('\\x00' * 64)",
-                    "Ether() /  IP() /  VXLAN(flags=0x00) /  ('\\x00' * 64)",
-                    "Ether() /  IP() / VXLAN(flags=0x99) /  ('\\x00' * 64)",
-                    "Ether() /  IP() /  VXLAN(flags=0x01) /  ('\\x00' * 64)"
+         frozenset({"Ether() / IP() /  VXLAN(flags=0x80) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() /  VXLAN(flags=0x00) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() / VXLAN(flags=0x99) / Raw('\\x00' * 64)",
+                    "Ether() /  IP() /  VXLAN(flags=0x01) / Raw('\\x00' * 64)"
                     })),
     # END UNSUPPORTED PROPERTIES
     'vni':  # a 3-byte value
         ('vxlan vni is 0x112233',
-         frozenset({"Ether() / IP() / VXLAN(vni=0x112233) / ('\\x00' * 64)"}),
+         frozenset({"Ether() / IP() / VXLAN(vni=0x112233) / Raw('\\x00' * 64)"}),
 
-         frozenset({"Ether() / IP() / VXLAN(vni=0x112234) / ('\\x00' * 64)",
-                    "Ether() / IP() / VXLAN(vni=0x123456) / ('\\x00' * 64)",
-                    "Ether() / IP() / VXLAN(vni=0xaabbcc) / ('\\x00' * 64)",
-                    "Ether() / IP() / VXLAN(vni=0x999999) / ('\\x00' * 64)"
+         frozenset({"Ether() / IP() / VXLAN(vni=0x112234) / Raw('\\x00' * 64)",
+                    "Ether() / IP() / VXLAN(vni=0x123456) / Raw('\\x00' * 64)",
+                    "Ether() / IP() / VXLAN(vni=0xaabbcc) / Raw('\\x00' * 64)",
+                    "Ether() / IP() / VXLAN(vni=0x999999) / Raw('\\x00' * 64)"
                     })),
 }
 
@@ -923,49 +923,49 @@ class FlowItemVxlan_gpe(PatternFlowItem):
 
         'rsvd0':
             ('vxlan rsvd0 is 0x000000',
-             frozenset({"Ether() / IP() / VXLAN(reserved0=0) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / VXLAN(reserved0=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() /  IP() / VXLAN(reserved0=1) /  ('\\x00' * 64)",
-                        "Ether() /  IP() /  VXLAN(reserved0=2) /  ('\\x00' * 64)",
-                        "Ether() /  IP() /  VXLAN(reserved0=3) /  ('\\x00' * 64)",
-                        "Ether() /  IP()  / VXLAN(reserved0=4) /  ('\\x00' * 64)"
+             frozenset({"Ether() /  IP() / VXLAN(reserved0=1) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() /  VXLAN(reserved0=2) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() /  VXLAN(reserved0=3) / Raw('\\x00' * 64)",
+                        "Ether() /  IP()  / VXLAN(reserved0=4) / Raw('\\x00' * 64)"
                         })),
         'rsvd1':
             ('vxlan rsvd1 is 0x00',
-             frozenset({"Ether() /  IP() /  VXLAN(reserved0=0) /  ('\\x00' * 64)"}),
+             frozenset({"Ether() /  IP() /  VXLAN(reserved0=0) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() /  VXLAN(reserved0=1) /  ('\\x00' * 64)",
-                        "Ether() /  IP() /  VXLAN(reserved0=2) /  ('\\x00' * 64)",
-                        "Ether() /  IP() / VXLAN(reserved0=3) /  ('\\x00' * 64)",
-                        "Ether() /  IP() /  VXLAN(reserved0=4) /  ('\\x00' * 64)"
+             frozenset({"Ether() / IP() /  VXLAN(reserved0=1) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() /  VXLAN(reserved0=2) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / VXLAN(reserved0=3) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() /  VXLAN(reserved0=4) / Raw('\\x00' * 64)"
                         })),
         'flags':
             ('vxlan flags is 0x08',
-             frozenset({"Ether() /  IP() /  VXLAN(flags=0x08) /  ('\\x00' * 64)"}),
+             frozenset({"Ether() /  IP() /  VXLAN(flags=0x08) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() /  VXLAN(flags=0x80) /  ('\\x00' * 64)",
-                        "Ether() /  IP() /  VXLAN(flags=0x00) /  ('\\x00' * 64)",
-                        "Ether() /  IP() / VXLAN(flags=0x99) /  ('\\x00' * 64)",
-                        "Ether() /  IP() /  VXLAN(flags=0x01) /  ('\\x00' * 64)"
+             frozenset({"Ether() / IP() /  VXLAN(flags=0x80) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() /  VXLAN(flags=0x00) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() / VXLAN(flags=0x99) / Raw('\\x00' * 64)",
+                        "Ether() /  IP() /  VXLAN(flags=0x01) / Raw('\\x00' * 64)"
                         })),
 
         'vni':  # a 3-byte value
             ('vxlan vni is 0x112233',
-             frozenset({"Ether() / IP() / VXLAN(vni=0x112233) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / VXLAN(vni=0x112233) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / VXLAN(vni=0x112234) / ('\\x00' * 64)",
-                        "Ether() / IP() / VXLAN(vni=0x123456) / ('\\x00' * 64)",
-                        "Ether() / IP() / VXLAN(vni=0xaabbcc) / ('\\x00' * 64)",
-                        "Ether() / IP() / VXLAN(vni=0x999999) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / VXLAN(vni=0x112234) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / VXLAN(vni=0x123456) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / VXLAN(vni=0xaabbcc) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / VXLAN(vni=0x999999) / Raw('\\x00' * 64)"
                         })),
         'protocol':
             ('vxlan protocol is 0x01',
-             frozenset({"Ether() / IP() / VXLAN(NextProtocol=0x01) / ('\\x00' * 64)"}),
+             frozenset({"Ether() / IP() / VXLAN(NextProtocol=0x01) / Raw('\\x00' * 64)"}),
 
-             frozenset({"Ether() / IP() / VXLAN(NextProtocol=0x01) / ('\\x00' * 64)",
-                        "Ether() / IP() / VXLAN(NextProtocol=0x11) / ('\\x00' * 64)",
-                        "Ether() / IP() / VXLAN(NextProtocol=0x22) / ('\\x00' * 64)",
-                        "Ether() / IP() / VXLAN(NextProtocol=0x33) / ('\\x00' * 64)"
+             frozenset({"Ether() / IP() / VXLAN(NextProtocol=0x01) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / VXLAN(NextProtocol=0x11) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / VXLAN(NextProtocol=0x22) / Raw('\\x00' * 64)",
+                        "Ether() / IP() / VXLAN(NextProtocol=0x33) / Raw('\\x00' * 64)"
                         })),
     }
 
diff --git a/framework/flow/generator.py b/framework/flow/generator.py
index 0fe52b2b..c4633a4a 100644
--- a/framework/flow/generator.py
+++ b/framework/flow/generator.py
@@ -31,19 +31,18 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 from __future__ import annotations
 
-import copy
-import itertools
 import os
 import sys
-import time
 from typing import List, Set, Generator, Iterable, FrozenSet, Tuple
 
-import numpy as np
+path = os.path.dirname(os.path.dirname(__file__))
+if path not in sys.path:
+    sys.path.append(path)
 
 from flow.flow import Flow
 from flow.flow_pattern_items import PATTERN_ITEMS_TYPE_CLASS_MAPPING, PatternFlowItem, \
-    PATTERN_OPERATION_TYPES, TUNNELING_PROTOCOL_TYPES, ALWAYS_ALLOWED_ITEMS, FlowItemEnd, FlowItemVxlan, FlowItemIpv4, \
-    FlowItemEth, FlowItemGre, L3_FLOW_TYPES, FlowItemVlan, FlowItemUdp
+    PATTERN_OPERATION_TYPES, ALWAYS_ALLOWED_ITEMS, FlowItemVxlan, FlowItemIpv4, \
+    FlowItemEth, FlowItemGre, L3_FLOW_TYPES, FlowItemUdp
 from flow.flow_rule import FlowItemType
 
 
diff --git a/tests/TestSuite_rte_flow.py b/tests/TestSuite_rte_flow.py
index 0cc9830f..d9bcff8a 100644
--- a/tests/TestSuite_rte_flow.py
+++ b/tests/TestSuite_rte_flow.py
@@ -44,7 +44,7 @@ from test_case import TestCase
 
 from test_case import TestCase
 
-from framework.flow import generator
+from flow import generator
 
 
 class RteFlow(TestCase):
@@ -95,9 +95,7 @@ class RteFlow(TestCase):
 
     def send_packets(self, packets, pass_fail_function: Callable[[str], bool], error_message: str):
         for packet in packets:
-            output = self.send_scapy_packet(0, packet)
-            time.sleep(5)  # Allow the packet to be processed
-            self.verify("Sent" in output, "Broken scapy packet definition: " + packet)
+            output = self.send_scapy_packet(self.dut_ports[1], packet)
             output = self.pmdout.get_output()
             self.verify(pass_fail_function(output),
                         error_message + "\r\n" + output)
@@ -164,22 +162,22 @@ class RteFlow(TestCase):
         self.do_test_with_queue_action(
             "ingress pattern eth / ipv4 / " + (
                     "void / " * 200) + "udp / end actions queue index 1 / end",
-            frozenset({'Ether() / IP() / UDP() / (\'\\x00\' * 64)'}),
+            frozenset({'Ether() / IP() / UDP() / Raw(\'\\x00\' * 64)'}),
             frozenset({
-                'Ether() / IP() / TCP() / (\'\\x00\' * 64)',
-                'Ether() / IP() / SCTP() / (\'\\x00\' * 64)',
-                'Ether() / IPv6() / UDP() / (\'\\x00\' * 64)',
+                'Ether() / IP() / TCP() / Raw(\'\\x00\' * 64)',
+                'Ether() / IP() / SCTP() / Raw(\'\\x00\' * 64)',
+                'Ether() / IPv6() / UDP() / Raw(\'\\x00\' * 64)',
             })
         )
 
     def test_excessive_tunneling(self):
         self.do_test_with_queue_action(
             "ingress pattern " + ("eth / gre / " * 20) + "eth / ipv4 / udp / end actions queue index 1 / end",
-            frozenset({'Ether() / IP() / UDP() / (\'\\x00\' * 64)'}),
+            frozenset({'Ether() / IP() / UDP() / Raw(\'\\x00\' * 64)'}),
             frozenset({
-                'Ether() / IP() / TCP() / (\'\\x00\' * 64)',
-                'Ether() / IP() / SCTP() / (\'\\x00\' * 64)',
-                'Ether() / IPv6() / UDP() / (\'\\x00\' * 64)',
+                'Ether() / IP() / TCP() / Raw(\'\\x00\' * 64)',
+                'Ether() / IP() / SCTP() / Raw(\'\\x00\' * 64)',
+                'Ether() / IPv6() / UDP() / Raw(\'\\x00\' * 64)',
             })
         )
 
@@ -192,11 +190,11 @@ class RteFlow(TestCase):
     def test_drop_case1(self):
         self.do_test_with_callable_tests_for_pass_fail(
             "ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions drop / end",
-            frozenset({'Ether() / IP(src="192.168.0.1") / UDP() / (\'\\x00\' * 64)'}),
-            frozenset({'Ether() / IP(src="10.0.30.99") / UDP() / (\'\\x00\' * 64)',
-                       'Ether() / IP(src="132.177.0.99") / UDP() / (\'\\x00\' * 64)',
-                       'Ether() / IP(src="192.168.0.2") / UDP() / (\'\\x00\' * 64)',
-                       'Ether() / IP(src="8.8.8.8") / UDP() / (\'\\x00\' * 64)'}),
+            frozenset({'Ether() / IP(src="192.168.0.1") / UDP() / Raw(\'\\x00\' * 64)'}),
+            frozenset({'Ether() / IP(src="10.0.30.99") / UDP() / Raw(\'\\x00\' * 64)',
+                       'Ether() / IP(src="132.177.0.99") / UDP() / Raw(\'\\x00\' * 64)',
+                       'Ether() / IP(src="192.168.0.2") / UDP() / Raw(\'\\x00\' * 64)',
+                       'Ether() / IP(src="8.8.8.8") / UDP() / Raw(\'\\x00\' * 64)'}),
             lambda output: "port" not in output,
             lambda output: "port" in output,
             "Drop function was not correctly applied")
@@ -204,11 +202,11 @@ class RteFlow(TestCase):
     def test_queue_case1(self):
         self.do_test_with_queue_action(
             "ingress pattern eth / ipv4 src is 192.168.0.1 / udp / end actions queue index 1 / end",
-            frozenset({'Ether() / IP(src="192.168.0.1") / UDP() / (\'\\x00\' * 64)'}), frozenset(
-                {'Ether() / IP(src="10.0.30.99") / UDP() / (\'\\x00\' * 64)',
-                 'Ether() / IP(src="132.177.0.99") / UDP() / (\'\\x00\' * 64)',
-                 'Ether() / IP(src="192.168.0.2") / UDP() / (\'\\x00\' * 64)',
-                 'Ether() / IP(src="8.8.8.8") / UDP() / (\'\\x00\' * 64)'}))
+            frozenset({'Ether() / IP(src="192.168.0.1") / UDP() / Raw(\'\\x00\' * 64)'}), frozenset(
+                {'Ether() / IP(src="10.0.30.99") / UDP() / Raw(\'\\x00\' * 64)',
+                 'Ether() / IP(src="132.177.0.99") / UDP() / Raw(\'\\x00\' * 64)',
+                 'Ether() / IP(src="192.168.0.2") / UDP() / Raw(\'\\x00\' * 64)',
+                 'Ether() / IP(src="8.8.8.8") / UDP() / Raw(\'\\x00\' * 64)'}))
 
 
 def do_runtime_test_generation():
-- 
2.30.2


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

end of thread, other threads:[~2021-09-06  7:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-23 19:02 [dts] [PATCH] framework/flow: Update rteflow for new scapy versions ohilyard
2021-09-06  7:09 ` Tu, Lijuan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).