[SDFAB-102] Backport changes required for policies to fabric.p4

Change-Id: I1c9a66c548b5d5e1d3a92ff29208263fb6844c0c
diff --git a/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricTreatmentInterpreter.java b/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricTreatmentInterpreter.java
index 9b33d2d..fe2d490 100644
--- a/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricTreatmentInterpreter.java
+++ b/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricTreatmentInterpreter.java
@@ -82,7 +82,7 @@
         }
 
         // VLAN_POP action is equivalent to the permit action (VLANs pop is done anyway)
-        if (isNoAction(treatment) || isFilteringPopAction(treatment)) {
+        if (isFilteringNoAction(treatment) || isFilteringPopAction(treatment)) {
             // Permit action if table is ingress_port_vlan;
             return nop(tableId);
         }
@@ -99,7 +99,7 @@
 
     static PiAction mapForwardingTreatment(TrafficTreatment treatment, PiTableId tableId)
             throws PiInterpreterException {
-        if (isNoAction(treatment)) {
+        if (isForwardingNoAction(treatment)) {
             return nop(tableId);
         }
         treatmentException(
@@ -211,8 +211,11 @@
 
     static PiAction mapAclTreatment(TrafficTreatment treatment, PiTableId tableId)
             throws PiInterpreterException {
-        if (isNoAction(treatment)) {
-            return nop(tableId);
+        if (isDrop(treatment)) {
+                return drop(tableId);
+        }
+        if (isForwardingNoAction(treatment)) {
+                return nop(tableId);
         }
         treatmentException(
                 tableId, treatment,
@@ -246,15 +249,31 @@
         return PiAction.builder().withId(NOP_ACTIONS.get(tableId)).build();
     }
 
-    private static boolean isNoAction(TrafficTreatment treatment) {
-        // Empty treatment OR
-        // No instructions OR
-        // Empty treatment AND writeMetadata
+    private static PiAction drop(PiTableId tableId) throws PiInterpreterException {
+        if (!tableId.equals(FabricConstants.FABRIC_INGRESS_ACL_ACL)) {
+            throw new PiInterpreterException(format("table '%s' doe not specify a nop action", tableId));
+        }
+        return PiAction.builder().withId(FabricConstants.FABRIC_INGRESS_ACL_DROP).build();
+    }
+
+    // NOTE: we use clearDeferred to signal when there are no more ports associated to a given vlan
+    private static boolean isFilteringNoAction(TrafficTreatment treatment) {
         return treatment.equals(DefaultTrafficTreatment.emptyTreatment()) ||
-                treatment.allInstructions().isEmpty() ||
+                (treatment.allInstructions().isEmpty()) ||
                 (treatment.allInstructions().size() == 1 && treatment.writeMetadata() != null);
     }
 
+    // NOTE: clearDeferred is used by the routing application to implement ACL drop and route black-holing
+    private static boolean isForwardingNoAction(TrafficTreatment treatment) {
+        return treatment.equals(DefaultTrafficTreatment.emptyTreatment()) ||
+                (treatment.allInstructions().isEmpty() && !treatment.clearedDeferred()) ||
+                (treatment.allInstructions().size() == 1 && treatment.writeMetadata() != null);
+    }
+
+    private static boolean isDrop(TrafficTreatment treatment) {
+        return treatment.allInstructions().isEmpty() && treatment.clearedDeferred();
+    }
+
     private static boolean isFilteringPopAction(TrafficTreatment treatment) {
         return l2Instruction(treatment, VLAN_POP) != null;
     }
diff --git a/pipelines/fabric/impl/src/main/resources/include/control/acl.p4 b/pipelines/fabric/impl/src/main/resources/include/control/acl.p4
index 80efa8f..34ef4d1 100644
--- a/pipelines/fabric/impl/src/main/resources/include/control/acl.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/control/acl.p4
@@ -24,6 +24,12 @@
              inout fabric_metadata_t fabric_metadata,
              inout standard_metadata_t standard_metadata) {
 
+    ipv4_addr_t ipv4_src    = 0;
+    ipv4_addr_t ipv4_dst    = 0;
+    bit<8> ip_proto         = 0;
+    l4_port_t l4_sport      = 0;
+    l4_port_t l4_dport      = 0;
+
     /*
      * ACL Table.
      */
@@ -59,18 +65,18 @@
 
     table acl {
         key = {
-            standard_metadata.ingress_port: ternary @name("ig_port"); // 9
-            fabric_metadata.ip_proto: ternary @name("ip_proto"); // 8
-            fabric_metadata.l4_sport: ternary @name("l4_sport"); // 16
-            fabric_metadata.l4_dport: ternary @name("l4_dport"); // 16
-            hdr.ethernet.dst_addr: ternary @name("eth_dst"); // 48
-            hdr.ethernet.src_addr: ternary @name("eth_src"); // 48
-            hdr.vlan_tag.vlan_id: ternary @name("vlan_id"); // 12
-            hdr.eth_type.value: ternary @name("eth_type"); //16
-            hdr.ipv4.src_addr: ternary @name("ipv4_src"); // 32
-            hdr.ipv4.dst_addr: ternary @name("ipv4_dst"); // 32
-            hdr.icmp.icmp_type: ternary @name("icmp_type"); // 8
-            hdr.icmp.icmp_code: ternary @name("icmp_code"); // 8
+            standard_metadata.ingress_port  : ternary @name("ig_port");   // 9
+            hdr.ethernet.dst_addr           : ternary @name("eth_dst");   // 48
+            hdr.ethernet.src_addr           : ternary @name("eth_src");   // 48
+            hdr.vlan_tag.vlan_id            : ternary @name("vlan_id");   // 12
+            hdr.eth_type.value              : ternary @name("eth_type");  // 16
+            ipv4_src                        : ternary @name("ipv4_src");  // 32
+            ipv4_dst                        : ternary @name("ipv4_dst");  // 32
+            ip_proto                        : ternary @name("ip_proto");  // 8
+            hdr.icmp.icmp_type              : ternary @name("icmp_type"); // 8
+            hdr.icmp.icmp_code              : ternary @name("icmp_code"); // 8
+            l4_sport                        : ternary @name("l4_sport");  // 16
+            l4_dport                        : ternary @name("l4_dport");  // 16
         }
 
         actions = {
@@ -87,6 +93,29 @@
     }
 
     apply {
+        if (hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()) {
+            ipv4_src = hdr.inner_ipv4.src_addr;
+            ipv4_dst = hdr.inner_ipv4.dst_addr;
+            ip_proto = hdr.inner_ipv4.protocol;
+            if (hdr.inner_tcp.isValid()) {
+                l4_sport = hdr.inner_tcp.sport;
+                l4_dport = hdr.inner_tcp.dport;
+            } else if (hdr.inner_udp.isValid()) {
+                l4_sport = hdr.inner_udp.sport;
+                l4_dport = hdr.inner_udp.dport;
+            }
+        } else if (hdr.ipv4.isValid()) {
+            ipv4_src = hdr.ipv4.src_addr;
+            ipv4_dst = hdr.ipv4.dst_addr;
+            ip_proto = hdr.ipv4.protocol;
+            if (hdr.tcp.isValid()) {
+                l4_sport = hdr.tcp.sport;
+                l4_dport = hdr.tcp.dport;
+            } else if (hdr.udp.isValid()) {
+                l4_sport = hdr.udp.sport;
+                l4_dport = hdr.udp.dport;
+            }
+        }
         acl.apply();
     }
 }
diff --git a/pipelines/fabric/impl/src/main/resources/include/header.p4 b/pipelines/fabric/impl/src/main/resources/include/header.p4
index 4b4e315..6b47a60 100644
--- a/pipelines/fabric/impl/src/main/resources/include/header.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/header.p4
@@ -227,12 +227,12 @@
     ipv4_t gtpu_ipv4;
     udp_t gtpu_udp;
     gtpu_t outer_gtpu;
+#endif // WITH_SPGW
     gtpu_t gtpu;
     ipv4_t inner_ipv4;
     udp_t inner_udp;
     tcp_t inner_tcp;
     icmp_t inner_icmp;
-#endif // WITH_SPGW
     ipv4_t ipv4;
 #ifdef WITH_IPV6
     ipv6_t ipv6;
diff --git a/pipelines/fabric/impl/src/main/resources/include/parser.p4 b/pipelines/fabric/impl/src/main/resources/include/parser.p4
index 5e5ee5b..699f32b 100644
--- a/pipelines/fabric/impl/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/parser.p4
@@ -183,10 +183,8 @@
         fabric_metadata.l4_dport = hdr.udp.dport;
         gtpu_t gtpu = packet.lookahead<gtpu_t>();
         transition select(hdr.udp.dport, gtpu.version, gtpu.msgtype) {
-#ifdef WITH_SPGW
-            // Treat GTP control traffic as payload.
-            (UDP_PORT_GTPU, GTP_V1, GTP_GPDU): parse_gtpu;
-#endif // WITH_SPGW
+        // Treat GTP control traffic as payload.
+        (UDP_PORT_GTPU, GTP_V1, GTP_GPDU): parse_gtpu;
 #ifdef WITH_INT
             default: parse_int;
 #else
@@ -200,7 +198,6 @@
         transition accept;
     }
 
-#ifdef WITH_SPGW
     state parse_gtpu {
         packet.extract(hdr.gtpu);
         transition parse_inner_ipv4;
@@ -219,8 +216,10 @@
 
     state parse_inner_udp {
         packet.extract(hdr.inner_udp);
+#ifdef WITH_SPGW
         fabric_metadata.inner_l4_sport = hdr.inner_udp.sport;
         fabric_metadata.inner_l4_dport = hdr.inner_udp.dport;
+#endif // WITH_SPGW
 #ifdef WITH_INT
         transition parse_int;
 #else
@@ -228,18 +227,19 @@
 #endif // WITH_INT
     }
 
-        state parse_inner_tcp {
+    state parse_inner_tcp {
         packet.extract(hdr.inner_tcp);
+#ifdef WITH_SPGW
         fabric_metadata.inner_l4_sport = hdr.inner_tcp.sport;
         fabric_metadata.inner_l4_dport = hdr.inner_tcp.dport;
+#endif // WITH_SPGW
         transition accept;
     }
 
-        state parse_inner_icmp {
+    state parse_inner_icmp {
         packet.extract(hdr.inner_icmp);
         transition accept;
     }
-#endif // WITH_SPGW
 
 #ifdef WITH_INT
     state parse_int {
@@ -315,14 +315,12 @@
         packet.emit(hdr.tcp);
         packet.emit(hdr.udp);
         packet.emit(hdr.icmp);
-#ifdef WITH_SPGW
         // if we parsed a GTPU packet but did not decap it
         packet.emit(hdr.gtpu);
         packet.emit(hdr.inner_ipv4);
         packet.emit(hdr.inner_tcp);
         packet.emit(hdr.inner_udp);
         packet.emit(hdr.inner_icmp);
-#endif // WITH_SPGW
 #ifdef WITH_INT
         packet.emit(hdr.intl4_shim);
         packet.emit(hdr.int_header);
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
index 7e5f3f2..7ca7062 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
@@ -14,6 +14,11 @@
         ["tmp_7", 64, false],
         ["tmp_8", 32, false],
         ["tmp_9", 32, false],
+        ["acl_ipv4_src", 32, false],
+        ["acl_ipv4_dst", 32, false],
+        ["acl_ip_proto", 8, false],
+        ["acl_l4_sport", 16, false],
+        ["acl_l4_dport", 16, false],
         ["bng_ingress_upstream_hasReturned", 1, false],
         ["userMetadata._ip_eth_type0", 16, false],
         ["userMetadata._vlan_id1", 12, false],
@@ -159,11 +164,21 @@
       ]
     },
     {
-      "name" : "tcp_t",
+      "name" : "udp_t",
       "id" : 10,
       "fields" : [
         ["sport", 16, false],
         ["dport", 16, false],
+        ["len", 16, false],
+        ["checksum", 16, false]
+      ]
+    },
+    {
+      "name" : "tcp_t",
+      "id" : 11,
+      "fields" : [
+        ["sport", 16, false],
+        ["dport", 16, false],
         ["seq_no", 32, false],
         ["ack_no", 32, false],
         ["data_offset", 4, false],
@@ -176,16 +191,6 @@
       ]
     },
     {
-      "name" : "udp_t",
-      "id" : 11,
-      "fields" : [
-        ["sport", 16, false],
-        ["dport", 16, false],
-        ["len", 16, false],
-        ["checksum", 16, false]
-      ]
-    },
-    {
       "name" : "icmp_t",
       "id" : 12,
       "fields" : [
@@ -278,43 +283,78 @@
       "pi_omit" : true
     },
     {
-      "name" : "ipv4",
+      "name" : "gtpu",
       "id" : 10,
+      "header_type" : "gtpu_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "inner_ipv4",
+      "id" : 11,
       "header_type" : "ipv4_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
-      "name" : "tcp",
-      "id" : 11,
-      "header_type" : "tcp_t",
-      "metadata" : false,
-      "pi_omit" : true
-    },
-    {
-      "name" : "udp",
+      "name" : "inner_udp",
       "id" : 12,
       "header_type" : "udp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
-      "name" : "icmp",
+      "name" : "inner_tcp",
       "id" : 13,
+      "header_type" : "tcp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "inner_icmp",
+      "id" : 14,
+      "header_type" : "icmp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "ipv4",
+      "id" : 15,
+      "header_type" : "ipv4_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "tcp",
+      "id" : 16,
+      "header_type" : "tcp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "udp",
+      "id" : 17,
+      "header_type" : "udp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "icmp",
+      "id" : 18,
       "header_type" : "icmp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "packet_out",
-      "id" : 14,
+      "id" : 19,
       "header_type" : "packet_out_header_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "packet_in",
-      "id" : 15,
+      "id" : 20,
       "header_type" : "packet_in_header_t",
       "metadata" : false,
       "pi_omit" : true
@@ -330,7 +370,7 @@
       "name" : "fl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 46,
+        "line" : 52,
         "column" : 40,
         "source_fragment" : "{standard_metadata.ingress_port}"
       },
@@ -1691,6 +1731,12 @@
           ],
           "transitions" : [
             {
+              "type" : "hexstr",
+              "value" : "0x086801ff",
+              "mask" : null,
+              "next_state" : "parse_gtpu"
+            },
+            {
               "type" : "default",
               "value" : null,
               "mask" : null,
@@ -1735,6 +1781,86 @@
             }
           ],
           "transition_key" : []
+        },
+        {
+          "name" : "parse_gtpu",
+          "id" : 14,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "gtpu"
+                }
+              ],
+              "op" : "extract"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "inner_ipv4"
+                }
+              ],
+              "op" : "extract"
+            }
+          ],
+          "transitions" : [
+            {
+              "type" : "hexstr",
+              "value" : "0x06",
+              "mask" : null,
+              "next_state" : "parse_tcp"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x11",
+              "mask" : null,
+              "next_state" : "parse_inner_udp"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01",
+              "mask" : null,
+              "next_state" : "parse_icmp"
+            },
+            {
+              "type" : "default",
+              "value" : null,
+              "mask" : null,
+              "next_state" : null
+            }
+          ],
+          "transition_key" : [
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ]
+        },
+        {
+          "name" : "parse_inner_udp",
+          "id" : 15,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "inner_udp"
+                }
+              ],
+              "op" : "extract"
+            }
+          ],
+          "transitions" : [
+            {
+              "type" : "default",
+              "value" : null,
+              "mask" : null,
+              "next_state" : null
+            }
+          ],
+          "transition_key" : []
         }
       ]
     }
@@ -1750,7 +1876,7 @@
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
-      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "pppoe", "mpls", "ipv4", "tcp", "udp", "icmp"],
+      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "pppoe", "mpls", "ipv4", "tcp", "udp", "icmp", "gtpu", "inner_ipv4", "inner_tcp", "inner_udp", "inner_icmp"],
       "primitives" : []
     }
   ],
@@ -1888,7 +2014,7 @@
       "binding" : "FabricIngress.acl.acl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 30,
+        "line" : 36,
         "column" : 50,
         "source_fragment" : "acl_counter"
       }
@@ -2765,7 +2891,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 33,
+            "line" : 39,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2791,7 +2917,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 39,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
           }
@@ -2820,7 +2946,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 40,
+            "line" : 46,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -2851,7 +2977,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 46,
+            "line" : 52,
             "column" : 8,
             "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
           }
@@ -2873,7 +2999,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 51,
+            "line" : 57,
             "column" : 8,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2902,7 +3028,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 52,
+            "line" : 58,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -3570,7 +3696,7 @@
       ]
     },
     {
-      "name" : "port_counter31",
+      "name" : "acl101",
       "id" : 39,
       "runtime_data" : [],
       "primitives" : [
@@ -3579,6 +3705,416 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 102,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl104",
+      "id" : 40,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 105,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl97",
+      "id" : 41,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.inner_ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 98,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.inner_ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 99,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.inner_ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl112",
+      "id" : 42,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 113,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl115",
+      "id" : 43,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 116,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl108",
+      "id" : 44,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 109,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl27",
+      "id" : 45,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 28,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_dst = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 29,
+            "column" : 4,
+            "source_fragment" : "bit<8> ip_proto = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 30,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_sport = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 31,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_dport = 0;"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "port_counter31",
+      "id" : 46,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp_8"]
             },
             {
@@ -3629,7 +4165,7 @@
     },
     {
       "name" : "port_counter34",
-      "id" : 40,
+      "id" : 47,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3687,7 +4223,7 @@
     },
     {
       "name" : "bng126",
-      "id" : 41,
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3723,7 +4259,7 @@
     },
     {
       "name" : "bng342",
-      "id" : 42,
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3772,7 +4308,7 @@
     },
     {
       "name" : "bng131",
-      "id" : 43,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3798,7 +4334,7 @@
     },
     {
       "name" : "bng238",
-      "id" : 44,
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3828,7 +4364,7 @@
     },
     {
       "name" : "bng241",
-      "id" : 45,
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3858,7 +4394,7 @@
     },
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v4",
-      "id" : 46,
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4055,7 +4591,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 47,
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4096,7 +4632,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 48,
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4213,7 +4749,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_outer_vlan",
-      "id" : 49,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4311,7 +4847,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_inner_vlan",
-      "id" : 50,
+      "id" : 57,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4428,7 +4964,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 51,
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4526,7 +5062,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 52,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4548,7 +5084,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 53,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4570,7 +5106,7 @@
     },
     {
       "name" : "packetio41",
-      "id" : 54,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4587,7 +5123,7 @@
     },
     {
       "name" : "packetio44",
-      "id" : 55,
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4638,7 +5174,7 @@
     },
     {
       "name" : "next349",
-      "id" : 56,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4660,7 +5196,7 @@
     },
     {
       "name" : "next365",
-      "id" : 57,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4682,7 +5218,7 @@
     },
     {
       "name" : "next376",
-      "id" : 58,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4704,7 +5240,7 @@
     },
     {
       "name" : "next375",
-      "id" : 59,
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4753,7 +5289,7 @@
     },
     {
       "name" : "next380",
-      "id" : 60,
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4775,7 +5311,7 @@
     },
     {
       "name" : "next379",
-      "id" : 61,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5092,10 +5628,10 @@
           "direct_meters" : null,
           "action_ids" : [20, 2],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_bridging" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 2,
@@ -5129,10 +5665,10 @@
           "direct_meters" : null,
           "action_ids" : [21, 3],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -5166,11 +5702,11 @@
           "direct_meters" : null,
           "action_ids" : [22, 23, 4],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
-            "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_acl27",
+            "FabricIngress.forwarding.nop_routing_v4" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 4,
@@ -5180,11 +5716,214 @@
           }
         },
         {
-          "name" : "FabricIngress.acl.acl",
+          "name" : "tbl_acl27",
           "id" : 9,
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 60,
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [45],
+          "actions" : ["acl27"],
+          "base_default_next" : "node_20",
+          "next_tables" : {
+            "acl27" : "node_20"
+          },
+          "default_entry" : {
+            "action_id" : 45,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl97",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 21,
+            "source_fragment" : "= hdr.inner_ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [41],
+          "actions" : ["acl97"],
+          "base_default_next" : "node_22",
+          "next_tables" : {
+            "acl97" : "node_22"
+          },
+          "default_entry" : {
+            "action_id" : 41,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl101",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [39],
+          "actions" : ["acl101"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl101" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 39,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl104",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [40],
+          "actions" : ["acl104"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl104" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 40,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl108",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 21,
+            "source_fragment" : "= hdr.ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [44],
+          "actions" : ["acl108"],
+          "base_default_next" : "node_28",
+          "next_tables" : {
+            "acl108" : "node_28"
+          },
+          "default_entry" : {
+            "action_id" : 44,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl112",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 25,
+            "source_fragment" : "= hdr.tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [42],
+          "actions" : ["acl112"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl112" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 42,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl115",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 25,
+            "source_fragment" : "= hdr.udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [43],
+          "actions" : ["acl115"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl115" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 43,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.acl.acl",
+          "id" : 16,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "acl"
           },
@@ -5197,24 +5936,6 @@
             },
             {
               "match_type" : "ternary",
-              "name" : "ip_proto",
-              "target" : ["scalars", "userMetadata._ip_proto16"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_sport",
-              "target" : ["scalars", "userMetadata._l4_sport17"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_dport",
-              "target" : ["scalars", "userMetadata._l4_dport18"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
               "name" : "eth_dst",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -5240,13 +5961,19 @@
             {
               "match_type" : "ternary",
               "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
+              "target" : ["scalars", "acl_ipv4_src"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
+              "target" : ["scalars", "acl_ipv4_dst"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ip_proto",
+              "target" : ["scalars", "acl_ip_proto"],
               "mask" : null
             },
             {
@@ -5260,6 +5987,18 @@
               "name" : "icmp_code",
               "target" : ["icmp", "icmp_code"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_sport",
+              "target" : ["scalars", "acl_l4_sport"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_dport",
+              "target" : ["scalars", "acl_l4_dport"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -5270,13 +6009,13 @@
           "direct_meters" : null,
           "action_ids" : [24, 25, 26, 27, 28],
           "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
-          "base_default_next" : "node_20",
+          "base_default_next" : "node_33",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_20",
-            "FabricIngress.acl.punt_to_cpu" : "node_20",
-            "FabricIngress.acl.set_clone_session_id" : "node_20",
-            "FabricIngress.acl.drop" : "node_20",
-            "FabricIngress.acl.nop_acl" : "node_20"
+            "FabricIngress.acl.set_next_id_acl" : "node_33",
+            "FabricIngress.acl.punt_to_cpu" : "node_33",
+            "FabricIngress.acl.set_clone_session_id" : "node_33",
+            "FabricIngress.acl.drop" : "node_33",
+            "FabricIngress.acl.nop_acl" : "node_33"
           },
           "default_entry" : {
             "action_id" : 28,
@@ -5287,7 +6026,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 10,
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 202,
@@ -5321,7 +6060,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 11,
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 236,
@@ -5358,7 +6097,7 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 12,
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 86,
@@ -5381,11 +6120,11 @@
           "direct_meters" : null,
           "action_ids" : [29, 30, 5],
           "actions" : ["FabricIngress.next.set_vlan", "FabricIngress.next.set_double_vlan", "nop"],
-          "base_default_next" : "node_24",
+          "base_default_next" : "node_37",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_24",
-            "FabricIngress.next.set_double_vlan" : "node_24",
-            "nop" : "node_24"
+            "FabricIngress.next.set_vlan" : "node_37",
+            "FabricIngress.next.set_double_vlan" : "node_37",
+            "nop" : "node_37"
           },
           "default_entry" : {
             "action_id" : 5,
@@ -5396,7 +6135,7 @@
         },
         {
           "name" : "tbl_port_counter31",
-          "id" : 13,
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -5410,14 +6149,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39],
+          "action_ids" : [46],
           "actions" : ["port_counter31"],
-          "base_default_next" : "node_26",
+          "base_default_next" : "node_39",
           "next_tables" : {
-            "port_counter31" : "node_26"
+            "port_counter31" : "node_39"
           },
           "default_entry" : {
-            "action_id" : 39,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5425,7 +6164,7 @@
         },
         {
           "name" : "tbl_port_counter34",
-          "id" : 14,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -5439,14 +6178,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40],
+          "action_ids" : [47],
           "actions" : ["port_counter34"],
           "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
           "next_tables" : {
             "port_counter34" : "FabricIngress.bng_ingress.t_line_map"
           },
           "default_entry" : {
-            "action_id" : 40,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5454,7 +6193,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.t_line_map",
-          "id" : 15,
+          "id" : 22,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 323,
@@ -5483,9 +6222,9 @@
           "direct_meters" : null,
           "action_ids" : [15],
           "actions" : ["FabricIngress.bng_ingress.set_line"],
-          "base_default_next" : "node_29",
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "FabricIngress.bng_ingress.set_line" : "node_29"
+            "FabricIngress.bng_ingress.set_line" : "node_42"
           },
           "default_entry" : {
             "action_id" : 15,
@@ -5496,7 +6235,7 @@
         },
         {
           "name" : "tbl_bng342",
-          "id" : 16,
+          "id" : 23,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 342,
@@ -5510,14 +6249,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [42],
+          "action_ids" : [49],
           "actions" : ["bng342"],
           "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
           "next_tables" : {
             "bng342" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
           },
           "default_entry" : {
-            "action_id" : 42,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5525,7 +6264,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "id" : 17,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 51,
@@ -5557,7 +6296,7 @@
           "base_default_next" : null,
           "next_tables" : {
             "__HIT__" : "tbl_bng126",
-            "__MISS__" : "node_33"
+            "__MISS__" : "node_46"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -5568,7 +6307,7 @@
         },
         {
           "name" : "tbl_bng126",
-          "id" : 18,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 126,
@@ -5582,14 +6321,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41],
+          "action_ids" : [48],
           "actions" : ["bng126"],
-          "base_default_next" : "node_33",
+          "base_default_next" : "node_46",
           "next_tables" : {
-            "bng126" : "node_33"
+            "bng126" : "node_46"
           },
           "default_entry" : {
-            "action_id" : 41,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5597,7 +6336,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "id" : 19,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 87,
@@ -5646,7 +6385,7 @@
         },
         {
           "name" : "tbl_bng131",
-          "id" : 20,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 131,
@@ -5660,14 +6399,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43],
+          "action_ids" : [50],
           "actions" : ["bng131"],
           "base_default_next" : null,
           "next_tables" : {
             "bng131" : null
           },
           "default_entry" : {
-            "action_id" : 43,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5675,7 +6414,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_line_session_map",
-          "id" : 21,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 169,
@@ -5701,7 +6440,7 @@
           "base_default_next" : null,
           "next_tables" : {
             "__MISS__" : null,
-            "__HIT__" : "node_38"
+            "__HIT__" : "node_51"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -5712,7 +6451,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "id" : 22,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 194,
@@ -5767,7 +6506,7 @@
         },
         {
           "name" : "tbl_bng238",
-          "id" : 23,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 238,
@@ -5781,14 +6520,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [44],
+          "action_ids" : [51],
           "actions" : ["bng238"],
           "base_default_next" : null,
           "next_tables" : {
             "bng238" : null
           },
           "default_entry" : {
-            "action_id" : 44,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5796,7 +6535,7 @@
         },
         {
           "name" : "tbl_bng241",
-          "id" : 24,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 241,
@@ -5810,14 +6549,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [45],
+          "action_ids" : [52],
           "actions" : ["bng241"],
           "base_default_next" : null,
           "next_tables" : {
             "bng241" : null
           },
           "default_entry" : {
-            "action_id" : 45,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5990,7 +6729,7 @@
             }
           },
           "true_next" : "node_13",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_13",
@@ -6068,12 +6807,167 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v4",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_20",
           "id" : 8,
           "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 96,
+            "column" : 12,
+            "source_fragment" : "hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "and",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["gtpu", "$valid$"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["inner_ipv4", "$valid$"]
+                  }
+                }
+              }
+            }
+          },
+          "true_next" : "tbl_acl97",
+          "false_next" : "node_26"
+        },
+        {
+          "name" : "node_22",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 100,
+            "column" : 16,
+            "source_fragment" : "hdr.inner_tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl101",
+          "false_next" : "node_24"
+        },
+        {
+          "name" : "node_24",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 103,
+            "column" : 23,
+            "source_fragment" : "hdr.inner_udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl104",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_26",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 107,
+            "column" : 19,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl108",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_28",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 111,
+            "column" : 16,
+            "source_fragment" : "hdr.tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl112",
+          "false_next" : "node_30"
+        },
+        {
+          "name" : "node_30",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 114,
+            "column" : 23,
+            "source_fragment" : "hdr.udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl115",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_33",
+          "id" : 14,
+          "source_info" : {
             "filename" : "fabric.p4",
             "line" : 73,
             "column" : 12,
@@ -6101,8 +6995,8 @@
           "false_next" : "FabricIngress.bng_ingress.t_line_map"
         },
         {
-          "name" : "node_24",
-          "id" : 9,
+          "name" : "node_37",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -6124,11 +7018,11 @@
             }
           },
           "true_next" : "tbl_port_counter31",
-          "false_next" : "node_26"
+          "false_next" : "node_39"
         },
         {
-          "name" : "node_26",
-          "id" : 10,
+          "name" : "node_39",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -6153,8 +7047,8 @@
           "false_next" : "FabricIngress.bng_ingress.t_line_map"
         },
         {
-          "name" : "node_29",
-          "id" : 11,
+          "name" : "node_42",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 341,
@@ -6176,8 +7070,8 @@
           "false_next" : "FabricIngress.bng_ingress.downstream.t_line_session_map"
         },
         {
-          "name" : "node_33",
-          "id" : 12,
+          "name" : "node_46",
+          "id" : 18,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -6197,11 +7091,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_34"
+          "true_next" : "node_47"
         },
         {
-          "name" : "node_34",
-          "id" : 13,
+          "name" : "node_47",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 128,
@@ -6223,8 +7117,8 @@
           "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4"
         },
         {
-          "name" : "node_38",
-          "id" : 14,
+          "name" : "node_51",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 235,
@@ -6256,11 +7150,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_44",
+      "init_table" : "node_57",
       "tables" : [
         {
           "name" : "tbl_packetio41",
-          "id" : 25,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -6274,14 +7168,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [61],
           "actions" : ["packetio41"],
-          "base_default_next" : "node_46",
+          "base_default_next" : "node_59",
           "next_tables" : {
-            "packetio41" : "node_46"
+            "packetio41" : "node_59"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6289,7 +7183,7 @@
         },
         {
           "name" : "tbl_packetio44",
-          "id" : 26,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -6303,14 +7197,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [55],
+          "action_ids" : [62],
           "actions" : ["packetio44"],
-          "base_default_next" : "node_48",
+          "base_default_next" : "node_61",
           "next_tables" : {
-            "packetio44" : "node_48"
+            "packetio44" : "node_61"
           },
           "default_entry" : {
-            "action_id" : 55,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6318,7 +7212,7 @@
         },
         {
           "name" : "tbl_next349",
-          "id" : 27,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 349,
@@ -6332,14 +7226,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56],
+          "action_ids" : [63],
           "actions" : ["next349"],
-          "base_default_next" : "node_50",
+          "base_default_next" : "node_63",
           "next_tables" : {
-            "next349" : "node_50"
+            "next349" : "node_63"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6347,7 +7241,7 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 28,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -6361,14 +7255,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [47],
+          "action_ids" : [54],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
-          "base_default_next" : "node_54",
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "FabricEgress.egress_next.pop_mpls_if_present" : "node_54"
+            "FabricEgress.egress_next.pop_mpls_if_present" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 47,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6376,7 +7270,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 29,
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 355,
@@ -6390,14 +7284,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [48],
+          "action_ids" : [55],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
-          "base_default_next" : "node_54",
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "FabricEgress.egress_next.set_mpls" : "node_54"
+            "FabricEgress.egress_next.set_mpls" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 55,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6405,7 +7299,7 @@
         },
         {
           "name" : "tbl_egress_next_push_outer_vlan",
-          "id" : 30,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 361,
@@ -6419,14 +7313,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49],
+          "action_ids" : [56],
           "actions" : ["FabricEgress.egress_next.push_outer_vlan"],
           "base_default_next" : "tbl_egress_next_push_inner_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.push_outer_vlan" : "tbl_egress_next_push_inner_vlan"
           },
           "default_entry" : {
-            "action_id" : 49,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6434,7 +7328,7 @@
         },
         {
           "name" : "tbl_egress_next_push_inner_vlan",
-          "id" : 31,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 362,
@@ -6448,14 +7342,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50],
+          "action_ids" : [57],
           "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
-          "base_default_next" : "node_59",
+          "base_default_next" : "node_72",
           "next_tables" : {
-            "FabricEgress.egress_next.push_inner_vlan" : "node_59"
+            "FabricEgress.egress_next.push_inner_vlan" : "node_72"
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6463,7 +7357,7 @@
         },
         {
           "name" : "tbl_next365",
-          "id" : 32,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 365,
@@ -6477,14 +7371,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [57],
+          "action_ids" : [64],
           "actions" : ["next365"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "next365" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 64,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6492,7 +7386,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 33,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -6519,16 +7413,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51, 52, 53],
+          "action_ids" : [58, 59, 60],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
-          "base_default_next" : "node_59",
+          "base_default_next" : "node_72",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_59",
-            "FabricEgress.egress_next.pop_vlan" : "node_59",
-            "FabricEgress.egress_next.drop" : "node_59"
+            "FabricEgress.egress_next.push_vlan" : "node_72",
+            "FabricEgress.egress_next.pop_vlan" : "node_72",
+            "FabricEgress.egress_next.drop" : "node_72"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 60,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6536,7 +7430,7 @@
         },
         {
           "name" : "tbl_next375",
-          "id" : 34,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 375,
@@ -6550,14 +7444,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59],
+          "action_ids" : [66],
           "actions" : ["next375"],
-          "base_default_next" : "node_61",
+          "base_default_next" : "node_74",
           "next_tables" : {
-            "next375" : "node_61"
+            "next375" : "node_74"
           },
           "default_entry" : {
-            "action_id" : 59,
+            "action_id" : 66,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6565,7 +7459,7 @@
         },
         {
           "name" : "tbl_next376",
-          "id" : 35,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -6579,14 +7473,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
+          "action_ids" : [65],
           "actions" : ["next376"],
-          "base_default_next" : "node_67",
+          "base_default_next" : "node_80",
           "next_tables" : {
-            "next376" : "node_67"
+            "next376" : "node_80"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 65,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6594,7 +7488,7 @@
         },
         {
           "name" : "tbl_next379",
-          "id" : 36,
+          "id" : 43,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 379,
@@ -6608,14 +7502,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
+          "action_ids" : [68],
           "actions" : ["next379"],
-          "base_default_next" : "node_65",
+          "base_default_next" : "node_78",
           "next_tables" : {
-            "next379" : "node_65"
+            "next379" : "node_78"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 68,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6623,7 +7517,7 @@
         },
         {
           "name" : "tbl_next380",
-          "id" : 37,
+          "id" : 44,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -6637,14 +7531,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60],
+          "action_ids" : [67],
           "actions" : ["next380"],
-          "base_default_next" : "node_67",
+          "base_default_next" : "node_80",
           "next_tables" : {
-            "next380" : "node_67"
+            "next380" : "node_80"
           },
           "default_entry" : {
-            "action_id" : 60,
+            "action_id" : 67,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6652,7 +7546,7 @@
         },
         {
           "name" : "tbl_bng_egress_downstream_encap_v4",
-          "id" : 38,
+          "id" : 45,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 297,
@@ -6666,14 +7560,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [46],
+          "action_ids" : [53],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.bng_egress.downstream.encap_v4" : null
           },
           "default_entry" : {
-            "action_id" : 46,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6683,8 +7577,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_44",
-          "id" : 15,
+          "name" : "node_57",
+          "id" : 21,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 103,
@@ -6703,11 +7597,11 @@
             }
           },
           "true_next" : "tbl_packetio41",
-          "false_next" : "node_46"
+          "false_next" : "node_59"
         },
         {
-          "name" : "node_46",
-          "id" : 16,
+          "name" : "node_59",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -6729,11 +7623,11 @@
             }
           },
           "true_next" : "tbl_packetio44",
-          "false_next" : "node_48"
+          "false_next" : "node_61"
         },
         {
-          "name" : "node_48",
-          "id" : 17,
+          "name" : "node_61",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 347,
@@ -6772,11 +7666,11 @@
             }
           },
           "true_next" : "tbl_next349",
-          "false_next" : "node_50"
+          "false_next" : "node_63"
         },
         {
-          "name" : "node_50",
-          "id" : 18,
+          "name" : "node_63",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 352,
@@ -6797,12 +7691,12 @@
               }
             }
           },
-          "true_next" : "node_51",
+          "true_next" : "node_64",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_51",
-          "id" : 19,
+          "name" : "node_64",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -6821,11 +7715,11 @@
             }
           },
           "true_next" : "tbl_egress_next_pop_mpls_if_present",
-          "false_next" : "node_54"
+          "false_next" : "node_67"
         },
         {
-          "name" : "node_54",
-          "id" : 20,
+          "name" : "node_67",
+          "id" : 26,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 104,
@@ -6847,8 +7741,8 @@
           "false_next" : "tbl_next365"
         },
         {
-          "name" : "node_59",
-          "id" : 21,
+          "name" : "node_72",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 374,
@@ -6867,11 +7761,11 @@
             }
           },
           "true_next" : "tbl_next375",
-          "false_next" : "node_63"
+          "false_next" : "node_76"
         },
         {
-          "name" : "node_61",
-          "id" : 22,
+          "name" : "node_74",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -6893,11 +7787,11 @@
             }
           },
           "true_next" : "tbl_next376",
-          "false_next" : "node_67"
+          "false_next" : "node_80"
         },
         {
-          "name" : "node_63",
-          "id" : 23,
+          "name" : "node_76",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 378,
@@ -6936,11 +7830,11 @@
             }
           },
           "true_next" : "tbl_next379",
-          "false_next" : "node_67"
+          "false_next" : "node_80"
         },
         {
-          "name" : "node_65",
-          "id" : 24,
+          "name" : "node_78",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -6962,11 +7856,11 @@
             }
           },
           "true_next" : "tbl_next380",
-          "false_next" : "node_67"
+          "false_next" : "node_80"
         },
         {
-          "name" : "node_67",
-          "id" : 25,
+          "name" : "node_80",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 358,
@@ -6988,11 +7882,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_68"
+          "true_next" : "node_81"
         },
         {
-          "name" : "node_68",
-          "id" : 26,
+          "name" : "node_81",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 296,
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
index aea728f..6124129 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
@@ -327,70 +327,70 @@
   }
   match_fields {
     id: 2
-    name: "ip_proto"
-    bitwidth: 8
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 3
-    name: "l4_sport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 4
-    name: "l4_dport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 5
     name: "eth_dst"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 6
+    id: 3
     name: "eth_src"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 7
+    id: 4
     name: "vlan_id"
     bitwidth: 12
     match_type: TERNARY
   }
   match_fields {
-    id: 8
+    id: 5
     name: "eth_type"
     bitwidth: 16
     match_type: TERNARY
   }
   match_fields {
-    id: 9
+    id: 6
     name: "ipv4_src"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 10
+    id: 7
     name: "ipv4_dst"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 11
+    id: 8
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
     name: "icmp_type"
     bitwidth: 8
     match_type: TERNARY
   }
   match_fields {
-    id: 12
+    id: 10
     name: "icmp_code"
     bitwidth: 8
     match_type: TERNARY
   }
+  match_fields {
+    id: 11
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
   action_refs {
     id: 23623126
   }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
index 62424cc..0d7722d 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
@@ -16,6 +16,11 @@
         ["tmp_7", 64, false],
         ["tmp_9", 32, false],
         ["tmp_10", 32, false],
+        ["acl_ipv4_src", 32, false],
+        ["acl_ipv4_dst", 32, false],
+        ["acl_ip_proto", 8, false],
+        ["acl_l4_sport", 16, false],
+        ["acl_l4_dport", 16, false],
         ["bng_ingress_upstream_hasReturned", 1, false],
         ["key_0", 64, false],
         ["process_int_main_process_int_transit_hasReturned", 1, false],
@@ -674,7 +679,7 @@
       "name" : "fl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 46,
+        "line" : 52,
         "column" : 40,
         "source_fragment" : "{standard_metadata.ingress_port}"
       },
@@ -2717,7 +2722,7 @@
       "binding" : "FabricIngress.acl.acl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 30,
+        "line" : 36,
         "column" : 50,
         "source_fragment" : "acl_counter"
       }
@@ -3973,7 +3978,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 33,
+            "line" : 39,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -3999,7 +4004,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 39,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
           }
@@ -4028,7 +4033,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 40,
+            "line" : 46,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -4059,7 +4064,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 46,
+            "line" : 52,
             "column" : 8,
             "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
           }
@@ -4081,7 +4086,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 51,
+            "line" : 57,
             "column" : 8,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4110,7 +4115,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 52,
+            "line" : 58,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -8087,7 +8092,7 @@
       ]
     },
     {
-      "name" : "port_counter31",
+      "name" : "acl101",
       "id" : 77,
       "runtime_data" : [],
       "primitives" : [
@@ -8096,6 +8101,416 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 102,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl104",
+      "id" : 78,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 105,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl97",
+      "id" : 79,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.inner_ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 98,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.inner_ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 99,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.inner_ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl112",
+      "id" : 80,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 113,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl115",
+      "id" : 81,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 116,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl108",
+      "id" : 82,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 109,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl27",
+      "id" : 83,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 28,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_dst = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 29,
+            "column" : 4,
+            "source_fragment" : "bit<8> ip_proto = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 30,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_sport = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 31,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_dport = 0;"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "port_counter31",
+      "id" : 84,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp_9"]
             },
             {
@@ -8146,7 +8561,7 @@
     },
     {
       "name" : "port_counter34",
-      "id" : 78,
+      "id" : 85,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8204,7 +8619,7 @@
     },
     {
       "name" : "int_main89",
-      "id" : 79,
+      "id" : 86,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8230,7 +8645,7 @@
     },
     {
       "name" : "bng126",
-      "id" : 80,
+      "id" : 87,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8266,7 +8681,7 @@
     },
     {
       "name" : "bng342",
-      "id" : 81,
+      "id" : 88,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8315,7 +8730,7 @@
     },
     {
       "name" : "bng131",
-      "id" : 82,
+      "id" : 89,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8341,7 +8756,7 @@
     },
     {
       "name" : "bng139",
-      "id" : 83,
+      "id" : 90,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8367,7 +8782,7 @@
     },
     {
       "name" : "bng112",
-      "id" : 84,
+      "id" : 91,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8426,7 +8841,7 @@
     },
     {
       "name" : "bng238",
-      "id" : 85,
+      "id" : 92,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8456,7 +8871,7 @@
     },
     {
       "name" : "bng241",
-      "id" : 86,
+      "id" : 93,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8486,7 +8901,7 @@
     },
     {
       "name" : "bng250",
-      "id" : 87,
+      "id" : 94,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8516,7 +8931,7 @@
     },
     {
       "name" : "bng253",
-      "id" : 88,
+      "id" : 95,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8546,37 +8961,37 @@
     },
     {
       "name" : "nop",
-      "id" : 89,
+      "id" : 96,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "nop",
-      "id" : 90,
+      "id" : 97,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "nop",
-      "id" : 91,
+      "id" : 98,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "NoAction",
-      "id" : 92,
+      "id" : 99,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "NoAction",
-      "id" : 93,
+      "id" : 100,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v4",
-      "id" : 94,
+      "id" : 101,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8773,7 +9188,7 @@
     },
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v6",
-      "id" : 95,
+      "id" : 102,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8970,7 +9385,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
-      "id" : 96,
+      "id" : 103,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -9465,7 +9880,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 97,
+      "id" : 104,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -9525,13 +9940,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 98,
+      "id" : 105,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 99,
+      "id" : 106,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9688,7 +10103,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 100,
+      "id" : 107,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9813,7 +10228,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 101,
+      "id" : 108,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10004,7 +10419,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 102,
+      "id" : 109,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10174,7 +10589,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
-      "id" : 103,
+      "id" : 110,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10410,7 +10825,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
-      "id" : 104,
+      "id" : 111,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10614,7 +11029,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
-      "id" : 105,
+      "id" : 112,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10884,7 +11299,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 106,
+      "id" : 113,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11009,7 +11424,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
-      "id" : 107,
+      "id" : 114,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11200,7 +11615,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
-      "id" : 108,
+      "id" : 115,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11359,7 +11774,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
-      "id" : 109,
+      "id" : 116,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11584,7 +11999,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 110,
+      "id" : 117,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11788,7 +12203,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
-      "id" : 111,
+      "id" : 118,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12058,7 +12473,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
-      "id" : 112,
+      "id" : 119,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12296,7 +12711,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
-      "id" : 113,
+      "id" : 120,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12600,13 +13015,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 114,
+      "id" : 121,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 115,
+      "id" : 122,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12731,7 +13146,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 116,
+      "id" : 123,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12875,7 +13290,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 117,
+      "id" : 124,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13053,7 +13468,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 118,
+      "id" : 125,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13201,7 +13616,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
-      "id" : 119,
+      "id" : 126,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13383,7 +13798,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
-      "id" : 120,
+      "id" : 127,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13584,7 +13999,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
-      "id" : 121,
+      "id" : 128,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13819,7 +14234,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 122,
+      "id" : 129,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13944,7 +14359,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
-      "id" : 123,
+      "id" : 130,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14103,7 +14518,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
-      "id" : 124,
+      "id" : 131,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14281,7 +14696,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
-      "id" : 125,
+      "id" : 132,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14493,7 +14908,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 126,
+      "id" : 133,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14675,7 +15090,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
-      "id" : 127,
+      "id" : 134,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14891,7 +15306,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
-      "id" : 128,
+      "id" : 135,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15126,7 +15541,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
-      "id" : 129,
+      "id" : 136,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15395,7 +15810,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_report.do_report_encapsulation",
-      "id" : 130,
+      "id" : 137,
       "runtime_data" : [
         {
           "name" : "src_mac",
@@ -16057,7 +16472,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_sink.restore_header",
-      "id" : 131,
+      "id" : 138,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16102,7 +16517,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_sink.int_sink",
-      "id" : 132,
+      "id" : 139,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16433,7 +16848,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 133,
+      "id" : 140,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16474,7 +16889,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 134,
+      "id" : 141,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16591,7 +17006,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_outer_vlan",
-      "id" : 135,
+      "id" : 142,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16689,7 +17104,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_inner_vlan",
-      "id" : 136,
+      "id" : 143,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16806,7 +17221,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 137,
+      "id" : 144,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16904,7 +17319,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 138,
+      "id" : 145,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16926,7 +17341,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 139,
+      "id" : 146,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16948,7 +17363,7 @@
     },
     {
       "name" : "FabricEgress.spgw.gtpu_encap",
-      "id" : 140,
+      "id" : 147,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17540,7 +17955,7 @@
     },
     {
       "name" : "packetio41",
-      "id" : 141,
+      "id" : 148,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17557,7 +17972,7 @@
     },
     {
       "name" : "packetio44",
-      "id" : 142,
+      "id" : 149,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17608,7 +18023,7 @@
     },
     {
       "name" : "next349",
-      "id" : 143,
+      "id" : 150,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17630,7 +18045,7 @@
     },
     {
       "name" : "next365",
-      "id" : 144,
+      "id" : 151,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17652,7 +18067,7 @@
     },
     {
       "name" : "next376",
-      "id" : 145,
+      "id" : 152,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17674,7 +18089,7 @@
     },
     {
       "name" : "next375",
-      "id" : 146,
+      "id" : 153,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17723,7 +18138,7 @@
     },
     {
       "name" : "next380",
-      "id" : 147,
+      "id" : 154,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17745,7 +18160,7 @@
     },
     {
       "name" : "next379",
-      "id" : 148,
+      "id" : 155,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17794,7 +18209,7 @@
     },
     {
       "name" : "next385",
-      "id" : 149,
+      "id" : 156,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17816,7 +18231,7 @@
     },
     {
       "name" : "next384",
-      "id" : 150,
+      "id" : 157,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17865,7 +18280,7 @@
     },
     {
       "name" : "spgw342",
-      "id" : 151,
+      "id" : 158,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17891,7 +18306,7 @@
     },
     {
       "name" : "act",
-      "id" : 152,
+      "id" : 159,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17921,7 +18336,7 @@
     },
     {
       "name" : "int_transit420",
-      "id" : 153,
+      "id" : 160,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17957,7 +18372,7 @@
     },
     {
       "name" : "int_transit428",
-      "id" : 154,
+      "id" : 161,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -18006,7 +18421,7 @@
     },
     {
       "name" : "int_transit425",
-      "id" : 155,
+      "id" : 162,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -18055,7 +18470,7 @@
     },
     {
       "name" : "int_transit431",
-      "id" : 156,
+      "id" : 163,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -18104,7 +18519,7 @@
     },
     {
       "name" : "int_transit434",
-      "id" : 157,
+      "id" : 164,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -18910,10 +19325,10 @@
           "direct_meters" : null,
           "action_ids" : [33, 4],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_bridging" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 4,
@@ -18947,10 +19362,10 @@
           "direct_meters" : null,
           "action_ids" : [34, 5],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 5,
@@ -18984,11 +19399,11 @@
           "direct_meters" : null,
           "action_ids" : [35, 36, 6],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
-            "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_acl27",
+            "FabricIngress.forwarding.nop_routing_v4" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 6,
@@ -19022,10 +19437,10 @@
           "direct_meters" : null,
           "action_ids" : [37, 7],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v6", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v6" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v6" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 7,
@@ -19035,11 +19450,214 @@
           }
         },
         {
-          "name" : "FabricIngress.acl.acl",
+          "name" : "tbl_acl27",
           "id" : 18,
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 60,
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [83],
+          "actions" : ["acl27"],
+          "base_default_next" : "node_34",
+          "next_tables" : {
+            "acl27" : "node_34"
+          },
+          "default_entry" : {
+            "action_id" : 83,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl97",
+          "id" : 19,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 21,
+            "source_fragment" : "= hdr.inner_ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [79],
+          "actions" : ["acl97"],
+          "base_default_next" : "node_36",
+          "next_tables" : {
+            "acl97" : "node_36"
+          },
+          "default_entry" : {
+            "action_id" : 79,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl101",
+          "id" : 20,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [77],
+          "actions" : ["acl101"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl101" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 77,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl104",
+          "id" : 21,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [78],
+          "actions" : ["acl104"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl104" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 78,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl108",
+          "id" : 22,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 21,
+            "source_fragment" : "= hdr.ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [82],
+          "actions" : ["acl108"],
+          "base_default_next" : "node_42",
+          "next_tables" : {
+            "acl108" : "node_42"
+          },
+          "default_entry" : {
+            "action_id" : 82,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl112",
+          "id" : 23,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 25,
+            "source_fragment" : "= hdr.tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [80],
+          "actions" : ["acl112"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl112" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 80,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl115",
+          "id" : 24,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 25,
+            "source_fragment" : "= hdr.udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [81],
+          "actions" : ["acl115"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl115" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 81,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.acl.acl",
+          "id" : 25,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "acl"
           },
@@ -19052,24 +19670,6 @@
             },
             {
               "match_type" : "ternary",
-              "name" : "ip_proto",
-              "target" : ["scalars", "userMetadata._ip_proto16"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_sport",
-              "target" : ["scalars", "userMetadata._l4_sport17"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_dport",
-              "target" : ["scalars", "userMetadata._l4_dport18"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
               "name" : "eth_dst",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -19095,13 +19695,19 @@
             {
               "match_type" : "ternary",
               "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
+              "target" : ["scalars", "acl_ipv4_src"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
+              "target" : ["scalars", "acl_ipv4_dst"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ip_proto",
+              "target" : ["scalars", "acl_ip_proto"],
               "mask" : null
             },
             {
@@ -19115,6 +19721,18 @@
               "name" : "icmp_code",
               "target" : ["icmp", "icmp_code"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_sport",
+              "target" : ["scalars", "acl_l4_sport"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_dport",
+              "target" : ["scalars", "acl_l4_dport"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -19125,13 +19743,13 @@
           "direct_meters" : null,
           "action_ids" : [38, 39, 40, 41, 42],
           "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
-          "base_default_next" : "node_34",
+          "base_default_next" : "node_47",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_34",
-            "FabricIngress.acl.punt_to_cpu" : "node_34",
-            "FabricIngress.acl.set_clone_session_id" : "node_34",
-            "FabricIngress.acl.drop" : "node_34",
-            "FabricIngress.acl.nop_acl" : "node_34"
+            "FabricIngress.acl.set_next_id_acl" : "node_47",
+            "FabricIngress.acl.punt_to_cpu" : "node_47",
+            "FabricIngress.acl.set_clone_session_id" : "node_47",
+            "FabricIngress.acl.drop" : "node_47",
+            "FabricIngress.acl.nop_acl" : "node_47"
           },
           "default_entry" : {
             "action_id" : 42,
@@ -19142,7 +19760,7 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 19,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 119,
@@ -19186,7 +19804,7 @@
         },
         {
           "name" : "FabricIngress.next.simple",
-          "id" : 20,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 158,
@@ -19225,7 +19843,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 21,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 202,
@@ -19259,7 +19877,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 22,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 236,
@@ -19296,7 +19914,7 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 23,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 86,
@@ -19319,11 +19937,11 @@
           "direct_meters" : null,
           "action_ids" : [43, 44, 8],
           "actions" : ["FabricIngress.next.set_vlan", "FabricIngress.next.set_double_vlan", "nop"],
-          "base_default_next" : "node_40",
+          "base_default_next" : "node_53",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_40",
-            "FabricIngress.next.set_double_vlan" : "node_40",
-            "nop" : "node_40"
+            "FabricIngress.next.set_vlan" : "node_53",
+            "FabricIngress.next.set_double_vlan" : "node_53",
+            "nop" : "node_53"
           },
           "default_entry" : {
             "action_id" : 8,
@@ -19334,7 +19952,7 @@
         },
         {
           "name" : "tbl_port_counter31",
-          "id" : 24,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -19348,14 +19966,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [77],
+          "action_ids" : [84],
           "actions" : ["port_counter31"],
-          "base_default_next" : "node_42",
+          "base_default_next" : "node_55",
           "next_tables" : {
-            "port_counter31" : "node_42"
+            "port_counter31" : "node_55"
           },
           "default_entry" : {
-            "action_id" : 77,
+            "action_id" : 84,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19363,7 +19981,7 @@
         },
         {
           "name" : "tbl_port_counter34",
-          "id" : 25,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -19377,14 +19995,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [78],
+          "action_ids" : [85],
           "actions" : ["port_counter34"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
             "port_counter34" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 78,
+            "action_id" : 85,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19392,7 +20010,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_source",
-          "id" : 26,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 46,
@@ -19429,7 +20047,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_sink",
-          "id" : 27,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 67,
@@ -19452,10 +20070,10 @@
           "direct_meters" : null,
           "action_ids" : [16, 1],
           "actions" : ["FabricIngress.process_set_source_sink.int_set_sink", "nop"],
-          "base_default_next" : "node_46",
+          "base_default_next" : "node_59",
           "next_tables" : {
-            "FabricIngress.process_set_source_sink.int_set_sink" : "node_46",
-            "nop" : "node_46"
+            "FabricIngress.process_set_source_sink.int_set_sink" : "node_59",
+            "nop" : "node_59"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -19466,7 +20084,7 @@
         },
         {
           "name" : "tbl_int_main89",
-          "id" : 28,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 89,
@@ -19480,14 +20098,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [79],
+          "action_ids" : [86],
           "actions" : ["int_main89"],
           "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
           "next_tables" : {
             "int_main89" : "FabricIngress.bng_ingress.t_line_map"
           },
           "default_entry" : {
-            "action_id" : 79,
+            "action_id" : 86,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19495,7 +20113,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.t_line_map",
-          "id" : 29,
+          "id" : 36,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 323,
@@ -19524,9 +20142,9 @@
           "direct_meters" : null,
           "action_ids" : [28],
           "actions" : ["FabricIngress.bng_ingress.set_line"],
-          "base_default_next" : "node_49",
+          "base_default_next" : "node_62",
           "next_tables" : {
-            "FabricIngress.bng_ingress.set_line" : "node_49"
+            "FabricIngress.bng_ingress.set_line" : "node_62"
           },
           "default_entry" : {
             "action_id" : 28,
@@ -19537,7 +20155,7 @@
         },
         {
           "name" : "tbl_bng342",
-          "id" : 30,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 342,
@@ -19551,14 +20169,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [81],
+          "action_ids" : [88],
           "actions" : ["bng342"],
           "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
           "next_tables" : {
             "bng342" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
           },
           "default_entry" : {
-            "action_id" : 81,
+            "action_id" : 88,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19566,7 +20184,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "id" : 31,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 51,
@@ -19598,7 +20216,7 @@
           "base_default_next" : null,
           "next_tables" : {
             "__HIT__" : "tbl_bng126",
-            "__MISS__" : "node_53"
+            "__MISS__" : "node_66"
           },
           "default_entry" : {
             "action_id" : 2,
@@ -19609,7 +20227,7 @@
         },
         {
           "name" : "tbl_bng126",
-          "id" : 32,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 126,
@@ -19623,14 +20241,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [80],
+          "action_ids" : [87],
           "actions" : ["bng126"],
-          "base_default_next" : "node_53",
+          "base_default_next" : "node_66",
           "next_tables" : {
-            "bng126" : "node_53"
+            "bng126" : "node_66"
           },
           "default_entry" : {
-            "action_id" : 80,
+            "action_id" : 87,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19638,7 +20256,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "id" : 33,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 87,
@@ -19687,7 +20305,7 @@
         },
         {
           "name" : "tbl_bng131",
-          "id" : 34,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 131,
@@ -19701,14 +20319,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [82],
+          "action_ids" : [89],
           "actions" : ["bng131"],
           "base_default_next" : null,
           "next_tables" : {
             "bng131" : null
           },
           "default_entry" : {
-            "action_id" : 82,
+            "action_id" : 89,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19716,7 +20334,7 @@
         },
         {
           "name" : "tbl_bng112",
-          "id" : 35,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 112,
@@ -19730,14 +20348,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [84],
+          "action_ids" : [91],
           "actions" : ["bng112"],
           "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
           "next_tables" : {
             "bng112" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6"
           },
           "default_entry" : {
-            "action_id" : 84,
+            "action_id" : 91,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19745,7 +20363,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
-          "id" : 36,
+          "id" : 43,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 109,
@@ -19794,7 +20412,7 @@
         },
         {
           "name" : "tbl_bng139",
-          "id" : 37,
+          "id" : 44,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 139,
@@ -19808,14 +20426,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [83],
+          "action_ids" : [90],
           "actions" : ["bng139"],
           "base_default_next" : null,
           "next_tables" : {
             "bng139" : null
           },
           "default_entry" : {
-            "action_id" : 83,
+            "action_id" : 90,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19823,7 +20441,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_line_session_map",
-          "id" : 38,
+          "id" : 45,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 169,
@@ -19849,7 +20467,7 @@
           "base_default_next" : null,
           "next_tables" : {
             "__MISS__" : null,
-            "__HIT__" : "node_62"
+            "__HIT__" : "node_75"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -19860,7 +20478,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "id" : 39,
+          "id" : 46,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 194,
@@ -19915,7 +20533,7 @@
         },
         {
           "name" : "tbl_bng238",
-          "id" : 40,
+          "id" : 47,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 238,
@@ -19929,14 +20547,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [85],
+          "action_ids" : [92],
           "actions" : ["bng238"],
           "base_default_next" : null,
           "next_tables" : {
             "bng238" : null
           },
           "default_entry" : {
-            "action_id" : 85,
+            "action_id" : 92,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19944,7 +20562,7 @@
         },
         {
           "name" : "tbl_bng241",
-          "id" : 41,
+          "id" : 48,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 241,
@@ -19958,14 +20576,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [86],
+          "action_ids" : [93],
           "actions" : ["bng241"],
           "base_default_next" : null,
           "next_tables" : {
             "bng241" : null
           },
           "default_entry" : {
-            "action_id" : 86,
+            "action_id" : 93,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19973,7 +20591,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_qos_v6",
-          "id" : 42,
+          "id" : 49,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 210,
@@ -20022,7 +20640,7 @@
         },
         {
           "name" : "tbl_bng250",
-          "id" : 43,
+          "id" : 50,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 250,
@@ -20036,14 +20654,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [87],
+          "action_ids" : [94],
           "actions" : ["bng250"],
           "base_default_next" : null,
           "next_tables" : {
             "bng250" : null
           },
           "default_entry" : {
-            "action_id" : 87,
+            "action_id" : 94,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20051,7 +20669,7 @@
         },
         {
           "name" : "tbl_bng253",
-          "id" : 44,
+          "id" : 51,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 253,
@@ -20065,14 +20683,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [88],
+          "action_ids" : [95],
           "actions" : ["bng253"],
           "base_default_next" : null,
           "next_tables" : {
             "bng253" : null
           },
           "default_entry" : {
-            "action_id" : 88,
+            "action_id" : 95,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20343,7 +20961,7 @@
             }
           },
           "true_next" : "node_25",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_25",
@@ -20447,12 +21065,167 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v6",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_34",
           "id" : 13,
           "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 96,
+            "column" : 12,
+            "source_fragment" : "hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "and",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["gtpu", "$valid$"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["inner_ipv4", "$valid$"]
+                  }
+                }
+              }
+            }
+          },
+          "true_next" : "tbl_acl97",
+          "false_next" : "node_40"
+        },
+        {
+          "name" : "node_36",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 100,
+            "column" : 16,
+            "source_fragment" : "hdr.inner_tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl101",
+          "false_next" : "node_38"
+        },
+        {
+          "name" : "node_38",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 103,
+            "column" : 23,
+            "source_fragment" : "hdr.inner_udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl104",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_40",
+          "id" : 16,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 107,
+            "column" : 19,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl108",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_42",
+          "id" : 17,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 111,
+            "column" : 16,
+            "source_fragment" : "hdr.tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl112",
+          "false_next" : "node_44"
+        },
+        {
+          "name" : "node_44",
+          "id" : 18,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 114,
+            "column" : 23,
+            "source_fragment" : "hdr.udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl115",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_47",
+          "id" : 19,
+          "source_info" : {
             "filename" : "fabric.p4",
             "line" : 73,
             "column" : 12,
@@ -20480,8 +21253,8 @@
           "false_next" : "FabricIngress.bng_ingress.t_line_map"
         },
         {
-          "name" : "node_40",
-          "id" : 14,
+          "name" : "node_53",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -20503,11 +21276,11 @@
             }
           },
           "true_next" : "tbl_port_counter31",
-          "false_next" : "node_42"
+          "false_next" : "node_55"
         },
         {
-          "name" : "node_42",
-          "id" : 15,
+          "name" : "node_55",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -20532,8 +21305,8 @@
           "false_next" : "FabricIngress.process_set_source_sink.tb_set_source"
         },
         {
-          "name" : "node_46",
-          "id" : 16,
+          "name" : "node_59",
+          "id" : 22,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 81,
@@ -20555,8 +21328,8 @@
           "false_next" : "FabricIngress.bng_ingress.t_line_map"
         },
         {
-          "name" : "node_49",
-          "id" : 17,
+          "name" : "node_62",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 341,
@@ -20578,8 +21351,8 @@
           "false_next" : "FabricIngress.bng_ingress.downstream.t_line_session_map"
         },
         {
-          "name" : "node_53",
-          "id" : 18,
+          "name" : "node_66",
+          "id" : 24,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -20599,11 +21372,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_54"
+          "true_next" : "node_67"
         },
         {
-          "name" : "node_54",
-          "id" : 19,
+          "name" : "node_67",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 128,
@@ -20622,11 +21395,11 @@
             }
           },
           "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "false_next" : "node_57"
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_57",
-          "id" : 20,
+          "name" : "node_70",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 136,
@@ -20648,8 +21421,8 @@
           "true_next" : "tbl_bng112"
         },
         {
-          "name" : "node_62",
-          "id" : 21,
+          "name" : "node_75",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 235,
@@ -20668,11 +21441,11 @@
             }
           },
           "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "false_next" : "node_66"
+          "false_next" : "node_79"
         },
         {
-          "name" : "node_66",
-          "id" : 22,
+          "name" : "node_79",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 247,
@@ -20704,11 +21477,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_72",
+      "init_table" : "node_85",
       "tables" : [
         {
           "name" : "tbl_packetio41",
-          "id" : 45,
+          "id" : 52,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -20722,14 +21495,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [141],
+          "action_ids" : [148],
           "actions" : ["packetio41"],
-          "base_default_next" : "node_74",
+          "base_default_next" : "node_87",
           "next_tables" : {
-            "packetio41" : "node_74"
+            "packetio41" : "node_87"
           },
           "default_entry" : {
-            "action_id" : 141,
+            "action_id" : 148,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20737,7 +21510,7 @@
         },
         {
           "name" : "tbl_packetio44",
-          "id" : 46,
+          "id" : 53,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -20751,14 +21524,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [142],
+          "action_ids" : [149],
           "actions" : ["packetio44"],
-          "base_default_next" : "node_76",
+          "base_default_next" : "node_89",
           "next_tables" : {
-            "packetio44" : "node_76"
+            "packetio44" : "node_89"
           },
           "default_entry" : {
-            "action_id" : 142,
+            "action_id" : 149,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20766,7 +21539,7 @@
         },
         {
           "name" : "tbl_next349",
-          "id" : 47,
+          "id" : 54,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 349,
@@ -20780,14 +21553,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [143],
+          "action_ids" : [150],
           "actions" : ["next349"],
-          "base_default_next" : "node_78",
+          "base_default_next" : "node_91",
           "next_tables" : {
-            "next349" : "node_78"
+            "next349" : "node_91"
           },
           "default_entry" : {
-            "action_id" : 143,
+            "action_id" : 150,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20795,7 +21568,7 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 48,
+          "id" : 55,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -20809,14 +21582,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [133],
+          "action_ids" : [140],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
-          "base_default_next" : "node_82",
+          "base_default_next" : "node_95",
           "next_tables" : {
-            "FabricEgress.egress_next.pop_mpls_if_present" : "node_82"
+            "FabricEgress.egress_next.pop_mpls_if_present" : "node_95"
           },
           "default_entry" : {
-            "action_id" : 133,
+            "action_id" : 140,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20824,7 +21597,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 49,
+          "id" : 56,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 355,
@@ -20838,14 +21611,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [134],
+          "action_ids" : [141],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
-          "base_default_next" : "node_82",
+          "base_default_next" : "node_95",
           "next_tables" : {
-            "FabricEgress.egress_next.set_mpls" : "node_82"
+            "FabricEgress.egress_next.set_mpls" : "node_95"
           },
           "default_entry" : {
-            "action_id" : 134,
+            "action_id" : 141,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20853,7 +21626,7 @@
         },
         {
           "name" : "tbl_egress_next_push_outer_vlan",
-          "id" : 50,
+          "id" : 57,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 361,
@@ -20867,14 +21640,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [135],
+          "action_ids" : [142],
           "actions" : ["FabricEgress.egress_next.push_outer_vlan"],
           "base_default_next" : "tbl_egress_next_push_inner_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.push_outer_vlan" : "tbl_egress_next_push_inner_vlan"
           },
           "default_entry" : {
-            "action_id" : 135,
+            "action_id" : 142,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20882,7 +21655,7 @@
         },
         {
           "name" : "tbl_egress_next_push_inner_vlan",
-          "id" : 51,
+          "id" : 58,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 362,
@@ -20896,14 +21669,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [136],
+          "action_ids" : [143],
           "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
-          "base_default_next" : "node_87",
+          "base_default_next" : "node_100",
           "next_tables" : {
-            "FabricEgress.egress_next.push_inner_vlan" : "node_87"
+            "FabricEgress.egress_next.push_inner_vlan" : "node_100"
           },
           "default_entry" : {
-            "action_id" : 136,
+            "action_id" : 143,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20911,7 +21684,7 @@
         },
         {
           "name" : "tbl_next365",
-          "id" : 52,
+          "id" : 59,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 365,
@@ -20925,14 +21698,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [144],
+          "action_ids" : [151],
           "actions" : ["next365"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "next365" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 144,
+            "action_id" : 151,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20940,7 +21713,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 53,
+          "id" : 60,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -20967,16 +21740,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [137, 138, 139],
+          "action_ids" : [144, 145, 146],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
-          "base_default_next" : "node_87",
+          "base_default_next" : "node_100",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_87",
-            "FabricEgress.egress_next.pop_vlan" : "node_87",
-            "FabricEgress.egress_next.drop" : "node_87"
+            "FabricEgress.egress_next.push_vlan" : "node_100",
+            "FabricEgress.egress_next.pop_vlan" : "node_100",
+            "FabricEgress.egress_next.drop" : "node_100"
           },
           "default_entry" : {
-            "action_id" : 139,
+            "action_id" : 146,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20984,7 +21757,7 @@
         },
         {
           "name" : "tbl_next375",
-          "id" : 54,
+          "id" : 61,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 375,
@@ -20998,14 +21771,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [146],
+          "action_ids" : [153],
           "actions" : ["next375"],
-          "base_default_next" : "node_89",
+          "base_default_next" : "node_102",
           "next_tables" : {
-            "next375" : "node_89"
+            "next375" : "node_102"
           },
           "default_entry" : {
-            "action_id" : 146,
+            "action_id" : 153,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21013,7 +21786,7 @@
         },
         {
           "name" : "tbl_next376",
-          "id" : 55,
+          "id" : 62,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -21027,14 +21800,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [145],
+          "action_ids" : [152],
           "actions" : ["next376"],
-          "base_default_next" : "node_99",
+          "base_default_next" : "node_112",
           "next_tables" : {
-            "next376" : "node_99"
+            "next376" : "node_112"
           },
           "default_entry" : {
-            "action_id" : 145,
+            "action_id" : 152,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21042,7 +21815,7 @@
         },
         {
           "name" : "tbl_next379",
-          "id" : 56,
+          "id" : 63,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 379,
@@ -21056,14 +21829,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [148],
+          "action_ids" : [155],
           "actions" : ["next379"],
-          "base_default_next" : "node_93",
+          "base_default_next" : "node_106",
           "next_tables" : {
-            "next379" : "node_93"
+            "next379" : "node_106"
           },
           "default_entry" : {
-            "action_id" : 148,
+            "action_id" : 155,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21071,7 +21844,7 @@
         },
         {
           "name" : "tbl_next380",
-          "id" : 57,
+          "id" : 64,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -21085,14 +21858,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [147],
+          "action_ids" : [154],
           "actions" : ["next380"],
-          "base_default_next" : "node_99",
+          "base_default_next" : "node_112",
           "next_tables" : {
-            "next380" : "node_99"
+            "next380" : "node_112"
           },
           "default_entry" : {
-            "action_id" : 147,
+            "action_id" : 154,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21100,7 +21873,7 @@
         },
         {
           "name" : "tbl_next384",
-          "id" : 58,
+          "id" : 65,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 384,
@@ -21114,14 +21887,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [150],
+          "action_ids" : [157],
           "actions" : ["next384"],
-          "base_default_next" : "node_97",
+          "base_default_next" : "node_110",
           "next_tables" : {
-            "next384" : "node_97"
+            "next384" : "node_110"
           },
           "default_entry" : {
-            "action_id" : 150,
+            "action_id" : 157,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21129,7 +21902,7 @@
         },
         {
           "name" : "tbl_next385",
-          "id" : 59,
+          "id" : 66,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 385,
@@ -21143,14 +21916,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [149],
+          "action_ids" : [156],
           "actions" : ["next385"],
-          "base_default_next" : "node_99",
+          "base_default_next" : "node_112",
           "next_tables" : {
-            "next385" : "node_99"
+            "next385" : "node_112"
           },
           "default_entry" : {
-            "action_id" : 149,
+            "action_id" : 156,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21158,7 +21931,7 @@
         },
         {
           "name" : "tbl_spgw_gtpu_encap",
-          "id" : 60,
+          "id" : 67,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 339,
@@ -21172,14 +21945,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [140],
+          "action_ids" : [147],
           "actions" : ["FabricEgress.spgw.gtpu_encap"],
-          "base_default_next" : "node_102",
+          "base_default_next" : "node_115",
           "next_tables" : {
-            "FabricEgress.spgw.gtpu_encap" : "node_102"
+            "FabricEgress.spgw.gtpu_encap" : "node_115"
           },
           "default_entry" : {
-            "action_id" : 140,
+            "action_id" : 147,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21187,7 +21960,7 @@
         },
         {
           "name" : "tbl_spgw342",
-          "id" : 61,
+          "id" : 68,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 342,
@@ -21201,14 +21974,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [151],
+          "action_ids" : [158],
           "actions" : ["spgw342"],
-          "base_default_next" : "node_104",
+          "base_default_next" : "node_117",
           "next_tables" : {
-            "spgw342" : "node_104"
+            "spgw342" : "node_117"
           },
           "default_entry" : {
-            "action_id" : 151,
+            "action_id" : 158,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21216,7 +21989,7 @@
         },
         {
           "name" : "tbl_bng_egress_downstream_encap_v4",
-          "id" : 62,
+          "id" : 69,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 297,
@@ -21230,14 +22003,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [94],
+          "action_ids" : [101],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
-          "base_default_next" : "node_109",
+          "base_default_next" : "node_122",
           "next_tables" : {
-            "FabricEgress.bng_egress.downstream.encap_v4" : "node_109"
+            "FabricEgress.bng_egress.downstream.encap_v4" : "node_122"
           },
           "default_entry" : {
-            "action_id" : 94,
+            "action_id" : 101,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21245,7 +22018,7 @@
         },
         {
           "name" : "tbl_bng_egress_downstream_encap_v6",
-          "id" : 63,
+          "id" : 70,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 302,
@@ -21259,14 +22032,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [95],
+          "action_ids" : [102],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v6"],
-          "base_default_next" : "node_109",
+          "base_default_next" : "node_122",
           "next_tables" : {
-            "FabricEgress.bng_egress.downstream.encap_v6" : "node_109"
+            "FabricEgress.bng_egress.downstream.encap_v6" : "node_122"
           },
           "default_entry" : {
-            "action_id" : 95,
+            "action_id" : 102,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21274,7 +22047,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "id" : 64,
+          "id" : 71,
           "source_info" : {
             "filename" : "include/int/int_source.p4",
             "line" : 66,
@@ -21313,15 +22086,15 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [96, 89],
+          "action_ids" : [103, 96],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
-          "base_default_next" : "node_112",
+          "base_default_next" : "node_125",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_112",
-            "nop" : "node_112"
+            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_125",
+            "nop" : "node_125"
           },
           "default_entry" : {
-            "action_id" : 89,
+            "action_id" : 96,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21329,7 +22102,7 @@
         },
         {
           "name" : "tbl_act",
-          "id" : 65,
+          "id" : 72,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -21337,14 +22110,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [152],
+          "action_ids" : [159],
           "actions" : ["act"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
             "act" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 152,
+            "action_id" : 159,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21352,7 +22125,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
-          "id" : 66,
+          "id" : 73,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 315,
@@ -21373,15 +22146,15 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [97, 90],
+          "action_ids" : [104, 97],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
-          "base_default_next" : "node_115",
+          "base_default_next" : "node_128",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_115",
-            "nop" : "node_115"
+            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_128",
+            "nop" : "node_128"
           },
           "default_entry" : {
-            "action_id" : 90,
+            "action_id" : 97,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21389,7 +22162,7 @@
         },
         {
           "name" : "tbl_int_transit420",
-          "id" : 67,
+          "id" : 74,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 420,
@@ -21403,14 +22176,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [153],
+          "action_ids" : [160],
           "actions" : ["int_transit420"],
-          "base_default_next" : "node_117",
+          "base_default_next" : "node_130",
           "next_tables" : {
-            "int_transit420" : "node_117"
+            "int_transit420" : "node_130"
           },
           "default_entry" : {
-            "action_id" : 153,
+            "action_id" : 160,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21418,7 +22191,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "id" : 68,
+          "id" : 75,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 331,
@@ -21439,7 +22212,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 92],
+          "action_ids" : [105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 99],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15", "NoAction"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
           "next_tables" : {
@@ -21462,7 +22235,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 92,
+            "action_id" : 99,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -21482,7 +22255,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 98,
+                "action_id" : 105,
                 "action_data" : []
               },
               "priority" : 1
@@ -21501,7 +22274,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 99,
+                "action_id" : 106,
                 "action_data" : []
               },
               "priority" : 2
@@ -21520,7 +22293,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 100,
+                "action_id" : 107,
                 "action_data" : []
               },
               "priority" : 3
@@ -21539,7 +22312,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 101,
+                "action_id" : 108,
                 "action_data" : []
               },
               "priority" : 4
@@ -21558,7 +22331,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 102,
+                "action_id" : 109,
                 "action_data" : []
               },
               "priority" : 5
@@ -21577,7 +22350,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 103,
+                "action_id" : 110,
                 "action_data" : []
               },
               "priority" : 6
@@ -21596,7 +22369,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 104,
+                "action_id" : 111,
                 "action_data" : []
               },
               "priority" : 7
@@ -21615,7 +22388,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 105,
+                "action_id" : 112,
                 "action_data" : []
               },
               "priority" : 8
@@ -21634,7 +22407,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 106,
+                "action_id" : 113,
                 "action_data" : []
               },
               "priority" : 9
@@ -21653,7 +22426,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 107,
+                "action_id" : 114,
                 "action_data" : []
               },
               "priority" : 10
@@ -21672,7 +22445,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 108,
+                "action_id" : 115,
                 "action_data" : []
               },
               "priority" : 11
@@ -21691,7 +22464,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 109,
+                "action_id" : 116,
                 "action_data" : []
               },
               "priority" : 12
@@ -21710,7 +22483,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 110,
+                "action_id" : 117,
                 "action_data" : []
               },
               "priority" : 13
@@ -21729,7 +22502,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 111,
+                "action_id" : 118,
                 "action_data" : []
               },
               "priority" : 14
@@ -21748,7 +22521,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 112,
+                "action_id" : 119,
                 "action_data" : []
               },
               "priority" : 15
@@ -21767,7 +22540,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 113,
+                "action_id" : 120,
                 "action_data" : []
               },
               "priority" : 16
@@ -21776,7 +22549,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
-          "id" : 69,
+          "id" : 76,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 375,
@@ -21797,7 +22570,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 93],
+          "action_ids" : [121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 100],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15", "NoAction"],
           "base_default_next" : "tbl_int_transit425",
           "next_tables" : {
@@ -21820,7 +22593,7 @@
             "NoAction" : "tbl_int_transit425"
           },
           "default_entry" : {
-            "action_id" : 93,
+            "action_id" : 100,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -21840,7 +22613,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 114,
+                "action_id" : 121,
                 "action_data" : []
               },
               "priority" : 1
@@ -21859,7 +22632,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 115,
+                "action_id" : 122,
                 "action_data" : []
               },
               "priority" : 2
@@ -21878,7 +22651,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 116,
+                "action_id" : 123,
                 "action_data" : []
               },
               "priority" : 3
@@ -21897,7 +22670,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 117,
+                "action_id" : 124,
                 "action_data" : []
               },
               "priority" : 4
@@ -21916,7 +22689,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 118,
+                "action_id" : 125,
                 "action_data" : []
               },
               "priority" : 5
@@ -21935,7 +22708,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 119,
+                "action_id" : 126,
                 "action_data" : []
               },
               "priority" : 6
@@ -21954,7 +22727,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 120,
+                "action_id" : 127,
                 "action_data" : []
               },
               "priority" : 7
@@ -21973,7 +22746,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 121,
+                "action_id" : 128,
                 "action_data" : []
               },
               "priority" : 8
@@ -21992,7 +22765,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 122,
+                "action_id" : 129,
                 "action_data" : []
               },
               "priority" : 9
@@ -22011,7 +22784,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 123,
+                "action_id" : 130,
                 "action_data" : []
               },
               "priority" : 10
@@ -22030,7 +22803,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 124,
+                "action_id" : 131,
                 "action_data" : []
               },
               "priority" : 11
@@ -22049,7 +22822,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 125,
+                "action_id" : 132,
                 "action_data" : []
               },
               "priority" : 12
@@ -22068,7 +22841,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 126,
+                "action_id" : 133,
                 "action_data" : []
               },
               "priority" : 13
@@ -22087,7 +22860,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 127,
+                "action_id" : 134,
                 "action_data" : []
               },
               "priority" : 14
@@ -22106,7 +22879,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 128,
+                "action_id" : 135,
                 "action_data" : []
               },
               "priority" : 15
@@ -22125,7 +22898,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 129,
+                "action_id" : 136,
                 "action_data" : []
               },
               "priority" : 16
@@ -22134,7 +22907,7 @@
         },
         {
           "name" : "tbl_int_transit425",
-          "id" : 70,
+          "id" : 77,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 425,
@@ -22148,14 +22921,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [155],
+          "action_ids" : [162],
           "actions" : ["int_transit425"],
-          "base_default_next" : "node_121",
+          "base_default_next" : "node_134",
           "next_tables" : {
-            "int_transit425" : "node_121"
+            "int_transit425" : "node_134"
           },
           "default_entry" : {
-            "action_id" : 155,
+            "action_id" : 162,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22163,7 +22936,7 @@
         },
         {
           "name" : "tbl_int_transit428",
-          "id" : 71,
+          "id" : 78,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 428,
@@ -22177,14 +22950,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [154],
+          "action_ids" : [161],
           "actions" : ["int_transit428"],
-          "base_default_next" : "node_123",
+          "base_default_next" : "node_136",
           "next_tables" : {
-            "int_transit428" : "node_123"
+            "int_transit428" : "node_136"
           },
           "default_entry" : {
-            "action_id" : 154,
+            "action_id" : 161,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22192,7 +22965,7 @@
         },
         {
           "name" : "tbl_int_transit431",
-          "id" : 72,
+          "id" : 79,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 431,
@@ -22206,14 +22979,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [156],
+          "action_ids" : [163],
           "actions" : ["int_transit431"],
-          "base_default_next" : "node_125",
+          "base_default_next" : "node_138",
           "next_tables" : {
-            "int_transit431" : "node_125"
+            "int_transit431" : "node_138"
           },
           "default_entry" : {
-            "action_id" : 156,
+            "action_id" : 163,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22221,7 +22994,7 @@
         },
         {
           "name" : "tbl_int_transit434",
-          "id" : 73,
+          "id" : 80,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 434,
@@ -22235,14 +23008,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [157],
+          "action_ids" : [164],
           "actions" : ["int_transit434"],
-          "base_default_next" : "node_127",
+          "base_default_next" : "node_140",
           "next_tables" : {
-            "int_transit434" : "node_127"
+            "int_transit434" : "node_140"
           },
           "default_entry" : {
-            "action_id" : 157,
+            "action_id" : 164,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22250,7 +23023,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_report.tb_generate_report",
-          "id" : 74,
+          "id" : 81,
           "source_info" : {
             "filename" : "include/int/int_report.p4",
             "line" : 87,
@@ -22264,15 +23037,15 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [130, 91],
+          "action_ids" : [137, 98],
           "actions" : ["FabricEgress.process_int_main.process_int_report.do_report_encapsulation", "nop"],
-          "base_default_next" : "node_129",
+          "base_default_next" : "node_142",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_report.do_report_encapsulation" : "node_129",
-            "nop" : "node_129"
+            "FabricEgress.process_int_main.process_int_report.do_report_encapsulation" : "node_142",
+            "nop" : "node_142"
           },
           "default_entry" : {
-            "action_id" : 91,
+            "action_id" : 98,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -22280,7 +23053,7 @@
         },
         {
           "name" : "tbl_process_int_main_process_int_sink_restore_header",
-          "id" : 75,
+          "id" : 82,
           "source_info" : {
             "filename" : "include/int/int_sink.p4",
             "line" : 53,
@@ -22294,14 +23067,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [131],
+          "action_ids" : [138],
           "actions" : ["FabricEgress.process_int_main.process_int_sink.restore_header"],
           "base_default_next" : "tbl_process_int_main_process_int_sink_int_sink",
           "next_tables" : {
             "FabricEgress.process_int_main.process_int_sink.restore_header" : "tbl_process_int_main_process_int_sink_int_sink"
           },
           "default_entry" : {
-            "action_id" : 131,
+            "action_id" : 138,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22309,7 +23082,7 @@
         },
         {
           "name" : "tbl_process_int_main_process_int_sink_int_sink",
-          "id" : 76,
+          "id" : 83,
           "source_info" : {
             "filename" : "include/int/int_sink.p4",
             "line" : 54,
@@ -22323,14 +23096,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [132],
+          "action_ids" : [139],
           "actions" : ["FabricEgress.process_int_main.process_int_sink.int_sink"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.process_int_main.process_int_sink.int_sink" : null
           },
           "default_entry" : {
-            "action_id" : 132,
+            "action_id" : 139,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22340,8 +23113,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_72",
-          "id" : 23,
+          "name" : "node_85",
+          "id" : 29,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 103,
@@ -22360,11 +23133,11 @@
             }
           },
           "true_next" : "tbl_packetio41",
-          "false_next" : "node_74"
+          "false_next" : "node_87"
         },
         {
-          "name" : "node_74",
-          "id" : 24,
+          "name" : "node_87",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -22386,11 +23159,11 @@
             }
           },
           "true_next" : "tbl_packetio44",
-          "false_next" : "node_76"
+          "false_next" : "node_89"
         },
         {
-          "name" : "node_76",
-          "id" : 25,
+          "name" : "node_89",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 347,
@@ -22429,11 +23202,11 @@
             }
           },
           "true_next" : "tbl_next349",
-          "false_next" : "node_78"
+          "false_next" : "node_91"
         },
         {
-          "name" : "node_78",
-          "id" : 26,
+          "name" : "node_91",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 352,
@@ -22454,12 +23227,12 @@
               }
             }
           },
-          "true_next" : "node_79",
+          "true_next" : "node_92",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_79",
-          "id" : 27,
+          "name" : "node_92",
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -22478,11 +23251,11 @@
             }
           },
           "true_next" : "tbl_egress_next_pop_mpls_if_present",
-          "false_next" : "node_82"
+          "false_next" : "node_95"
         },
         {
-          "name" : "node_82",
-          "id" : 28,
+          "name" : "node_95",
+          "id" : 34,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 104,
@@ -22504,8 +23277,8 @@
           "false_next" : "tbl_next365"
         },
         {
-          "name" : "node_87",
-          "id" : 29,
+          "name" : "node_100",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 374,
@@ -22524,11 +23297,11 @@
             }
           },
           "true_next" : "tbl_next375",
-          "false_next" : "node_91"
+          "false_next" : "node_104"
         },
         {
-          "name" : "node_89",
-          "id" : 30,
+          "name" : "node_102",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -22550,11 +23323,11 @@
             }
           },
           "true_next" : "tbl_next376",
-          "false_next" : "node_99"
+          "false_next" : "node_112"
         },
         {
-          "name" : "node_91",
-          "id" : 31,
+          "name" : "node_104",
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 378,
@@ -22593,11 +23366,11 @@
             }
           },
           "true_next" : "tbl_next379",
-          "false_next" : "node_95"
+          "false_next" : "node_108"
         },
         {
-          "name" : "node_93",
-          "id" : 32,
+          "name" : "node_106",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -22619,11 +23392,11 @@
             }
           },
           "true_next" : "tbl_next380",
-          "false_next" : "node_99"
+          "false_next" : "node_112"
         },
         {
-          "name" : "node_95",
-          "id" : 33,
+          "name" : "node_108",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 383,
@@ -22662,11 +23435,11 @@
             }
           },
           "true_next" : "tbl_next384",
-          "false_next" : "node_99"
+          "false_next" : "node_112"
         },
         {
-          "name" : "node_97",
-          "id" : 34,
+          "name" : "node_110",
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 385,
@@ -22688,11 +23461,11 @@
             }
           },
           "true_next" : "tbl_next385",
-          "false_next" : "node_99"
+          "false_next" : "node_112"
         },
         {
-          "name" : "node_99",
-          "id" : 35,
+          "name" : "node_112",
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 337,
@@ -22717,12 +23490,12 @@
               }
             }
           },
-          "true_next" : "node_100",
-          "false_next" : "node_104"
+          "true_next" : "node_113",
+          "false_next" : "node_117"
         },
         {
-          "name" : "node_100",
-          "id" : 36,
+          "name" : "node_113",
+          "id" : 42,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 106,
@@ -22741,11 +23514,11 @@
             }
           },
           "true_next" : "tbl_spgw_gtpu_encap",
-          "false_next" : "node_102"
+          "false_next" : "node_115"
         },
         {
-          "name" : "node_102",
-          "id" : 37,
+          "name" : "node_115",
+          "id" : 43,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 341,
@@ -22771,11 +23544,11 @@
             }
           },
           "true_next" : "tbl_spgw342",
-          "false_next" : "node_104"
+          "false_next" : "node_117"
         },
         {
-          "name" : "node_104",
-          "id" : 38,
+          "name" : "node_117",
+          "id" : 44,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 358,
@@ -22796,12 +23569,12 @@
               }
             }
           },
-          "true_next" : "node_105",
-          "false_next" : "node_109"
+          "true_next" : "node_118",
+          "false_next" : "node_122"
         },
         {
-          "name" : "node_105",
-          "id" : 39,
+          "name" : "node_118",
+          "id" : 45,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 296,
@@ -22820,11 +23593,11 @@
             }
           },
           "true_next" : "tbl_bng_egress_downstream_encap_v4",
-          "false_next" : "node_107"
+          "false_next" : "node_120"
         },
         {
-          "name" : "node_107",
-          "id" : 40,
+          "name" : "node_120",
+          "id" : 46,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 301,
@@ -22843,11 +23616,11 @@
             }
           },
           "true_next" : "tbl_bng_egress_downstream_encap_v6",
-          "false_next" : "node_109"
+          "false_next" : "node_122"
         },
         {
-          "name" : "node_109",
-          "id" : 41,
+          "name" : "node_122",
+          "id" : 47,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 102,
@@ -22923,11 +23696,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_110"
+          "true_next" : "node_123"
         },
         {
-          "name" : "node_110",
-          "id" : 42,
+          "name" : "node_123",
+          "id" : 48,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 112,
@@ -22946,11 +23719,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "false_next" : "node_112"
+          "false_next" : "node_125"
         },
         {
-          "name" : "node_112",
-          "id" : 43,
+          "name" : "node_125",
+          "id" : 49,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 110,
@@ -22972,8 +23745,8 @@
           "true_next" : "tbl_act"
         },
         {
-          "name" : "node_115",
-          "id" : 44,
+          "name" : "node_128",
+          "id" : 50,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 419,
@@ -22999,11 +23772,11 @@
             }
           },
           "true_next" : "tbl_int_transit420",
-          "false_next" : "node_117"
+          "false_next" : "node_130"
         },
         {
-          "name" : "node_117",
-          "id" : 45,
+          "name" : "node_130",
+          "id" : 51,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -23023,11 +23796,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "false_next" : "node_127"
+          "false_next" : "node_140"
         },
         {
-          "name" : "node_121",
-          "id" : 46,
+          "name" : "node_134",
+          "id" : 52,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 427,
@@ -23046,11 +23819,11 @@
             }
           },
           "true_next" : "tbl_int_transit428",
-          "false_next" : "node_123"
+          "false_next" : "node_136"
         },
         {
-          "name" : "node_123",
-          "id" : 47,
+          "name" : "node_136",
+          "id" : 53,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 430,
@@ -23069,11 +23842,11 @@
             }
           },
           "true_next" : "tbl_int_transit431",
-          "false_next" : "node_125"
+          "false_next" : "node_138"
         },
         {
-          "name" : "node_125",
-          "id" : 48,
+          "name" : "node_138",
+          "id" : 54,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 433,
@@ -23092,11 +23865,11 @@
             }
           },
           "true_next" : "tbl_int_transit434",
-          "false_next" : "node_127"
+          "false_next" : "node_140"
         },
         {
-          "name" : "node_127",
-          "id" : 49,
+          "name" : "node_140",
+          "id" : 55,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 115,
@@ -23118,11 +23891,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_report.tb_generate_report",
-          "false_next" : "node_129"
+          "false_next" : "node_142"
         },
         {
-          "name" : "node_129",
-          "id" : 50,
+          "name" : "node_142",
+          "id" : 56,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 112,
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index 7e04957..8003c09 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -467,70 +467,70 @@
   }
   match_fields {
     id: 2
-    name: "ip_proto"
-    bitwidth: 8
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 3
-    name: "l4_sport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 4
-    name: "l4_dport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 5
     name: "eth_dst"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 6
+    id: 3
     name: "eth_src"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 7
+    id: 4
     name: "vlan_id"
     bitwidth: 12
     match_type: TERNARY
   }
   match_fields {
-    id: 8
+    id: 5
     name: "eth_type"
     bitwidth: 16
     match_type: TERNARY
   }
   match_fields {
-    id: 9
+    id: 6
     name: "ipv4_src"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 10
+    id: 7
     name: "ipv4_dst"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 11
+    id: 8
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
     name: "icmp_type"
     bitwidth: 8
     match_type: TERNARY
   }
   match_fields {
-    id: 12
+    id: 10
     name: "icmp_code"
     bitwidth: 8
     match_type: TERNARY
   }
+  match_fields {
+    id: 11
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
   action_refs {
     id: 23623126
   }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
index 3017ba0..e7bf0cf 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
@@ -15,6 +15,11 @@
         ["tmp_7", 64, false],
         ["tmp_8", 32, false],
         ["tmp_9", 32, false],
+        ["acl_ipv4_src", 32, false],
+        ["acl_ipv4_dst", 32, false],
+        ["acl_ip_proto", 8, false],
+        ["acl_l4_sport", 16, false],
+        ["acl_l4_dport", 16, false],
         ["process_int_main_process_int_transit_hasReturned", 1, false],
         ["userMetadata._ip_eth_type0", 16, false],
         ["userMetadata._vlan_id1", 12, false],
@@ -146,11 +151,21 @@
       ]
     },
     {
-      "name" : "tcp_t",
+      "name" : "udp_t",
       "id" : 9,
       "fields" : [
         ["sport", 16, false],
         ["dport", 16, false],
+        ["len", 16, false],
+        ["checksum", 16, false]
+      ]
+    },
+    {
+      "name" : "tcp_t",
+      "id" : 10,
+      "fields" : [
+        ["sport", 16, false],
+        ["dport", 16, false],
         ["seq_no", 32, false],
         ["ack_no", 32, false],
         ["data_offset", 4, false],
@@ -163,16 +178,6 @@
       ]
     },
     {
-      "name" : "udp_t",
-      "id" : 10,
-      "fields" : [
-        ["sport", 16, false],
-        ["dport", 16, false],
-        ["len", 16, false],
-        ["checksum", 16, false]
-      ]
-    },
-    {
       "name" : "icmp_t",
       "id" : 11,
       "fields" : [
@@ -356,120 +361,155 @@
       "pi_omit" : true
     },
     {
-      "name" : "ipv4",
+      "name" : "gtpu",
       "id" : 9,
+      "header_type" : "gtpu_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "inner_ipv4",
+      "id" : 10,
       "header_type" : "ipv4_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
-      "name" : "tcp",
-      "id" : 10,
-      "header_type" : "tcp_t",
-      "metadata" : false,
-      "pi_omit" : true
-    },
-    {
-      "name" : "udp",
+      "name" : "inner_udp",
       "id" : 11,
       "header_type" : "udp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
-      "name" : "icmp",
+      "name" : "inner_tcp",
       "id" : 12,
+      "header_type" : "tcp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "inner_icmp",
+      "id" : 13,
+      "header_type" : "icmp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "ipv4",
+      "id" : 14,
+      "header_type" : "ipv4_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "tcp",
+      "id" : 15,
+      "header_type" : "tcp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "udp",
+      "id" : 16,
+      "header_type" : "udp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "icmp",
+      "id" : 17,
       "header_type" : "icmp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "packet_out",
-      "id" : 13,
+      "id" : 18,
       "header_type" : "packet_out_header_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "packet_in",
-      "id" : 14,
+      "id" : 19,
       "header_type" : "packet_in_header_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "intl4_shim",
-      "id" : 15,
+      "id" : 20,
       "header_type" : "intl4_shim_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_header",
-      "id" : 16,
+      "id" : 21,
       "header_type" : "int_header_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_switch_id",
-      "id" : 17,
+      "id" : 22,
       "header_type" : "int_switch_id_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_port_ids",
-      "id" : 18,
+      "id" : 23,
       "header_type" : "int_port_ids_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_hop_latency",
-      "id" : 19,
+      "id" : 24,
       "header_type" : "int_hop_latency_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_q_occupancy",
-      "id" : 20,
+      "id" : 25,
       "header_type" : "int_q_occupancy_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_ingress_tstamp",
-      "id" : 21,
+      "id" : 26,
       "header_type" : "int_ingress_tstamp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_egress_tstamp",
-      "id" : 22,
+      "id" : 27,
       "header_type" : "int_egress_tstamp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_q_congestion",
-      "id" : 23,
+      "id" : 28,
       "header_type" : "int_q_congestion_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "int_egress_tx_util",
-      "id" : 24,
+      "id" : 29,
       "header_type" : "int_egress_port_tx_util_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "intl4_tail",
-      "id" : 25,
+      "id" : 30,
       "header_type" : "intl4_tail_t",
       "metadata" : false,
       "pi_omit" : true
@@ -485,7 +525,7 @@
       "name" : "fl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 46,
+        "line" : 52,
         "column" : 40,
         "source_fragment" : "{standard_metadata.ingress_port}"
       },
@@ -1780,6 +1820,12 @@
           ],
           "transitions" : [
             {
+              "type" : "hexstr",
+              "value" : "0x086801ff",
+              "mask" : null,
+              "next_state" : "parse_gtpu"
+            },
+            {
               "type" : "default",
               "value" : null,
               "mask" : null,
@@ -1826,8 +1872,101 @@
           "transition_key" : []
         },
         {
-          "name" : "parse_int",
+          "name" : "parse_gtpu",
           "id" : 13,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "gtpu"
+                }
+              ],
+              "op" : "extract"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "inner_ipv4"
+                }
+              ],
+              "op" : "extract"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "last_ipv4_dscp_0"]
+                },
+                {
+                  "type" : "field",
+                  "value" : ["inner_ipv4", "dscp"]
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "type" : "hexstr",
+              "value" : "0x06",
+              "mask" : null,
+              "next_state" : "parse_tcp"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x11",
+              "mask" : null,
+              "next_state" : "parse_inner_udp"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01",
+              "mask" : null,
+              "next_state" : "parse_icmp"
+            },
+            {
+              "type" : "default",
+              "value" : null,
+              "mask" : null,
+              "next_state" : null
+            }
+          ],
+          "transition_key" : [
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ]
+        },
+        {
+          "name" : "parse_inner_udp",
+          "id" : 14,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "inner_udp"
+                }
+              ],
+              "op" : "extract"
+            }
+          ],
+          "transitions" : [
+            {
+              "type" : "default",
+              "value" : null,
+              "mask" : null,
+              "next_state" : "parse_int"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_int",
+          "id" : 15,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -1852,7 +1991,7 @@
         },
         {
           "name" : "parse_intl4_shim",
-          "id" : 14,
+          "id" : 16,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1896,7 +2035,7 @@
         },
         {
           "name" : "parse_int_data",
-          "id" : 15,
+          "id" : 17,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -1910,7 +2049,7 @@
         },
         {
           "name" : "parse_intl4_tail",
-          "id" : 16,
+          "id" : 18,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1946,7 +2085,7 @@
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
-      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "mpls", "ipv4", "tcp", "udp", "icmp", "intl4_shim", "int_header", "int_switch_id", "int_port_ids", "int_hop_latency", "int_q_occupancy", "int_ingress_tstamp", "int_egress_tstamp", "int_q_congestion", "int_egress_tx_util", "intl4_tail"],
+      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "mpls", "ipv4", "tcp", "udp", "icmp", "gtpu", "inner_ipv4", "inner_tcp", "inner_udp", "inner_icmp", "intl4_shim", "int_header", "int_switch_id", "int_port_ids", "int_hop_latency", "int_q_occupancy", "int_ingress_tstamp", "int_egress_tstamp", "int_q_congestion", "int_egress_tx_util", "intl4_tail"],
       "primitives" : []
     }
   ],
@@ -2019,7 +2158,7 @@
       "binding" : "FabricIngress.acl.acl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 30,
+        "line" : 36,
         "column" : 50,
         "source_fragment" : "acl_counter"
       }
@@ -2607,7 +2746,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 33,
+            "line" : 39,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2633,7 +2772,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 39,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
           }
@@ -2662,7 +2801,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 40,
+            "line" : 46,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -2693,7 +2832,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 46,
+            "line" : 52,
             "column" : 8,
             "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
           }
@@ -2715,7 +2854,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 51,
+            "line" : 57,
             "column" : 8,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2744,7 +2883,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 52,
+            "line" : 58,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -3289,7 +3428,7 @@
       ]
     },
     {
-      "name" : "port_counter31",
+      "name" : "acl101",
       "id" : 32,
       "runtime_data" : [],
       "primitives" : [
@@ -3298,6 +3437,416 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 102,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl104",
+      "id" : 33,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 105,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl97",
+      "id" : 34,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.inner_ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 98,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.inner_ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 99,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.inner_ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl112",
+      "id" : 35,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 113,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl115",
+      "id" : 36,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 116,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl108",
+      "id" : 37,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 109,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl27",
+      "id" : 38,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 28,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_dst = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 29,
+            "column" : 4,
+            "source_fragment" : "bit<8> ip_proto = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 30,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_sport = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 31,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_dport = 0;"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "port_counter31",
+      "id" : 39,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp_8"]
             },
             {
@@ -3348,7 +3897,7 @@
     },
     {
       "name" : "port_counter34",
-      "id" : 33,
+      "id" : 40,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3406,31 +3955,31 @@
     },
     {
       "name" : "nop",
-      "id" : 34,
+      "id" : 41,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "nop",
-      "id" : 35,
+      "id" : 42,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "NoAction",
-      "id" : 36,
+      "id" : 43,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "NoAction",
-      "id" : 37,
+      "id" : 44,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
-      "id" : 38,
+      "id" : 45,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -3925,7 +4474,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 39,
+      "id" : 46,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -3985,13 +4534,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 40,
+      "id" : 47,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 41,
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4148,7 +4697,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 42,
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4273,7 +4822,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 43,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4464,7 +5013,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 44,
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4634,7 +5183,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
-      "id" : 45,
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4870,7 +5419,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
-      "id" : 46,
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5074,7 +5623,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
-      "id" : 47,
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5344,7 +5893,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 48,
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5469,7 +6018,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
-      "id" : 49,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5660,7 +6209,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
-      "id" : 50,
+      "id" : 57,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5819,7 +6368,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
-      "id" : 51,
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6044,7 +6593,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 52,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6248,7 +6797,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
-      "id" : 53,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6518,7 +7067,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
-      "id" : 54,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6756,7 +7305,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
-      "id" : 55,
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7060,13 +7609,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 56,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 57,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7191,7 +7740,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 58,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7335,7 +7884,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 59,
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7513,7 +8062,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 60,
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7661,7 +8210,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
-      "id" : 61,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7843,7 +8392,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
-      "id" : 62,
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8044,7 +8593,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
-      "id" : 63,
+      "id" : 70,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8279,7 +8828,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 64,
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8404,7 +8953,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
-      "id" : 65,
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8563,7 +9112,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
-      "id" : 66,
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8741,7 +9290,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
-      "id" : 67,
+      "id" : 74,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8953,7 +9502,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 68,
+      "id" : 75,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9135,7 +9684,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
-      "id" : 69,
+      "id" : 76,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9351,7 +9900,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
-      "id" : 70,
+      "id" : 77,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9586,7 +10135,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
-      "id" : 71,
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9855,7 +10404,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 72,
+      "id" : 79,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9896,7 +10445,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 73,
+      "id" : 80,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10013,7 +10562,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 74,
+      "id" : 81,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10111,7 +10660,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 75,
+      "id" : 82,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10133,7 +10682,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 76,
+      "id" : 83,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10155,7 +10704,7 @@
     },
     {
       "name" : "packetio41",
-      "id" : 77,
+      "id" : 84,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10172,7 +10721,7 @@
     },
     {
       "name" : "packetio44",
-      "id" : 78,
+      "id" : 85,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10223,7 +10772,7 @@
     },
     {
       "name" : "next349",
-      "id" : 79,
+      "id" : 86,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10245,7 +10794,7 @@
     },
     {
       "name" : "next376",
-      "id" : 80,
+      "id" : 87,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10267,7 +10816,7 @@
     },
     {
       "name" : "next375",
-      "id" : 81,
+      "id" : 88,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10316,7 +10865,7 @@
     },
     {
       "name" : "next380",
-      "id" : 82,
+      "id" : 89,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10338,7 +10887,7 @@
     },
     {
       "name" : "next379",
-      "id" : 83,
+      "id" : 90,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10387,7 +10936,7 @@
     },
     {
       "name" : "act",
-      "id" : 84,
+      "id" : 91,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10417,7 +10966,7 @@
     },
     {
       "name" : "int_transit420",
-      "id" : 85,
+      "id" : 92,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10453,7 +11002,7 @@
     },
     {
       "name" : "int_transit428",
-      "id" : 86,
+      "id" : 93,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10502,7 +11051,7 @@
     },
     {
       "name" : "int_transit425",
-      "id" : 87,
+      "id" : 94,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10551,7 +11100,7 @@
     },
     {
       "name" : "int_transit431",
-      "id" : 88,
+      "id" : 95,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10600,7 +11149,7 @@
     },
     {
       "name" : "int_transit434",
-      "id" : 89,
+      "id" : 96,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10882,10 +11431,10 @@
           "direct_meters" : null,
           "action_ids" : [13, 1],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_bridging" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -10919,10 +11468,10 @@
           "direct_meters" : null,
           "action_ids" : [14, 2],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 2,
@@ -10956,11 +11505,11 @@
           "direct_meters" : null,
           "action_ids" : [15, 16, 3],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
-            "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_acl27",
+            "FabricIngress.forwarding.nop_routing_v4" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -10970,11 +11519,214 @@
           }
         },
         {
-          "name" : "FabricIngress.acl.acl",
+          "name" : "tbl_acl27",
           "id" : 8,
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 60,
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [38],
+          "actions" : ["acl27"],
+          "base_default_next" : "node_18",
+          "next_tables" : {
+            "acl27" : "node_18"
+          },
+          "default_entry" : {
+            "action_id" : 38,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl97",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 21,
+            "source_fragment" : "= hdr.inner_ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [34],
+          "actions" : ["acl97"],
+          "base_default_next" : "node_20",
+          "next_tables" : {
+            "acl97" : "node_20"
+          },
+          "default_entry" : {
+            "action_id" : 34,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl101",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [32],
+          "actions" : ["acl101"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl101" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 32,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl104",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [33],
+          "actions" : ["acl104"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl104" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 33,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl108",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 21,
+            "source_fragment" : "= hdr.ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [37],
+          "actions" : ["acl108"],
+          "base_default_next" : "node_26",
+          "next_tables" : {
+            "acl108" : "node_26"
+          },
+          "default_entry" : {
+            "action_id" : 37,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl112",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 25,
+            "source_fragment" : "= hdr.tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [35],
+          "actions" : ["acl112"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl112" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 35,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl115",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 25,
+            "source_fragment" : "= hdr.udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [36],
+          "actions" : ["acl115"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl115" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 36,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.acl.acl",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "acl"
           },
@@ -10987,24 +11739,6 @@
             },
             {
               "match_type" : "ternary",
-              "name" : "ip_proto",
-              "target" : ["scalars", "userMetadata._ip_proto12"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_sport",
-              "target" : ["scalars", "userMetadata._l4_sport13"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_dport",
-              "target" : ["scalars", "userMetadata._l4_dport14"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
               "name" : "eth_dst",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -11030,13 +11764,19 @@
             {
               "match_type" : "ternary",
               "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
+              "target" : ["scalars", "acl_ipv4_src"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
+              "target" : ["scalars", "acl_ipv4_dst"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ip_proto",
+              "target" : ["scalars", "acl_ip_proto"],
               "mask" : null
             },
             {
@@ -11050,6 +11790,18 @@
               "name" : "icmp_code",
               "target" : ["icmp", "icmp_code"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_sport",
+              "target" : ["scalars", "acl_l4_sport"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_dport",
+              "target" : ["scalars", "acl_l4_dport"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -11060,13 +11812,13 @@
           "direct_meters" : null,
           "action_ids" : [17, 18, 19, 20, 21],
           "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
-          "base_default_next" : "node_18",
+          "base_default_next" : "node_31",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_18",
-            "FabricIngress.acl.punt_to_cpu" : "node_18",
-            "FabricIngress.acl.set_clone_session_id" : "node_18",
-            "FabricIngress.acl.drop" : "node_18",
-            "FabricIngress.acl.nop_acl" : "node_18"
+            "FabricIngress.acl.set_next_id_acl" : "node_31",
+            "FabricIngress.acl.punt_to_cpu" : "node_31",
+            "FabricIngress.acl.set_clone_session_id" : "node_31",
+            "FabricIngress.acl.drop" : "node_31",
+            "FabricIngress.acl.nop_acl" : "node_31"
           },
           "default_entry" : {
             "action_id" : 21,
@@ -11077,7 +11829,7 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 9,
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 119,
@@ -11121,7 +11873,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 10,
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 202,
@@ -11155,7 +11907,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 11,
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 236,
@@ -11192,7 +11944,7 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 12,
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 86,
@@ -11215,10 +11967,10 @@
           "direct_meters" : null,
           "action_ids" : [22, 4],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_23",
+          "base_default_next" : "node_36",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_23",
-            "nop" : "node_23"
+            "FabricIngress.next.set_vlan" : "node_36",
+            "nop" : "node_36"
           },
           "default_entry" : {
             "action_id" : 4,
@@ -11229,7 +11981,7 @@
         },
         {
           "name" : "tbl_port_counter31",
-          "id" : 13,
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -11243,14 +11995,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [32],
+          "action_ids" : [39],
           "actions" : ["port_counter31"],
-          "base_default_next" : "node_25",
+          "base_default_next" : "node_38",
           "next_tables" : {
-            "port_counter31" : "node_25"
+            "port_counter31" : "node_38"
           },
           "default_entry" : {
-            "action_id" : 32,
+            "action_id" : 39,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11258,7 +12010,7 @@
         },
         {
           "name" : "tbl_port_counter34",
-          "id" : 14,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -11272,14 +12024,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [33],
+          "action_ids" : [40],
           "actions" : ["port_counter34"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
             "port_counter34" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 33,
+            "action_id" : 40,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11287,7 +12039,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_source",
-          "id" : 15,
+          "id" : 22,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 46,
@@ -11466,7 +12218,7 @@
             }
           },
           "true_next" : "node_11",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_11",
@@ -11544,12 +12296,167 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v4",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_18",
           "id" : 7,
           "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 96,
+            "column" : 12,
+            "source_fragment" : "hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "and",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["gtpu", "$valid$"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["inner_ipv4", "$valid$"]
+                  }
+                }
+              }
+            }
+          },
+          "true_next" : "tbl_acl97",
+          "false_next" : "node_24"
+        },
+        {
+          "name" : "node_20",
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 100,
+            "column" : 16,
+            "source_fragment" : "hdr.inner_tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl101",
+          "false_next" : "node_22"
+        },
+        {
+          "name" : "node_22",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 103,
+            "column" : 23,
+            "source_fragment" : "hdr.inner_udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl104",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_24",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 107,
+            "column" : 19,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl108",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_26",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 111,
+            "column" : 16,
+            "source_fragment" : "hdr.tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl112",
+          "false_next" : "node_28"
+        },
+        {
+          "name" : "node_28",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 114,
+            "column" : 23,
+            "source_fragment" : "hdr.udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl115",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_31",
+          "id" : 13,
+          "source_info" : {
             "filename" : "fabric.p4",
             "line" : 73,
             "column" : 12,
@@ -11577,8 +12484,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_23",
-          "id" : 8,
+          "name" : "node_36",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -11600,11 +12507,11 @@
             }
           },
           "true_next" : "tbl_port_counter31",
-          "false_next" : "node_25"
+          "false_next" : "node_38"
         },
         {
-          "name" : "node_25",
-          "id" : 9,
+          "name" : "node_38",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -11639,11 +12546,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_30",
+      "init_table" : "node_43",
       "tables" : [
         {
           "name" : "tbl_packetio41",
-          "id" : 16,
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -11657,14 +12564,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [77],
+          "action_ids" : [84],
           "actions" : ["packetio41"],
-          "base_default_next" : "node_32",
+          "base_default_next" : "node_45",
           "next_tables" : {
-            "packetio41" : "node_32"
+            "packetio41" : "node_45"
           },
           "default_entry" : {
-            "action_id" : 77,
+            "action_id" : 84,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11672,7 +12579,7 @@
         },
         {
           "name" : "tbl_packetio44",
-          "id" : 17,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -11686,14 +12593,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [78],
+          "action_ids" : [85],
           "actions" : ["packetio44"],
-          "base_default_next" : "node_34",
+          "base_default_next" : "node_47",
           "next_tables" : {
-            "packetio44" : "node_34"
+            "packetio44" : "node_47"
           },
           "default_entry" : {
-            "action_id" : 78,
+            "action_id" : 85,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11701,7 +12608,7 @@
         },
         {
           "name" : "tbl_next349",
-          "id" : 18,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 349,
@@ -11715,14 +12622,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [79],
+          "action_ids" : [86],
           "actions" : ["next349"],
-          "base_default_next" : "node_36",
+          "base_default_next" : "node_49",
           "next_tables" : {
-            "next349" : "node_36"
+            "next349" : "node_49"
           },
           "default_entry" : {
-            "action_id" : 79,
+            "action_id" : 86,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11730,7 +12637,7 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 19,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -11744,14 +12651,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [72],
+          "action_ids" : [79],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 72,
+            "action_id" : 79,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11759,7 +12666,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 20,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 355,
@@ -11773,14 +12680,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [73],
+          "action_ids" : [80],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 73,
+            "action_id" : 80,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11788,7 +12695,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 21,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -11815,16 +12722,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [74, 75, 76],
+          "action_ids" : [81, 82, 83],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
-          "base_default_next" : "node_41",
+          "base_default_next" : "node_54",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_41",
-            "FabricEgress.egress_next.pop_vlan" : "node_41",
-            "FabricEgress.egress_next.drop" : "node_41"
+            "FabricEgress.egress_next.push_vlan" : "node_54",
+            "FabricEgress.egress_next.pop_vlan" : "node_54",
+            "FabricEgress.egress_next.drop" : "node_54"
           },
           "default_entry" : {
-            "action_id" : 76,
+            "action_id" : 83,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11832,7 +12739,7 @@
         },
         {
           "name" : "tbl_next375",
-          "id" : 22,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 375,
@@ -11846,14 +12753,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [81],
+          "action_ids" : [88],
           "actions" : ["next375"],
-          "base_default_next" : "node_43",
+          "base_default_next" : "node_56",
           "next_tables" : {
-            "next375" : "node_43"
+            "next375" : "node_56"
           },
           "default_entry" : {
-            "action_id" : 81,
+            "action_id" : 88,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11861,7 +12768,7 @@
         },
         {
           "name" : "tbl_next376",
-          "id" : 23,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -11875,14 +12782,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [80],
+          "action_ids" : [87],
           "actions" : ["next376"],
-          "base_default_next" : "node_49",
+          "base_default_next" : "node_62",
           "next_tables" : {
-            "next376" : "node_49"
+            "next376" : "node_62"
           },
           "default_entry" : {
-            "action_id" : 80,
+            "action_id" : 87,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11890,7 +12797,7 @@
         },
         {
           "name" : "tbl_next379",
-          "id" : 24,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 379,
@@ -11904,14 +12811,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [83],
+          "action_ids" : [90],
           "actions" : ["next379"],
-          "base_default_next" : "node_47",
+          "base_default_next" : "node_60",
           "next_tables" : {
-            "next379" : "node_47"
+            "next379" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 83,
+            "action_id" : 90,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11919,7 +12826,7 @@
         },
         {
           "name" : "tbl_next380",
-          "id" : 25,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -11933,14 +12840,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [82],
+          "action_ids" : [89],
           "actions" : ["next380"],
-          "base_default_next" : "node_49",
+          "base_default_next" : "node_62",
           "next_tables" : {
-            "next380" : "node_49"
+            "next380" : "node_62"
           },
           "default_entry" : {
-            "action_id" : 82,
+            "action_id" : 89,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11948,7 +12855,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "id" : 26,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/int/int_source.p4",
             "line" : 66,
@@ -11987,15 +12894,15 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [38, 34],
+          "action_ids" : [45, 41],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
-          "base_default_next" : "node_52",
+          "base_default_next" : "node_65",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_52",
-            "nop" : "node_52"
+            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_65",
+            "nop" : "node_65"
           },
           "default_entry" : {
-            "action_id" : 34,
+            "action_id" : 41,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12003,7 +12910,7 @@
         },
         {
           "name" : "tbl_act",
-          "id" : 27,
+          "id" : 34,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -12011,14 +12918,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [84],
+          "action_ids" : [91],
           "actions" : ["act"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
             "act" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 84,
+            "action_id" : 91,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12026,7 +12933,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
-          "id" : 28,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 315,
@@ -12047,15 +12954,15 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39, 35],
+          "action_ids" : [46, 42],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
-          "base_default_next" : "node_55",
+          "base_default_next" : "node_68",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_55",
-            "nop" : "node_55"
+            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_68",
+            "nop" : "node_68"
           },
           "default_entry" : {
-            "action_id" : 35,
+            "action_id" : 42,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12063,7 +12970,7 @@
         },
         {
           "name" : "tbl_int_transit420",
-          "id" : 29,
+          "id" : 36,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 420,
@@ -12077,14 +12984,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [85],
+          "action_ids" : [92],
           "actions" : ["int_transit420"],
-          "base_default_next" : "node_57",
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "int_transit420" : "node_57"
+            "int_transit420" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 85,
+            "action_id" : 92,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12092,7 +12999,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "id" : 30,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 331,
@@ -12113,7 +13020,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 36],
+          "action_ids" : [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 43],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15", "NoAction"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
           "next_tables" : {
@@ -12136,7 +13043,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 36,
+            "action_id" : 43,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -12156,7 +13063,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 40,
+                "action_id" : 47,
                 "action_data" : []
               },
               "priority" : 1
@@ -12175,7 +13082,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 41,
+                "action_id" : 48,
                 "action_data" : []
               },
               "priority" : 2
@@ -12194,7 +13101,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 42,
+                "action_id" : 49,
                 "action_data" : []
               },
               "priority" : 3
@@ -12213,7 +13120,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 43,
+                "action_id" : 50,
                 "action_data" : []
               },
               "priority" : 4
@@ -12232,7 +13139,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 44,
+                "action_id" : 51,
                 "action_data" : []
               },
               "priority" : 5
@@ -12251,7 +13158,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 45,
+                "action_id" : 52,
                 "action_data" : []
               },
               "priority" : 6
@@ -12270,7 +13177,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 46,
+                "action_id" : 53,
                 "action_data" : []
               },
               "priority" : 7
@@ -12289,7 +13196,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 47,
+                "action_id" : 54,
                 "action_data" : []
               },
               "priority" : 8
@@ -12308,7 +13215,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 48,
+                "action_id" : 55,
                 "action_data" : []
               },
               "priority" : 9
@@ -12327,7 +13234,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 49,
+                "action_id" : 56,
                 "action_data" : []
               },
               "priority" : 10
@@ -12346,7 +13253,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 50,
+                "action_id" : 57,
                 "action_data" : []
               },
               "priority" : 11
@@ -12365,7 +13272,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 51,
+                "action_id" : 58,
                 "action_data" : []
               },
               "priority" : 12
@@ -12384,7 +13291,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 52,
+                "action_id" : 59,
                 "action_data" : []
               },
               "priority" : 13
@@ -12403,7 +13310,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 53,
+                "action_id" : 60,
                 "action_data" : []
               },
               "priority" : 14
@@ -12422,7 +13329,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 54,
+                "action_id" : 61,
                 "action_data" : []
               },
               "priority" : 15
@@ -12441,7 +13348,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 55,
+                "action_id" : 62,
                 "action_data" : []
               },
               "priority" : 16
@@ -12450,7 +13357,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
-          "id" : 31,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 375,
@@ -12471,7 +13378,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 37],
+          "action_ids" : [63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 44],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15", "NoAction"],
           "base_default_next" : "tbl_int_transit425",
           "next_tables" : {
@@ -12494,7 +13401,7 @@
             "NoAction" : "tbl_int_transit425"
           },
           "default_entry" : {
-            "action_id" : 37,
+            "action_id" : 44,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -12514,7 +13421,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 56,
+                "action_id" : 63,
                 "action_data" : []
               },
               "priority" : 1
@@ -12533,7 +13440,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 57,
+                "action_id" : 64,
                 "action_data" : []
               },
               "priority" : 2
@@ -12552,7 +13459,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 58,
+                "action_id" : 65,
                 "action_data" : []
               },
               "priority" : 3
@@ -12571,7 +13478,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 59,
+                "action_id" : 66,
                 "action_data" : []
               },
               "priority" : 4
@@ -12590,7 +13497,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 60,
+                "action_id" : 67,
                 "action_data" : []
               },
               "priority" : 5
@@ -12609,7 +13516,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 61,
+                "action_id" : 68,
                 "action_data" : []
               },
               "priority" : 6
@@ -12628,7 +13535,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 62,
+                "action_id" : 69,
                 "action_data" : []
               },
               "priority" : 7
@@ -12647,7 +13554,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 63,
+                "action_id" : 70,
                 "action_data" : []
               },
               "priority" : 8
@@ -12666,7 +13573,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 64,
+                "action_id" : 71,
                 "action_data" : []
               },
               "priority" : 9
@@ -12685,7 +13592,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 65,
+                "action_id" : 72,
                 "action_data" : []
               },
               "priority" : 10
@@ -12704,7 +13611,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 66,
+                "action_id" : 73,
                 "action_data" : []
               },
               "priority" : 11
@@ -12723,7 +13630,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 67,
+                "action_id" : 74,
                 "action_data" : []
               },
               "priority" : 12
@@ -12742,7 +13649,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 68,
+                "action_id" : 75,
                 "action_data" : []
               },
               "priority" : 13
@@ -12761,7 +13668,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 69,
+                "action_id" : 76,
                 "action_data" : []
               },
               "priority" : 14
@@ -12780,7 +13687,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 70,
+                "action_id" : 77,
                 "action_data" : []
               },
               "priority" : 15
@@ -12799,7 +13706,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 71,
+                "action_id" : 78,
                 "action_data" : []
               },
               "priority" : 16
@@ -12808,7 +13715,7 @@
         },
         {
           "name" : "tbl_int_transit425",
-          "id" : 32,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 425,
@@ -12822,14 +13729,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [87],
+          "action_ids" : [94],
           "actions" : ["int_transit425"],
-          "base_default_next" : "node_61",
+          "base_default_next" : "node_74",
           "next_tables" : {
-            "int_transit425" : "node_61"
+            "int_transit425" : "node_74"
           },
           "default_entry" : {
-            "action_id" : 87,
+            "action_id" : 94,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12837,7 +13744,7 @@
         },
         {
           "name" : "tbl_int_transit428",
-          "id" : 33,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 428,
@@ -12851,14 +13758,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [86],
+          "action_ids" : [93],
           "actions" : ["int_transit428"],
-          "base_default_next" : "node_63",
+          "base_default_next" : "node_76",
           "next_tables" : {
-            "int_transit428" : "node_63"
+            "int_transit428" : "node_76"
           },
           "default_entry" : {
-            "action_id" : 86,
+            "action_id" : 93,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12866,7 +13773,7 @@
         },
         {
           "name" : "tbl_int_transit431",
-          "id" : 34,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 431,
@@ -12880,14 +13787,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [88],
+          "action_ids" : [95],
           "actions" : ["int_transit431"],
-          "base_default_next" : "node_65",
+          "base_default_next" : "node_78",
           "next_tables" : {
-            "int_transit431" : "node_65"
+            "int_transit431" : "node_78"
           },
           "default_entry" : {
-            "action_id" : 88,
+            "action_id" : 95,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12895,7 +13802,7 @@
         },
         {
           "name" : "tbl_int_transit434",
-          "id" : 35,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 434,
@@ -12909,14 +13816,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [89],
+          "action_ids" : [96],
           "actions" : ["int_transit434"],
           "base_default_next" : null,
           "next_tables" : {
             "int_transit434" : null
           },
           "default_entry" : {
-            "action_id" : 89,
+            "action_id" : 96,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12926,8 +13833,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_30",
-          "id" : 10,
+          "name" : "node_43",
+          "id" : 16,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 103,
@@ -12946,11 +13853,11 @@
             }
           },
           "true_next" : "tbl_packetio41",
-          "false_next" : "node_32"
+          "false_next" : "node_45"
         },
         {
-          "name" : "node_32",
-          "id" : 11,
+          "name" : "node_45",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -12972,11 +13879,11 @@
             }
           },
           "true_next" : "tbl_packetio44",
-          "false_next" : "node_34"
+          "false_next" : "node_47"
         },
         {
-          "name" : "node_34",
-          "id" : 12,
+          "name" : "node_47",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 347,
@@ -13015,11 +13922,11 @@
             }
           },
           "true_next" : "tbl_next349",
-          "false_next" : "node_36"
+          "false_next" : "node_49"
         },
         {
-          "name" : "node_36",
-          "id" : 13,
+          "name" : "node_49",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 352,
@@ -13040,12 +13947,12 @@
               }
             }
           },
-          "true_next" : "node_37",
+          "true_next" : "node_50",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_37",
-          "id" : 14,
+          "name" : "node_50",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -13067,8 +13974,8 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_41",
-          "id" : 15,
+          "name" : "node_54",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 374,
@@ -13087,11 +13994,11 @@
             }
           },
           "true_next" : "tbl_next375",
-          "false_next" : "node_45"
+          "false_next" : "node_58"
         },
         {
-          "name" : "node_43",
-          "id" : 16,
+          "name" : "node_56",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -13113,11 +14020,11 @@
             }
           },
           "true_next" : "tbl_next376",
-          "false_next" : "node_49"
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_45",
-          "id" : 17,
+          "name" : "node_58",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 378,
@@ -13156,11 +14063,11 @@
             }
           },
           "true_next" : "tbl_next379",
-          "false_next" : "node_49"
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_47",
-          "id" : 18,
+          "name" : "node_60",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -13182,11 +14089,11 @@
             }
           },
           "true_next" : "tbl_next380",
-          "false_next" : "node_49"
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_49",
-          "id" : 19,
+          "name" : "node_62",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 102,
@@ -13262,11 +14169,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_50"
+          "true_next" : "node_63"
         },
         {
-          "name" : "node_50",
-          "id" : 20,
+          "name" : "node_63",
+          "id" : 26,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 112,
@@ -13285,11 +14192,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "false_next" : "node_52"
+          "false_next" : "node_65"
         },
         {
-          "name" : "node_52",
-          "id" : 21,
+          "name" : "node_65",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 110,
@@ -13311,8 +14218,8 @@
           "true_next" : "tbl_act"
         },
         {
-          "name" : "node_55",
-          "id" : 22,
+          "name" : "node_68",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 419,
@@ -13338,11 +14245,11 @@
             }
           },
           "true_next" : "tbl_int_transit420",
-          "false_next" : "node_57"
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_57",
-          "id" : 23,
+          "name" : "node_70",
+          "id" : 29,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -13365,8 +14272,8 @@
           "true_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003"
         },
         {
-          "name" : "node_61",
-          "id" : 24,
+          "name" : "node_74",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 427,
@@ -13385,11 +14292,11 @@
             }
           },
           "true_next" : "tbl_int_transit428",
-          "false_next" : "node_63"
+          "false_next" : "node_76"
         },
         {
-          "name" : "node_63",
-          "id" : 25,
+          "name" : "node_76",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 430,
@@ -13408,11 +14315,11 @@
             }
           },
           "true_next" : "tbl_int_transit431",
-          "false_next" : "node_65"
+          "false_next" : "node_78"
         },
         {
-          "name" : "node_65",
-          "id" : 26,
+          "name" : "node_78",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 433,
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
index 09d2757..f13b234 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
@@ -192,70 +192,70 @@
   }
   match_fields {
     id: 2
-    name: "ip_proto"
-    bitwidth: 8
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 3
-    name: "l4_sport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 4
-    name: "l4_dport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 5
     name: "eth_dst"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 6
+    id: 3
     name: "eth_src"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 7
+    id: 4
     name: "vlan_id"
     bitwidth: 12
     match_type: TERNARY
   }
   match_fields {
-    id: 8
+    id: 5
     name: "eth_type"
     bitwidth: 16
     match_type: TERNARY
   }
   match_fields {
-    id: 9
+    id: 6
     name: "ipv4_src"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 10
+    id: 7
     name: "ipv4_dst"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 11
+    id: 8
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
     name: "icmp_type"
     bitwidth: 8
     match_type: TERNARY
   }
   match_fields {
-    id: 12
+    id: 10
     name: "icmp_code"
     bitwidth: 8
     match_type: TERNARY
   }
+  match_fields {
+    id: 11
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
   action_refs {
     id: 23623126
   }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
index 3595fd9..c420605 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
@@ -15,6 +15,11 @@
         ["tmp_7", 64, false],
         ["tmp_8", 32, false],
         ["tmp_9", 32, false],
+        ["acl_ipv4_src", 32, false],
+        ["acl_ipv4_dst", 32, false],
+        ["acl_ip_proto", 8, false],
+        ["acl_l4_sport", 16, false],
+        ["acl_l4_dport", 16, false],
         ["process_int_main_process_int_transit_hasReturned", 1, false],
         ["userMetadata._ip_eth_type0", 16, false],
         ["userMetadata._vlan_id1", 12, false],
@@ -556,7 +561,7 @@
       "name" : "fl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 46,
+        "line" : 52,
         "column" : 40,
         "source_fragment" : "{standard_metadata.ingress_port}"
       },
@@ -2215,7 +2220,7 @@
       "binding" : "FabricIngress.acl.acl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 30,
+        "line" : 36,
         "column" : 50,
         "source_fragment" : "acl_counter"
       }
@@ -2900,7 +2905,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 33,
+            "line" : 39,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2926,7 +2931,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 39,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
           }
@@ -2955,7 +2960,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 40,
+            "line" : 46,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -2986,7 +2991,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 46,
+            "line" : 52,
             "column" : 8,
             "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
           }
@@ -3008,7 +3013,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 51,
+            "line" : 57,
             "column" : 8,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -3037,7 +3042,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 52,
+            "line" : 58,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -6621,7 +6626,7 @@
       ]
     },
     {
-      "name" : "port_counter31",
+      "name" : "acl101",
       "id" : 53,
       "runtime_data" : [],
       "primitives" : [
@@ -6630,6 +6635,416 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 102,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl104",
+      "id" : 54,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 105,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl97",
+      "id" : 55,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.inner_ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 98,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.inner_ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 99,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.inner_ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl112",
+      "id" : 56,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 113,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl115",
+      "id" : 57,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 116,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl108",
+      "id" : 58,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 109,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl27",
+      "id" : 59,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 28,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_dst = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 29,
+            "column" : 4,
+            "source_fragment" : "bit<8> ip_proto = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 30,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_sport = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 31,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_dport = 0;"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "port_counter31",
+      "id" : 60,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp_8"]
             },
             {
@@ -6680,7 +7095,7 @@
     },
     {
       "name" : "port_counter34",
-      "id" : 54,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6738,31 +7153,31 @@
     },
     {
       "name" : "nop",
-      "id" : 55,
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "nop",
-      "id" : 56,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "NoAction",
-      "id" : 57,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "NoAction",
-      "id" : 58,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
-      "id" : 59,
+      "id" : 66,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -7257,7 +7672,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 60,
+      "id" : 67,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -7317,13 +7732,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 61,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 62,
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7480,7 +7895,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 63,
+      "id" : 70,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7605,7 +8020,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 64,
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7796,7 +8211,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 65,
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7966,7 +8381,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
-      "id" : 66,
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8202,7 +8617,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
-      "id" : 67,
+      "id" : 74,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8406,7 +8821,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
-      "id" : 68,
+      "id" : 75,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8676,7 +9091,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 69,
+      "id" : 76,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8801,7 +9216,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
-      "id" : 70,
+      "id" : 77,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8992,7 +9407,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
-      "id" : 71,
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9151,7 +9566,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
-      "id" : 72,
+      "id" : 79,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9376,7 +9791,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 73,
+      "id" : 80,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9580,7 +9995,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
-      "id" : 74,
+      "id" : 81,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9850,7 +10265,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
-      "id" : 75,
+      "id" : 82,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10088,7 +10503,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
-      "id" : 76,
+      "id" : 83,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10392,13 +10807,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 77,
+      "id" : 84,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 78,
+      "id" : 85,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10523,7 +10938,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 79,
+      "id" : 86,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10667,7 +11082,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 80,
+      "id" : 87,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10845,7 +11260,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 81,
+      "id" : 88,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10993,7 +11408,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
-      "id" : 82,
+      "id" : 89,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11175,7 +11590,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
-      "id" : 83,
+      "id" : 90,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11376,7 +11791,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
-      "id" : 84,
+      "id" : 91,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11611,7 +12026,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 85,
+      "id" : 92,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11736,7 +12151,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
-      "id" : 86,
+      "id" : 93,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11895,7 +12310,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
-      "id" : 87,
+      "id" : 94,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12073,7 +12488,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
-      "id" : 88,
+      "id" : 95,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12285,7 +12700,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 89,
+      "id" : 96,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12467,7 +12882,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
-      "id" : 90,
+      "id" : 97,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12683,7 +13098,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
-      "id" : 91,
+      "id" : 98,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12918,7 +13333,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
-      "id" : 92,
+      "id" : 99,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13187,7 +13602,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 93,
+      "id" : 100,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13228,7 +13643,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 94,
+      "id" : 101,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13345,7 +13760,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 95,
+      "id" : 102,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13443,7 +13858,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 96,
+      "id" : 103,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13465,7 +13880,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 97,
+      "id" : 104,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13487,7 +13902,7 @@
     },
     {
       "name" : "FabricEgress.spgw.gtpu_encap",
-      "id" : 98,
+      "id" : 105,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14079,7 +14494,7 @@
     },
     {
       "name" : "packetio41",
-      "id" : 99,
+      "id" : 106,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14096,7 +14511,7 @@
     },
     {
       "name" : "packetio44",
-      "id" : 100,
+      "id" : 107,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14147,7 +14562,7 @@
     },
     {
       "name" : "next349",
-      "id" : 101,
+      "id" : 108,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14169,7 +14584,7 @@
     },
     {
       "name" : "next376",
-      "id" : 102,
+      "id" : 109,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14191,7 +14606,7 @@
     },
     {
       "name" : "next375",
-      "id" : 103,
+      "id" : 110,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14240,7 +14655,7 @@
     },
     {
       "name" : "next380",
-      "id" : 104,
+      "id" : 111,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14262,7 +14677,7 @@
     },
     {
       "name" : "next379",
-      "id" : 105,
+      "id" : 112,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14311,7 +14726,7 @@
     },
     {
       "name" : "spgw342",
-      "id" : 106,
+      "id" : 113,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14337,7 +14752,7 @@
     },
     {
       "name" : "act",
-      "id" : 107,
+      "id" : 114,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14367,7 +14782,7 @@
     },
     {
       "name" : "int_transit420",
-      "id" : 108,
+      "id" : 115,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14403,7 +14818,7 @@
     },
     {
       "name" : "int_transit428",
-      "id" : 109,
+      "id" : 116,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14452,7 +14867,7 @@
     },
     {
       "name" : "int_transit425",
-      "id" : 110,
+      "id" : 117,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14501,7 +14916,7 @@
     },
     {
       "name" : "int_transit431",
-      "id" : 111,
+      "id" : 118,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14550,7 +14965,7 @@
     },
     {
       "name" : "int_transit434",
-      "id" : 112,
+      "id" : 119,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15321,10 +15736,10 @@
           "direct_meters" : null,
           "action_ids" : [15, 1],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_bridging" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -15358,10 +15773,10 @@
           "direct_meters" : null,
           "action_ids" : [16, 2],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 2,
@@ -15395,11 +15810,11 @@
           "direct_meters" : null,
           "action_ids" : [17, 18, 3],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
-            "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_acl27",
+            "FabricIngress.forwarding.nop_routing_v4" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -15409,11 +15824,214 @@
           }
         },
         {
-          "name" : "FabricIngress.acl.acl",
+          "name" : "tbl_acl27",
           "id" : 16,
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 60,
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [59],
+          "actions" : ["acl27"],
+          "base_default_next" : "node_30",
+          "next_tables" : {
+            "acl27" : "node_30"
+          },
+          "default_entry" : {
+            "action_id" : 59,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl97",
+          "id" : 17,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 21,
+            "source_fragment" : "= hdr.inner_ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [55],
+          "actions" : ["acl97"],
+          "base_default_next" : "node_32",
+          "next_tables" : {
+            "acl97" : "node_32"
+          },
+          "default_entry" : {
+            "action_id" : 55,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl101",
+          "id" : 18,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [53],
+          "actions" : ["acl101"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl101" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 53,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl104",
+          "id" : 19,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [54],
+          "actions" : ["acl104"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl104" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 54,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl108",
+          "id" : 20,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 21,
+            "source_fragment" : "= hdr.ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [58],
+          "actions" : ["acl108"],
+          "base_default_next" : "node_38",
+          "next_tables" : {
+            "acl108" : "node_38"
+          },
+          "default_entry" : {
+            "action_id" : 58,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl112",
+          "id" : 21,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 25,
+            "source_fragment" : "= hdr.tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [56],
+          "actions" : ["acl112"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl112" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 56,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl115",
+          "id" : 22,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 25,
+            "source_fragment" : "= hdr.udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [57],
+          "actions" : ["acl115"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl115" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 57,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.acl.acl",
+          "id" : 23,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "acl"
           },
@@ -15426,24 +16044,6 @@
             },
             {
               "match_type" : "ternary",
-              "name" : "ip_proto",
-              "target" : ["scalars", "userMetadata._ip_proto12"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_sport",
-              "target" : ["scalars", "userMetadata._l4_sport13"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_dport",
-              "target" : ["scalars", "userMetadata._l4_dport14"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
               "name" : "eth_dst",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -15469,13 +16069,19 @@
             {
               "match_type" : "ternary",
               "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
+              "target" : ["scalars", "acl_ipv4_src"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
+              "target" : ["scalars", "acl_ipv4_dst"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ip_proto",
+              "target" : ["scalars", "acl_ip_proto"],
               "mask" : null
             },
             {
@@ -15489,6 +16095,18 @@
               "name" : "icmp_code",
               "target" : ["icmp", "icmp_code"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_sport",
+              "target" : ["scalars", "acl_l4_sport"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_dport",
+              "target" : ["scalars", "acl_l4_dport"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -15499,13 +16117,13 @@
           "direct_meters" : null,
           "action_ids" : [19, 20, 21, 22, 23],
           "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
-          "base_default_next" : "node_30",
+          "base_default_next" : "node_43",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_30",
-            "FabricIngress.acl.punt_to_cpu" : "node_30",
-            "FabricIngress.acl.set_clone_session_id" : "node_30",
-            "FabricIngress.acl.drop" : "node_30",
-            "FabricIngress.acl.nop_acl" : "node_30"
+            "FabricIngress.acl.set_next_id_acl" : "node_43",
+            "FabricIngress.acl.punt_to_cpu" : "node_43",
+            "FabricIngress.acl.set_clone_session_id" : "node_43",
+            "FabricIngress.acl.drop" : "node_43",
+            "FabricIngress.acl.nop_acl" : "node_43"
           },
           "default_entry" : {
             "action_id" : 23,
@@ -15516,7 +16134,7 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 17,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 119,
@@ -15560,7 +16178,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 18,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 202,
@@ -15594,7 +16212,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 19,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 236,
@@ -15631,7 +16249,7 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 20,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 86,
@@ -15654,10 +16272,10 @@
           "direct_meters" : null,
           "action_ids" : [24, 4],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_35",
+          "base_default_next" : "node_48",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_35",
-            "nop" : "node_35"
+            "FabricIngress.next.set_vlan" : "node_48",
+            "nop" : "node_48"
           },
           "default_entry" : {
             "action_id" : 4,
@@ -15668,7 +16286,7 @@
         },
         {
           "name" : "tbl_port_counter31",
-          "id" : 21,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -15682,14 +16300,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [60],
           "actions" : ["port_counter31"],
-          "base_default_next" : "node_37",
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "port_counter31" : "node_37"
+            "port_counter31" : "node_50"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 60,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15697,7 +16315,7 @@
         },
         {
           "name" : "tbl_port_counter34",
-          "id" : 22,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -15711,14 +16329,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [61],
           "actions" : ["port_counter34"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
             "port_counter34" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15726,7 +16344,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_source",
-          "id" : 23,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 46,
@@ -16003,7 +16621,7 @@
             }
           },
           "true_next" : "node_23",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_23",
@@ -16081,12 +16699,167 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v4",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_30",
           "id" : 11,
           "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 96,
+            "column" : 12,
+            "source_fragment" : "hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "and",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["gtpu", "$valid$"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["inner_ipv4", "$valid$"]
+                  }
+                }
+              }
+            }
+          },
+          "true_next" : "tbl_acl97",
+          "false_next" : "node_36"
+        },
+        {
+          "name" : "node_32",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 100,
+            "column" : 16,
+            "source_fragment" : "hdr.inner_tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl101",
+          "false_next" : "node_34"
+        },
+        {
+          "name" : "node_34",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 103,
+            "column" : 23,
+            "source_fragment" : "hdr.inner_udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl104",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_36",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 107,
+            "column" : 19,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl108",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_38",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 111,
+            "column" : 16,
+            "source_fragment" : "hdr.tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl112",
+          "false_next" : "node_40"
+        },
+        {
+          "name" : "node_40",
+          "id" : 16,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 114,
+            "column" : 23,
+            "source_fragment" : "hdr.udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl115",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_43",
+          "id" : 17,
+          "source_info" : {
             "filename" : "fabric.p4",
             "line" : 73,
             "column" : 12,
@@ -16114,8 +16887,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_35",
-          "id" : 12,
+          "name" : "node_48",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -16137,11 +16910,11 @@
             }
           },
           "true_next" : "tbl_port_counter31",
-          "false_next" : "node_37"
+          "false_next" : "node_50"
         },
         {
-          "name" : "node_37",
-          "id" : 13,
+          "name" : "node_50",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -16176,11 +16949,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_42",
+      "init_table" : "node_55",
       "tables" : [
         {
           "name" : "tbl_packetio41",
-          "id" : 24,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -16194,14 +16967,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [99],
+          "action_ids" : [106],
           "actions" : ["packetio41"],
-          "base_default_next" : "node_44",
+          "base_default_next" : "node_57",
           "next_tables" : {
-            "packetio41" : "node_44"
+            "packetio41" : "node_57"
           },
           "default_entry" : {
-            "action_id" : 99,
+            "action_id" : 106,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16209,7 +16982,7 @@
         },
         {
           "name" : "tbl_packetio44",
-          "id" : 25,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -16223,14 +16996,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [100],
+          "action_ids" : [107],
           "actions" : ["packetio44"],
-          "base_default_next" : "node_46",
+          "base_default_next" : "node_59",
           "next_tables" : {
-            "packetio44" : "node_46"
+            "packetio44" : "node_59"
           },
           "default_entry" : {
-            "action_id" : 100,
+            "action_id" : 107,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16238,7 +17011,7 @@
         },
         {
           "name" : "tbl_next349",
-          "id" : 26,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 349,
@@ -16252,14 +17025,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [101],
+          "action_ids" : [108],
           "actions" : ["next349"],
-          "base_default_next" : "node_48",
+          "base_default_next" : "node_61",
           "next_tables" : {
-            "next349" : "node_48"
+            "next349" : "node_61"
           },
           "default_entry" : {
-            "action_id" : 101,
+            "action_id" : 108,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16267,7 +17040,7 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 27,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -16281,14 +17054,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [93],
+          "action_ids" : [100],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 93,
+            "action_id" : 100,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16296,7 +17069,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 28,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 355,
@@ -16310,14 +17083,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [94],
+          "action_ids" : [101],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 94,
+            "action_id" : 101,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16325,7 +17098,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 29,
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -16352,16 +17125,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [95, 96, 97],
+          "action_ids" : [102, 103, 104],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
-          "base_default_next" : "node_53",
+          "base_default_next" : "node_66",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_53",
-            "FabricEgress.egress_next.pop_vlan" : "node_53",
-            "FabricEgress.egress_next.drop" : "node_53"
+            "FabricEgress.egress_next.push_vlan" : "node_66",
+            "FabricEgress.egress_next.pop_vlan" : "node_66",
+            "FabricEgress.egress_next.drop" : "node_66"
           },
           "default_entry" : {
-            "action_id" : 97,
+            "action_id" : 104,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16369,7 +17142,7 @@
         },
         {
           "name" : "tbl_next375",
-          "id" : 30,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 375,
@@ -16383,14 +17156,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [103],
+          "action_ids" : [110],
           "actions" : ["next375"],
-          "base_default_next" : "node_55",
+          "base_default_next" : "node_68",
           "next_tables" : {
-            "next375" : "node_55"
+            "next375" : "node_68"
           },
           "default_entry" : {
-            "action_id" : 103,
+            "action_id" : 110,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16398,7 +17171,7 @@
         },
         {
           "name" : "tbl_next376",
-          "id" : 31,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -16412,14 +17185,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [102],
+          "action_ids" : [109],
           "actions" : ["next376"],
-          "base_default_next" : "node_61",
+          "base_default_next" : "node_74",
           "next_tables" : {
-            "next376" : "node_61"
+            "next376" : "node_74"
           },
           "default_entry" : {
-            "action_id" : 102,
+            "action_id" : 109,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16427,7 +17200,7 @@
         },
         {
           "name" : "tbl_next379",
-          "id" : 32,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 379,
@@ -16441,14 +17214,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [105],
+          "action_ids" : [112],
           "actions" : ["next379"],
-          "base_default_next" : "node_59",
+          "base_default_next" : "node_72",
           "next_tables" : {
-            "next379" : "node_59"
+            "next379" : "node_72"
           },
           "default_entry" : {
-            "action_id" : 105,
+            "action_id" : 112,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16456,7 +17229,7 @@
         },
         {
           "name" : "tbl_next380",
-          "id" : 33,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -16470,14 +17243,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [104],
+          "action_ids" : [111],
           "actions" : ["next380"],
-          "base_default_next" : "node_61",
+          "base_default_next" : "node_74",
           "next_tables" : {
-            "next380" : "node_61"
+            "next380" : "node_74"
           },
           "default_entry" : {
-            "action_id" : 104,
+            "action_id" : 111,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16485,7 +17258,7 @@
         },
         {
           "name" : "tbl_spgw_gtpu_encap",
-          "id" : 34,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 339,
@@ -16499,14 +17272,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [98],
+          "action_ids" : [105],
           "actions" : ["FabricEgress.spgw.gtpu_encap"],
-          "base_default_next" : "node_64",
+          "base_default_next" : "node_77",
           "next_tables" : {
-            "FabricEgress.spgw.gtpu_encap" : "node_64"
+            "FabricEgress.spgw.gtpu_encap" : "node_77"
           },
           "default_entry" : {
-            "action_id" : 98,
+            "action_id" : 105,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16514,7 +17287,7 @@
         },
         {
           "name" : "tbl_spgw342",
-          "id" : 35,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 342,
@@ -16528,14 +17301,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [106],
+          "action_ids" : [113],
           "actions" : ["spgw342"],
-          "base_default_next" : "node_66",
+          "base_default_next" : "node_79",
           "next_tables" : {
-            "spgw342" : "node_66"
+            "spgw342" : "node_79"
           },
           "default_entry" : {
-            "action_id" : 106,
+            "action_id" : 113,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16543,7 +17316,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "id" : 36,
+          "id" : 43,
           "source_info" : {
             "filename" : "include/int/int_source.p4",
             "line" : 66,
@@ -16582,15 +17355,15 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59, 55],
+          "action_ids" : [66, 62],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
-          "base_default_next" : "node_69",
+          "base_default_next" : "node_82",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_69",
-            "nop" : "node_69"
+            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_82",
+            "nop" : "node_82"
           },
           "default_entry" : {
-            "action_id" : 55,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16598,7 +17371,7 @@
         },
         {
           "name" : "tbl_act",
-          "id" : 37,
+          "id" : 44,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -16606,14 +17379,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [107],
+          "action_ids" : [114],
           "actions" : ["act"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
             "act" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 107,
+            "action_id" : 114,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16621,7 +17394,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
-          "id" : 38,
+          "id" : 45,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 315,
@@ -16642,15 +17415,15 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60, 56],
+          "action_ids" : [67, 63],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
-          "base_default_next" : "node_72",
+          "base_default_next" : "node_85",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_72",
-            "nop" : "node_72"
+            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_85",
+            "nop" : "node_85"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16658,7 +17431,7 @@
         },
         {
           "name" : "tbl_int_transit420",
-          "id" : 39,
+          "id" : 46,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 420,
@@ -16672,14 +17445,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [108],
+          "action_ids" : [115],
           "actions" : ["int_transit420"],
-          "base_default_next" : "node_74",
+          "base_default_next" : "node_87",
           "next_tables" : {
-            "int_transit420" : "node_74"
+            "int_transit420" : "node_87"
           },
           "default_entry" : {
-            "action_id" : 108,
+            "action_id" : 115,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16687,7 +17460,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "id" : 40,
+          "id" : 47,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 331,
@@ -16708,7 +17481,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 57],
+          "action_ids" : [68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 64],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15", "NoAction"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
           "next_tables" : {
@@ -16731,7 +17504,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 64,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -16751,7 +17524,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 61,
+                "action_id" : 68,
                 "action_data" : []
               },
               "priority" : 1
@@ -16770,7 +17543,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 62,
+                "action_id" : 69,
                 "action_data" : []
               },
               "priority" : 2
@@ -16789,7 +17562,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 63,
+                "action_id" : 70,
                 "action_data" : []
               },
               "priority" : 3
@@ -16808,7 +17581,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 64,
+                "action_id" : 71,
                 "action_data" : []
               },
               "priority" : 4
@@ -16827,7 +17600,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 65,
+                "action_id" : 72,
                 "action_data" : []
               },
               "priority" : 5
@@ -16846,7 +17619,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 66,
+                "action_id" : 73,
                 "action_data" : []
               },
               "priority" : 6
@@ -16865,7 +17638,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 67,
+                "action_id" : 74,
                 "action_data" : []
               },
               "priority" : 7
@@ -16884,7 +17657,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 68,
+                "action_id" : 75,
                 "action_data" : []
               },
               "priority" : 8
@@ -16903,7 +17676,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 69,
+                "action_id" : 76,
                 "action_data" : []
               },
               "priority" : 9
@@ -16922,7 +17695,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 70,
+                "action_id" : 77,
                 "action_data" : []
               },
               "priority" : 10
@@ -16941,7 +17714,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 71,
+                "action_id" : 78,
                 "action_data" : []
               },
               "priority" : 11
@@ -16960,7 +17733,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 72,
+                "action_id" : 79,
                 "action_data" : []
               },
               "priority" : 12
@@ -16979,7 +17752,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 73,
+                "action_id" : 80,
                 "action_data" : []
               },
               "priority" : 13
@@ -16998,7 +17771,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 74,
+                "action_id" : 81,
                 "action_data" : []
               },
               "priority" : 14
@@ -17017,7 +17790,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 75,
+                "action_id" : 82,
                 "action_data" : []
               },
               "priority" : 15
@@ -17036,7 +17809,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 76,
+                "action_id" : 83,
                 "action_data" : []
               },
               "priority" : 16
@@ -17045,7 +17818,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
-          "id" : 41,
+          "id" : 48,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 375,
@@ -17066,7 +17839,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 58],
+          "action_ids" : [84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 65],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15", "NoAction"],
           "base_default_next" : "tbl_int_transit425",
           "next_tables" : {
@@ -17089,7 +17862,7 @@
             "NoAction" : "tbl_int_transit425"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 65,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -17109,7 +17882,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 77,
+                "action_id" : 84,
                 "action_data" : []
               },
               "priority" : 1
@@ -17128,7 +17901,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 78,
+                "action_id" : 85,
                 "action_data" : []
               },
               "priority" : 2
@@ -17147,7 +17920,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 79,
+                "action_id" : 86,
                 "action_data" : []
               },
               "priority" : 3
@@ -17166,7 +17939,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 80,
+                "action_id" : 87,
                 "action_data" : []
               },
               "priority" : 4
@@ -17185,7 +17958,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 81,
+                "action_id" : 88,
                 "action_data" : []
               },
               "priority" : 5
@@ -17204,7 +17977,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 82,
+                "action_id" : 89,
                 "action_data" : []
               },
               "priority" : 6
@@ -17223,7 +17996,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 83,
+                "action_id" : 90,
                 "action_data" : []
               },
               "priority" : 7
@@ -17242,7 +18015,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 84,
+                "action_id" : 91,
                 "action_data" : []
               },
               "priority" : 8
@@ -17261,7 +18034,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 85,
+                "action_id" : 92,
                 "action_data" : []
               },
               "priority" : 9
@@ -17280,7 +18053,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 86,
+                "action_id" : 93,
                 "action_data" : []
               },
               "priority" : 10
@@ -17299,7 +18072,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 87,
+                "action_id" : 94,
                 "action_data" : []
               },
               "priority" : 11
@@ -17318,7 +18091,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 88,
+                "action_id" : 95,
                 "action_data" : []
               },
               "priority" : 12
@@ -17337,7 +18110,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 89,
+                "action_id" : 96,
                 "action_data" : []
               },
               "priority" : 13
@@ -17356,7 +18129,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 90,
+                "action_id" : 97,
                 "action_data" : []
               },
               "priority" : 14
@@ -17375,7 +18148,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 91,
+                "action_id" : 98,
                 "action_data" : []
               },
               "priority" : 15
@@ -17394,7 +18167,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 92,
+                "action_id" : 99,
                 "action_data" : []
               },
               "priority" : 16
@@ -17403,7 +18176,7 @@
         },
         {
           "name" : "tbl_int_transit425",
-          "id" : 42,
+          "id" : 49,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 425,
@@ -17417,14 +18190,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [110],
+          "action_ids" : [117],
           "actions" : ["int_transit425"],
-          "base_default_next" : "node_78",
+          "base_default_next" : "node_91",
           "next_tables" : {
-            "int_transit425" : "node_78"
+            "int_transit425" : "node_91"
           },
           "default_entry" : {
-            "action_id" : 110,
+            "action_id" : 117,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17432,7 +18205,7 @@
         },
         {
           "name" : "tbl_int_transit428",
-          "id" : 43,
+          "id" : 50,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 428,
@@ -17446,14 +18219,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [109],
+          "action_ids" : [116],
           "actions" : ["int_transit428"],
-          "base_default_next" : "node_80",
+          "base_default_next" : "node_93",
           "next_tables" : {
-            "int_transit428" : "node_80"
+            "int_transit428" : "node_93"
           },
           "default_entry" : {
-            "action_id" : 109,
+            "action_id" : 116,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17461,7 +18234,7 @@
         },
         {
           "name" : "tbl_int_transit431",
-          "id" : 44,
+          "id" : 51,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 431,
@@ -17475,14 +18248,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [111],
+          "action_ids" : [118],
           "actions" : ["int_transit431"],
-          "base_default_next" : "node_82",
+          "base_default_next" : "node_95",
           "next_tables" : {
-            "int_transit431" : "node_82"
+            "int_transit431" : "node_95"
           },
           "default_entry" : {
-            "action_id" : 111,
+            "action_id" : 118,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17490,7 +18263,7 @@
         },
         {
           "name" : "tbl_int_transit434",
-          "id" : 45,
+          "id" : 52,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 434,
@@ -17504,14 +18277,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [112],
+          "action_ids" : [119],
           "actions" : ["int_transit434"],
           "base_default_next" : null,
           "next_tables" : {
             "int_transit434" : null
           },
           "default_entry" : {
-            "action_id" : 112,
+            "action_id" : 119,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17521,8 +18294,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_42",
-          "id" : 14,
+          "name" : "node_55",
+          "id" : 20,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 103,
@@ -17541,11 +18314,11 @@
             }
           },
           "true_next" : "tbl_packetio41",
-          "false_next" : "node_44"
+          "false_next" : "node_57"
         },
         {
-          "name" : "node_44",
-          "id" : 15,
+          "name" : "node_57",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -17567,11 +18340,11 @@
             }
           },
           "true_next" : "tbl_packetio44",
-          "false_next" : "node_46"
+          "false_next" : "node_59"
         },
         {
-          "name" : "node_46",
-          "id" : 16,
+          "name" : "node_59",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 347,
@@ -17610,11 +18383,11 @@
             }
           },
           "true_next" : "tbl_next349",
-          "false_next" : "node_48"
+          "false_next" : "node_61"
         },
         {
-          "name" : "node_48",
-          "id" : 17,
+          "name" : "node_61",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 352,
@@ -17635,12 +18408,12 @@
               }
             }
           },
-          "true_next" : "node_49",
+          "true_next" : "node_62",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_49",
-          "id" : 18,
+          "name" : "node_62",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -17662,8 +18435,8 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_53",
-          "id" : 19,
+          "name" : "node_66",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 374,
@@ -17682,11 +18455,11 @@
             }
           },
           "true_next" : "tbl_next375",
-          "false_next" : "node_57"
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_55",
-          "id" : 20,
+          "name" : "node_68",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -17708,11 +18481,11 @@
             }
           },
           "true_next" : "tbl_next376",
-          "false_next" : "node_61"
+          "false_next" : "node_74"
         },
         {
-          "name" : "node_57",
-          "id" : 21,
+          "name" : "node_70",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 378,
@@ -17751,11 +18524,11 @@
             }
           },
           "true_next" : "tbl_next379",
-          "false_next" : "node_61"
+          "false_next" : "node_74"
         },
         {
-          "name" : "node_59",
-          "id" : 22,
+          "name" : "node_72",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -17777,11 +18550,11 @@
             }
           },
           "true_next" : "tbl_next380",
-          "false_next" : "node_61"
+          "false_next" : "node_74"
         },
         {
-          "name" : "node_61",
-          "id" : 23,
+          "name" : "node_74",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 337,
@@ -17806,12 +18579,12 @@
               }
             }
           },
-          "true_next" : "node_62",
-          "false_next" : "node_66"
+          "true_next" : "node_75",
+          "false_next" : "node_79"
         },
         {
-          "name" : "node_62",
-          "id" : 24,
+          "name" : "node_75",
+          "id" : 30,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 106,
@@ -17830,11 +18603,11 @@
             }
           },
           "true_next" : "tbl_spgw_gtpu_encap",
-          "false_next" : "node_64"
+          "false_next" : "node_77"
         },
         {
-          "name" : "node_64",
-          "id" : 25,
+          "name" : "node_77",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 341,
@@ -17860,11 +18633,11 @@
             }
           },
           "true_next" : "tbl_spgw342",
-          "false_next" : "node_66"
+          "false_next" : "node_79"
         },
         {
-          "name" : "node_66",
-          "id" : 26,
+          "name" : "node_79",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 102,
@@ -17940,11 +18713,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_67"
+          "true_next" : "node_80"
         },
         {
-          "name" : "node_67",
-          "id" : 27,
+          "name" : "node_80",
+          "id" : 33,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 112,
@@ -17963,11 +18736,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "false_next" : "node_69"
+          "false_next" : "node_82"
         },
         {
-          "name" : "node_69",
-          "id" : 28,
+          "name" : "node_82",
+          "id" : 34,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 110,
@@ -17989,8 +18762,8 @@
           "true_next" : "tbl_act"
         },
         {
-          "name" : "node_72",
-          "id" : 29,
+          "name" : "node_85",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 419,
@@ -18016,11 +18789,11 @@
             }
           },
           "true_next" : "tbl_int_transit420",
-          "false_next" : "node_74"
+          "false_next" : "node_87"
         },
         {
-          "name" : "node_74",
-          "id" : 30,
+          "name" : "node_87",
+          "id" : 36,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -18043,8 +18816,8 @@
           "true_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003"
         },
         {
-          "name" : "node_78",
-          "id" : 31,
+          "name" : "node_91",
+          "id" : 37,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 427,
@@ -18063,11 +18836,11 @@
             }
           },
           "true_next" : "tbl_int_transit428",
-          "false_next" : "node_80"
+          "false_next" : "node_93"
         },
         {
-          "name" : "node_80",
-          "id" : 32,
+          "name" : "node_93",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 430,
@@ -18086,11 +18859,11 @@
             }
           },
           "true_next" : "tbl_int_transit431",
-          "false_next" : "node_82"
+          "false_next" : "node_95"
         },
         {
-          "name" : "node_82",
-          "id" : 33,
+          "name" : "node_95",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 433,
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
index bc8a97f..11adb09 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
@@ -192,70 +192,70 @@
   }
   match_fields {
     id: 2
-    name: "ip_proto"
-    bitwidth: 8
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 3
-    name: "l4_sport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 4
-    name: "l4_dport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 5
     name: "eth_dst"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 6
+    id: 3
     name: "eth_src"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 7
+    id: 4
     name: "vlan_id"
     bitwidth: 12
     match_type: TERNARY
   }
   match_fields {
-    id: 8
+    id: 5
     name: "eth_type"
     bitwidth: 16
     match_type: TERNARY
   }
   match_fields {
-    id: 9
+    id: 6
     name: "ipv4_src"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 10
+    id: 7
     name: "ipv4_dst"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 11
+    id: 8
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
     name: "icmp_type"
     bitwidth: 8
     match_type: TERNARY
   }
   match_fields {
-    id: 12
+    id: 10
     name: "icmp_code"
     bitwidth: 8
     match_type: TERNARY
   }
+  match_fields {
+    id: 11
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
   action_refs {
     id: 23623126
   }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index df6af4c..0e33161 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -14,6 +14,11 @@
         ["tmp_7", 64, false],
         ["tmp_8", 32, false],
         ["tmp_9", 32, false],
+        ["acl_ipv4_src", 32, false],
+        ["acl_ipv4_dst", 32, false],
+        ["acl_ip_proto", 8, false],
+        ["acl_l4_sport", 16, false],
+        ["acl_l4_dport", 16, false],
         ["userMetadata._ip_eth_type0", 16, false],
         ["userMetadata._vlan_id1", 12, false],
         ["userMetadata._vlan_pri2", 3, false],
@@ -370,7 +375,7 @@
       "name" : "fl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 46,
+        "line" : 52,
         "column" : 40,
         "source_fragment" : "{standard_metadata.ingress_port}"
       },
@@ -1884,7 +1889,7 @@
       "binding" : "FabricIngress.acl.acl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 30,
+        "line" : 36,
         "column" : 50,
         "source_fragment" : "acl_counter"
       }
@@ -2515,7 +2520,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 33,
+            "line" : 39,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2541,7 +2546,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 39,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
           }
@@ -2570,7 +2575,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 40,
+            "line" : 46,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -2601,7 +2606,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 46,
+            "line" : 52,
             "column" : 8,
             "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
           }
@@ -2623,7 +2628,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 51,
+            "line" : 57,
             "column" : 8,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2652,7 +2657,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 52,
+            "line" : 58,
             "column" : 34,
             "source_fragment" : "= true; ..."
           }
@@ -6236,7 +6241,7 @@
       ]
     },
     {
-      "name" : "port_counter31",
+      "name" : "acl101",
       "id" : 51,
       "runtime_data" : [],
       "primitives" : [
@@ -6245,6 +6250,416 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 102,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl104",
+      "id" : 52,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 105,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl97",
+      "id" : 53,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.inner_ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 98,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.inner_ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 99,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.inner_ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl112",
+      "id" : 54,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 113,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl115",
+      "id" : 55,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 116,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl108",
+      "id" : 56,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 109,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl27",
+      "id" : 57,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 28,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_dst = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 29,
+            "column" : 4,
+            "source_fragment" : "bit<8> ip_proto = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 30,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_sport = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 31,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_dport = 0;"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "port_counter31",
+      "id" : 58,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp_8"]
             },
             {
@@ -6295,7 +6710,7 @@
     },
     {
       "name" : "port_counter34",
-      "id" : 52,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6353,7 +6768,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 53,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6394,7 +6809,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 54,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6511,7 +6926,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 55,
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6609,7 +7024,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 56,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6631,7 +7046,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 57,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6653,7 +7068,7 @@
     },
     {
       "name" : "FabricEgress.spgw.gtpu_encap",
-      "id" : 58,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7245,7 +7660,7 @@
     },
     {
       "name" : "packetio41",
-      "id" : 59,
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7262,7 +7677,7 @@
     },
     {
       "name" : "packetio44",
-      "id" : 60,
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7313,7 +7728,7 @@
     },
     {
       "name" : "next349",
-      "id" : 61,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7335,7 +7750,7 @@
     },
     {
       "name" : "next376",
-      "id" : 62,
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7357,7 +7772,7 @@
     },
     {
       "name" : "next375",
-      "id" : 63,
+      "id" : 70,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7406,7 +7821,7 @@
     },
     {
       "name" : "next380",
-      "id" : 64,
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7428,7 +7843,7 @@
     },
     {
       "name" : "next379",
-      "id" : 65,
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7477,7 +7892,7 @@
     },
     {
       "name" : "spgw342",
-      "id" : 66,
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8225,10 +8640,10 @@
           "direct_meters" : null,
           "action_ids" : [13, 0],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_bridging" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -8262,10 +8677,10 @@
           "direct_meters" : null,
           "action_ids" : [14, 1],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -8299,11 +8714,11 @@
           "direct_meters" : null,
           "action_ids" : [15, 16, 2],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
-            "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_acl27",
+            "FabricIngress.forwarding.nop_routing_v4" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 2,
@@ -8313,11 +8728,214 @@
           }
         },
         {
-          "name" : "FabricIngress.acl.acl",
+          "name" : "tbl_acl27",
           "id" : 16,
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 60,
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [57],
+          "actions" : ["acl27"],
+          "base_default_next" : "node_30",
+          "next_tables" : {
+            "acl27" : "node_30"
+          },
+          "default_entry" : {
+            "action_id" : 57,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl97",
+          "id" : 17,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 21,
+            "source_fragment" : "= hdr.inner_ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [53],
+          "actions" : ["acl97"],
+          "base_default_next" : "node_32",
+          "next_tables" : {
+            "acl97" : "node_32"
+          },
+          "default_entry" : {
+            "action_id" : 53,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl101",
+          "id" : 18,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [51],
+          "actions" : ["acl101"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl101" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 51,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl104",
+          "id" : 19,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [52],
+          "actions" : ["acl104"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl104" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 52,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl108",
+          "id" : 20,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 21,
+            "source_fragment" : "= hdr.ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [56],
+          "actions" : ["acl108"],
+          "base_default_next" : "node_38",
+          "next_tables" : {
+            "acl108" : "node_38"
+          },
+          "default_entry" : {
+            "action_id" : 56,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl112",
+          "id" : 21,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 25,
+            "source_fragment" : "= hdr.tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [54],
+          "actions" : ["acl112"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl112" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 54,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl115",
+          "id" : 22,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 25,
+            "source_fragment" : "= hdr.udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [55],
+          "actions" : ["acl115"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl115" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 55,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.acl.acl",
+          "id" : 23,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "acl"
           },
@@ -8330,24 +8948,6 @@
             },
             {
               "match_type" : "ternary",
-              "name" : "ip_proto",
-              "target" : ["scalars", "userMetadata._ip_proto12"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_sport",
-              "target" : ["scalars", "userMetadata._l4_sport13"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_dport",
-              "target" : ["scalars", "userMetadata._l4_dport14"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
               "name" : "eth_dst",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -8373,13 +8973,19 @@
             {
               "match_type" : "ternary",
               "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
+              "target" : ["scalars", "acl_ipv4_src"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
+              "target" : ["scalars", "acl_ipv4_dst"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ip_proto",
+              "target" : ["scalars", "acl_ip_proto"],
               "mask" : null
             },
             {
@@ -8393,6 +8999,18 @@
               "name" : "icmp_code",
               "target" : ["icmp", "icmp_code"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_sport",
+              "target" : ["scalars", "acl_l4_sport"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_dport",
+              "target" : ["scalars", "acl_l4_dport"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -8403,13 +9021,13 @@
           "direct_meters" : null,
           "action_ids" : [17, 18, 19, 20, 21],
           "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
-          "base_default_next" : "node_30",
+          "base_default_next" : "node_43",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_30",
-            "FabricIngress.acl.punt_to_cpu" : "node_30",
-            "FabricIngress.acl.set_clone_session_id" : "node_30",
-            "FabricIngress.acl.drop" : "node_30",
-            "FabricIngress.acl.nop_acl" : "node_30"
+            "FabricIngress.acl.set_next_id_acl" : "node_43",
+            "FabricIngress.acl.punt_to_cpu" : "node_43",
+            "FabricIngress.acl.set_clone_session_id" : "node_43",
+            "FabricIngress.acl.drop" : "node_43",
+            "FabricIngress.acl.nop_acl" : "node_43"
           },
           "default_entry" : {
             "action_id" : 21,
@@ -8420,7 +9038,7 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 17,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 119,
@@ -8464,7 +9082,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 18,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 202,
@@ -8498,7 +9116,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 19,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 236,
@@ -8535,7 +9153,7 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 20,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 86,
@@ -8558,10 +9176,10 @@
           "direct_meters" : null,
           "action_ids" : [22, 3],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_35",
+          "base_default_next" : "node_48",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_35",
-            "nop" : "node_35"
+            "FabricIngress.next.set_vlan" : "node_48",
+            "nop" : "node_48"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -8572,7 +9190,7 @@
         },
         {
           "name" : "tbl_port_counter31",
-          "id" : 21,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -8586,14 +9204,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
+          "action_ids" : [58],
           "actions" : ["port_counter31"],
-          "base_default_next" : "node_37",
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "port_counter31" : "node_37"
+            "port_counter31" : "node_50"
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8601,7 +9219,7 @@
         },
         {
           "name" : "tbl_port_counter34",
-          "id" : 22,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -8615,14 +9233,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
+          "action_ids" : [59],
           "actions" : ["port_counter34"],
           "base_default_next" : null,
           "next_tables" : {
             "port_counter34" : null
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8870,7 +9488,7 @@
             }
           },
           "true_next" : "node_23",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_23",
@@ -8948,12 +9566,167 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v4",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_30",
           "id" : 11,
           "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 96,
+            "column" : 12,
+            "source_fragment" : "hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "and",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["gtpu", "$valid$"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["inner_ipv4", "$valid$"]
+                  }
+                }
+              }
+            }
+          },
+          "true_next" : "tbl_acl97",
+          "false_next" : "node_36"
+        },
+        {
+          "name" : "node_32",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 100,
+            "column" : 16,
+            "source_fragment" : "hdr.inner_tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl101",
+          "false_next" : "node_34"
+        },
+        {
+          "name" : "node_34",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 103,
+            "column" : 23,
+            "source_fragment" : "hdr.inner_udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl104",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_36",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 107,
+            "column" : 19,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl108",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_38",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 111,
+            "column" : 16,
+            "source_fragment" : "hdr.tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl112",
+          "false_next" : "node_40"
+        },
+        {
+          "name" : "node_40",
+          "id" : 16,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 114,
+            "column" : 23,
+            "source_fragment" : "hdr.udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl115",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_43",
+          "id" : 17,
+          "source_info" : {
             "filename" : "fabric.p4",
             "line" : 73,
             "column" : 12,
@@ -8981,8 +9754,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_35",
-          "id" : 12,
+          "name" : "node_48",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -9004,11 +9777,11 @@
             }
           },
           "true_next" : "tbl_port_counter31",
-          "false_next" : "node_37"
+          "false_next" : "node_50"
         },
         {
-          "name" : "node_37",
-          "id" : 13,
+          "name" : "node_50",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -9043,11 +9816,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_41",
+      "init_table" : "node_54",
       "tables" : [
         {
           "name" : "tbl_packetio41",
-          "id" : 23,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -9061,14 +9834,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59],
+          "action_ids" : [66],
           "actions" : ["packetio41"],
-          "base_default_next" : "node_43",
+          "base_default_next" : "node_56",
           "next_tables" : {
-            "packetio41" : "node_43"
+            "packetio41" : "node_56"
           },
           "default_entry" : {
-            "action_id" : 59,
+            "action_id" : 66,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9076,7 +9849,7 @@
         },
         {
           "name" : "tbl_packetio44",
-          "id" : 24,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -9090,14 +9863,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60],
+          "action_ids" : [67],
           "actions" : ["packetio44"],
-          "base_default_next" : "node_45",
+          "base_default_next" : "node_58",
           "next_tables" : {
-            "packetio44" : "node_45"
+            "packetio44" : "node_58"
           },
           "default_entry" : {
-            "action_id" : 60,
+            "action_id" : 67,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9105,7 +9878,7 @@
         },
         {
           "name" : "tbl_next349",
-          "id" : 25,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 349,
@@ -9119,14 +9892,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
+          "action_ids" : [68],
           "actions" : ["next349"],
-          "base_default_next" : "node_47",
+          "base_default_next" : "node_60",
           "next_tables" : {
-            "next349" : "node_47"
+            "next349" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 68,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9134,7 +9907,7 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 26,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -9148,14 +9921,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [60],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 60,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9163,7 +9936,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 27,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 355,
@@ -9177,14 +9950,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [61],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9192,7 +9965,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 28,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -9219,16 +9992,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [55, 56, 57],
+          "action_ids" : [62, 63, 64],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
-          "base_default_next" : "node_52",
+          "base_default_next" : "node_65",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_52",
-            "FabricEgress.egress_next.pop_vlan" : "node_52",
-            "FabricEgress.egress_next.drop" : "node_52"
+            "FabricEgress.egress_next.push_vlan" : "node_65",
+            "FabricEgress.egress_next.pop_vlan" : "node_65",
+            "FabricEgress.egress_next.drop" : "node_65"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 64,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9236,7 +10009,7 @@
         },
         {
           "name" : "tbl_next375",
-          "id" : 29,
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 375,
@@ -9250,14 +10023,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
+          "action_ids" : [70],
           "actions" : ["next375"],
-          "base_default_next" : "node_54",
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "next375" : "node_54"
+            "next375" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 70,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9265,7 +10038,7 @@
         },
         {
           "name" : "tbl_next376",
-          "id" : 30,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -9279,14 +10052,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
+          "action_ids" : [69],
           "actions" : ["next376"],
-          "base_default_next" : "node_60",
+          "base_default_next" : "node_73",
           "next_tables" : {
-            "next376" : "node_60"
+            "next376" : "node_73"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 69,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9294,7 +10067,7 @@
         },
         {
           "name" : "tbl_next379",
-          "id" : 31,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 379,
@@ -9308,14 +10081,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
+          "action_ids" : [72],
           "actions" : ["next379"],
-          "base_default_next" : "node_58",
+          "base_default_next" : "node_71",
           "next_tables" : {
-            "next379" : "node_58"
+            "next379" : "node_71"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 72,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9323,7 +10096,7 @@
         },
         {
           "name" : "tbl_next380",
-          "id" : 32,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -9337,14 +10110,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
+          "action_ids" : [71],
           "actions" : ["next380"],
-          "base_default_next" : "node_60",
+          "base_default_next" : "node_73",
           "next_tables" : {
-            "next380" : "node_60"
+            "next380" : "node_73"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 71,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9352,7 +10125,7 @@
         },
         {
           "name" : "tbl_spgw_gtpu_encap",
-          "id" : 33,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 339,
@@ -9366,14 +10139,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
+          "action_ids" : [65],
           "actions" : ["FabricEgress.spgw.gtpu_encap"],
-          "base_default_next" : "node_63",
+          "base_default_next" : "node_76",
           "next_tables" : {
-            "FabricEgress.spgw.gtpu_encap" : "node_63"
+            "FabricEgress.spgw.gtpu_encap" : "node_76"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 65,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9381,7 +10154,7 @@
         },
         {
           "name" : "tbl_spgw342",
-          "id" : 34,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 342,
@@ -9395,14 +10168,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [66],
+          "action_ids" : [73],
           "actions" : ["spgw342"],
           "base_default_next" : null,
           "next_tables" : {
             "spgw342" : null
           },
           "default_entry" : {
-            "action_id" : 66,
+            "action_id" : 73,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -9412,8 +10185,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_41",
-          "id" : 14,
+          "name" : "node_54",
+          "id" : 20,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 103,
@@ -9432,11 +10205,11 @@
             }
           },
           "true_next" : "tbl_packetio41",
-          "false_next" : "node_43"
+          "false_next" : "node_56"
         },
         {
-          "name" : "node_43",
-          "id" : 15,
+          "name" : "node_56",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -9458,11 +10231,11 @@
             }
           },
           "true_next" : "tbl_packetio44",
-          "false_next" : "node_45"
+          "false_next" : "node_58"
         },
         {
-          "name" : "node_45",
-          "id" : 16,
+          "name" : "node_58",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 347,
@@ -9501,11 +10274,11 @@
             }
           },
           "true_next" : "tbl_next349",
-          "false_next" : "node_47"
+          "false_next" : "node_60"
         },
         {
-          "name" : "node_47",
-          "id" : 17,
+          "name" : "node_60",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 352,
@@ -9526,12 +10299,12 @@
               }
             }
           },
-          "true_next" : "node_48",
+          "true_next" : "node_61",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_48",
-          "id" : 18,
+          "name" : "node_61",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -9553,8 +10326,8 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_52",
-          "id" : 19,
+          "name" : "node_65",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 374,
@@ -9573,11 +10346,11 @@
             }
           },
           "true_next" : "tbl_next375",
-          "false_next" : "node_56"
+          "false_next" : "node_69"
         },
         {
-          "name" : "node_54",
-          "id" : 20,
+          "name" : "node_67",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -9599,11 +10372,11 @@
             }
           },
           "true_next" : "tbl_next376",
-          "false_next" : "node_60"
+          "false_next" : "node_73"
         },
         {
-          "name" : "node_56",
-          "id" : 21,
+          "name" : "node_69",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 378,
@@ -9642,11 +10415,11 @@
             }
           },
           "true_next" : "tbl_next379",
-          "false_next" : "node_60"
+          "false_next" : "node_73"
         },
         {
-          "name" : "node_58",
-          "id" : 22,
+          "name" : "node_71",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -9668,11 +10441,11 @@
             }
           },
           "true_next" : "tbl_next380",
-          "false_next" : "node_60"
+          "false_next" : "node_73"
         },
         {
-          "name" : "node_60",
-          "id" : 23,
+          "name" : "node_73",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 337,
@@ -9698,11 +10471,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_61"
+          "true_next" : "node_74"
         },
         {
-          "name" : "node_61",
-          "id" : 24,
+          "name" : "node_74",
+          "id" : 30,
           "source_info" : {
             "filename" : "fabric.p4",
             "line" : 106,
@@ -9721,11 +10494,11 @@
             }
           },
           "true_next" : "tbl_spgw_gtpu_encap",
-          "false_next" : "node_63"
+          "false_next" : "node_76"
         },
         {
-          "name" : "node_63",
-          "id" : 25,
+          "name" : "node_76",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
             "line" : 341,
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
index 1cf1c34..a5547a0 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
@@ -168,70 +168,70 @@
   }
   match_fields {
     id: 2
-    name: "ip_proto"
-    bitwidth: 8
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 3
-    name: "l4_sport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 4
-    name: "l4_dport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 5
     name: "eth_dst"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 6
+    id: 3
     name: "eth_src"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 7
+    id: 4
     name: "vlan_id"
     bitwidth: 12
     match_type: TERNARY
   }
   match_fields {
-    id: 8
+    id: 5
     name: "eth_type"
     bitwidth: 16
     match_type: TERNARY
   }
   match_fields {
-    id: 9
+    id: 6
     name: "ipv4_src"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 10
+    id: 7
     name: "ipv4_dst"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 11
+    id: 8
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
     name: "icmp_type"
     bitwidth: 8
     match_type: TERNARY
   }
   match_fields {
-    id: 12
+    id: 10
     name: "icmp_code"
     bitwidth: 8
     match_type: TERNARY
   }
+  match_fields {
+    id: 11
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
   action_refs {
     id: 23623126
   }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index 3c76283..f2edc55 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -14,6 +14,11 @@
         ["tmp_7", 64, false],
         ["tmp_8", 32, false],
         ["tmp_9", 32, false],
+        ["acl_ipv4_src", 32, false],
+        ["acl_ipv4_dst", 32, false],
+        ["acl_ip_proto", 8, false],
+        ["acl_l4_sport", 16, false],
+        ["acl_l4_dport", 16, false],
         ["userMetadata.ip_eth_type", 16, false],
         ["userMetadata.vlan_id", 12, false],
         ["userMetadata.vlan_pri", 3, false],
@@ -136,11 +141,21 @@
       ]
     },
     {
-      "name" : "tcp_t",
+      "name" : "udp_t",
       "id" : 9,
       "fields" : [
         ["sport", 16, false],
         ["dport", 16, false],
+        ["len", 16, false],
+        ["checksum", 16, false]
+      ]
+    },
+    {
+      "name" : "tcp_t",
+      "id" : 10,
+      "fields" : [
+        ["sport", 16, false],
+        ["dport", 16, false],
         ["seq_no", 32, false],
         ["ack_no", 32, false],
         ["data_offset", 4, false],
@@ -153,16 +168,6 @@
       ]
     },
     {
-      "name" : "udp_t",
-      "id" : 10,
-      "fields" : [
-        ["sport", 16, false],
-        ["dport", 16, false],
-        ["len", 16, false],
-        ["checksum", 16, false]
-      ]
-    },
-    {
       "name" : "icmp_t",
       "id" : 11,
       "fields" : [
@@ -248,43 +253,78 @@
       "pi_omit" : true
     },
     {
-      "name" : "ipv4",
+      "name" : "gtpu",
       "id" : 9,
+      "header_type" : "gtpu_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "inner_ipv4",
+      "id" : 10,
       "header_type" : "ipv4_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
-      "name" : "tcp",
-      "id" : 10,
-      "header_type" : "tcp_t",
-      "metadata" : false,
-      "pi_omit" : true
-    },
-    {
-      "name" : "udp",
+      "name" : "inner_udp",
       "id" : 11,
       "header_type" : "udp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
-      "name" : "icmp",
+      "name" : "inner_tcp",
       "id" : 12,
+      "header_type" : "tcp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "inner_icmp",
+      "id" : 13,
+      "header_type" : "icmp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "ipv4",
+      "id" : 14,
+      "header_type" : "ipv4_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "tcp",
+      "id" : 15,
+      "header_type" : "tcp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "udp",
+      "id" : 16,
+      "header_type" : "udp_t",
+      "metadata" : false,
+      "pi_omit" : true
+    },
+    {
+      "name" : "icmp",
+      "id" : 17,
       "header_type" : "icmp_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "packet_out",
-      "id" : 13,
+      "id" : 18,
       "header_type" : "packet_out_header_t",
       "metadata" : false,
       "pi_omit" : true
     },
     {
       "name" : "packet_in",
-      "id" : 14,
+      "id" : 19,
       "header_type" : "packet_in_header_t",
       "metadata" : false,
       "pi_omit" : true
@@ -300,7 +340,7 @@
       "name" : "fl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 46,
+        "line" : 52,
         "column" : 40,
         "source_fragment" : "{standard_metadata.ingress_port}"
       },
@@ -1582,6 +1622,12 @@
           ],
           "transitions" : [
             {
+              "type" : "hexstr",
+              "value" : "0x086801ff",
+              "mask" : null,
+              "next_state" : "parse_gtpu"
+            },
+            {
               "type" : "default",
               "value" : null,
               "mask" : null,
@@ -1626,6 +1672,86 @@
             }
           ],
           "transition_key" : []
+        },
+        {
+          "name" : "parse_gtpu",
+          "id" : 13,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "gtpu"
+                }
+              ],
+              "op" : "extract"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "inner_ipv4"
+                }
+              ],
+              "op" : "extract"
+            }
+          ],
+          "transitions" : [
+            {
+              "type" : "hexstr",
+              "value" : "0x06",
+              "mask" : null,
+              "next_state" : "parse_tcp"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x11",
+              "mask" : null,
+              "next_state" : "parse_inner_udp"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01",
+              "mask" : null,
+              "next_state" : "parse_icmp"
+            },
+            {
+              "type" : "default",
+              "value" : null,
+              "mask" : null,
+              "next_state" : null
+            }
+          ],
+          "transition_key" : [
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ]
+        },
+        {
+          "name" : "parse_inner_udp",
+          "id" : 14,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "regular",
+                  "value" : "inner_udp"
+                }
+              ],
+              "op" : "extract"
+            }
+          ],
+          "transitions" : [
+            {
+              "type" : "default",
+              "value" : null,
+              "mask" : null,
+              "next_state" : null
+            }
+          ],
+          "transition_key" : []
         }
       ]
     }
@@ -1641,7 +1767,7 @@
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
-      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "mpls", "ipv4", "tcp", "udp", "icmp"],
+      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "eth_type", "mpls", "ipv4", "tcp", "udp", "icmp", "gtpu", "inner_ipv4", "inner_tcp", "inner_udp", "inner_icmp"],
       "primitives" : []
     }
   ],
@@ -1702,7 +1828,7 @@
       "binding" : "FabricIngress.acl.acl",
       "source_info" : {
         "filename" : "include/control/acl.p4",
-        "line" : 30,
+        "line" : 36,
         "column" : 50,
         "source_fragment" : "acl_counter"
       }
@@ -2236,7 +2362,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 33,
+            "line" : 39,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
           }
@@ -2262,7 +2388,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 39,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
           }
@@ -2291,7 +2417,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 40,
+            "line" : 46,
             "column" : 8,
             "source_fragment" : "fabric_metadata.skip_next = true"
           }
@@ -2322,7 +2448,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 46,
+            "line" : 52,
             "column" : 8,
             "source_fragment" : "clone3(CloneType.I2E, clone_id, {standard_metadata.ingress_port})"
           }
@@ -2344,7 +2470,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 51,
+            "line" : 57,
             "column" : 8,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2373,7 +2499,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 52,
+            "line" : 58,
             "column" : 8,
             "source_fragment" : "fabric_metadata.skip_next = true"
           }
@@ -2918,7 +3044,7 @@
       ]
     },
     {
-      "name" : "port_counter31",
+      "name" : "acl101",
       "id" : 30,
       "runtime_data" : [],
       "primitives" : [
@@ -2927,6 +3053,416 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 102,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl104",
+      "id" : 31,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.inner_udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 105,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.inner_udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl97",
+      "id" : 32,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.inner_ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 98,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.inner_ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 99,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.inner_ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl112",
+      "id" : 33,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.tcp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["tcp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 113,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.tcp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl115",
+      "id" : 34,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "sport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 16,
+            "source_fragment" : "l4_sport = hdr.udp.sport"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "field",
+              "value" : ["udp", "dport"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 116,
+            "column" : 16,
+            "source_fragment" : "l4_dport = hdr.udp.dport"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl108",
+      "id" : 35,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "src_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 12,
+            "source_fragment" : "ipv4_src = hdr.ipv4.src_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "dst_addr"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 109,
+            "column" : 12,
+            "source_fragment" : "ipv4_dst = hdr.ipv4.dst_addr"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ipv4", "protocol"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "ip_proto = hdr.ipv4.protocol"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "acl27",
+      "id" : 36,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_src"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ipv4_dst"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 28,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_dst = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_ip_proto"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 29,
+            "column" : 4,
+            "source_fragment" : "bit<8> ip_proto = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_sport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 30,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_sport = 0;"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "acl_l4_dport"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 31,
+            "column" : 4,
+            "source_fragment" : "l4_port_t l4_dport = 0;"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "port_counter31",
+      "id" : 37,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp_8"]
             },
             {
@@ -2977,7 +3513,7 @@
     },
     {
       "name" : "port_counter34",
-      "id" : 31,
+      "id" : 38,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3035,7 +3571,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 32,
+      "id" : 39,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3076,7 +3612,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 33,
+      "id" : 40,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3193,7 +3729,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 34,
+      "id" : 41,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3291,7 +3827,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 35,
+      "id" : 42,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3313,7 +3849,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 36,
+      "id" : 43,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3335,7 +3871,7 @@
     },
     {
       "name" : "packetio41",
-      "id" : 37,
+      "id" : 44,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3352,7 +3888,7 @@
     },
     {
       "name" : "packetio44",
-      "id" : 38,
+      "id" : 45,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3403,7 +3939,7 @@
     },
     {
       "name" : "next349",
-      "id" : 39,
+      "id" : 46,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3425,7 +3961,7 @@
     },
     {
       "name" : "next376",
-      "id" : 40,
+      "id" : 47,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3447,7 +3983,7 @@
     },
     {
       "name" : "next375",
-      "id" : 41,
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3496,7 +4032,7 @@
     },
     {
       "name" : "next380",
-      "id" : 42,
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3518,7 +4054,7 @@
     },
     {
       "name" : "next379",
-      "id" : 43,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3800,10 +4336,10 @@
           "direct_meters" : null,
           "action_ids" : [11, 0],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_bridging" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_bridging" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -3837,10 +4373,10 @@
           "direct_meters" : null,
           "action_ids" : [12, 1],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -3874,11 +4410,11 @@
           "direct_meters" : null,
           "action_ids" : [13, 14, 2],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
-          "base_default_next" : "FabricIngress.acl.acl",
+          "base_default_next" : "tbl_acl27",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.acl.acl",
-            "FabricIngress.forwarding.nop_routing_v4" : "FabricIngress.acl.acl",
-            "nop" : "FabricIngress.acl.acl"
+            "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_acl27",
+            "FabricIngress.forwarding.nop_routing_v4" : "tbl_acl27",
+            "nop" : "tbl_acl27"
           },
           "default_entry" : {
             "action_id" : 2,
@@ -3888,11 +4424,214 @@
           }
         },
         {
-          "name" : "FabricIngress.acl.acl",
+          "name" : "tbl_acl27",
           "id" : 8,
           "source_info" : {
             "filename" : "include/control/acl.p4",
-            "line" : 60,
+            "line" : 27,
+            "column" : 4,
+            "source_fragment" : "ipv4_addr_t ipv4_src = 0; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [36],
+          "actions" : ["acl27"],
+          "base_default_next" : "node_18",
+          "next_tables" : {
+            "acl27" : "node_18"
+          },
+          "default_entry" : {
+            "action_id" : 36,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl97",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 97,
+            "column" : 21,
+            "source_fragment" : "= hdr.inner_ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [32],
+          "actions" : ["acl97"],
+          "base_default_next" : "node_20",
+          "next_tables" : {
+            "acl97" : "node_20"
+          },
+          "default_entry" : {
+            "action_id" : 32,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl101",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 101,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [30],
+          "actions" : ["acl101"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl101" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 30,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl104",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 104,
+            "column" : 25,
+            "source_fragment" : "= hdr.inner_udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [31],
+          "actions" : ["acl104"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl104" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 31,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl108",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 108,
+            "column" : 21,
+            "source_fragment" : "= hdr.ipv4.src_addr; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [35],
+          "actions" : ["acl108"],
+          "base_default_next" : "node_26",
+          "next_tables" : {
+            "acl108" : "node_26"
+          },
+          "default_entry" : {
+            "action_id" : 35,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl112",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 112,
+            "column" : 25,
+            "source_fragment" : "= hdr.tcp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [33],
+          "actions" : ["acl112"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl112" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 33,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_acl115",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 115,
+            "column" : 25,
+            "source_fragment" : "= hdr.udp.sport; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [34],
+          "actions" : ["acl115"],
+          "base_default_next" : "FabricIngress.acl.acl",
+          "next_tables" : {
+            "acl115" : "FabricIngress.acl.acl"
+          },
+          "default_entry" : {
+            "action_id" : 34,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.acl.acl",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "acl"
           },
@@ -3905,24 +4644,6 @@
             },
             {
               "match_type" : "ternary",
-              "name" : "ip_proto",
-              "target" : ["scalars", "userMetadata.ip_proto"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_sport",
-              "target" : ["scalars", "userMetadata.l4_sport"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "l4_dport",
-              "target" : ["scalars", "userMetadata.l4_dport"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
               "name" : "eth_dst",
               "target" : ["ethernet", "dst_addr"],
               "mask" : null
@@ -3948,13 +4669,19 @@
             {
               "match_type" : "ternary",
               "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
+              "target" : ["scalars", "acl_ipv4_src"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
+              "target" : ["scalars", "acl_ipv4_dst"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ip_proto",
+              "target" : ["scalars", "acl_ip_proto"],
               "mask" : null
             },
             {
@@ -3968,6 +4695,18 @@
               "name" : "icmp_code",
               "target" : ["icmp", "icmp_code"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_sport",
+              "target" : ["scalars", "acl_l4_sport"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "l4_dport",
+              "target" : ["scalars", "acl_l4_dport"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -3978,13 +4717,13 @@
           "direct_meters" : null,
           "action_ids" : [15, 16, 17, 18, 19],
           "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
-          "base_default_next" : "node_18",
+          "base_default_next" : "node_31",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_18",
-            "FabricIngress.acl.punt_to_cpu" : "node_18",
-            "FabricIngress.acl.set_clone_session_id" : "node_18",
-            "FabricIngress.acl.drop" : "node_18",
-            "FabricIngress.acl.nop_acl" : "node_18"
+            "FabricIngress.acl.set_next_id_acl" : "node_31",
+            "FabricIngress.acl.punt_to_cpu" : "node_31",
+            "FabricIngress.acl.set_clone_session_id" : "node_31",
+            "FabricIngress.acl.drop" : "node_31",
+            "FabricIngress.acl.nop_acl" : "node_31"
           },
           "default_entry" : {
             "action_id" : 19,
@@ -3995,7 +4734,7 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 9,
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 119,
@@ -4039,7 +4778,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 10,
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 202,
@@ -4073,7 +4812,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 11,
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 236,
@@ -4110,7 +4849,7 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 12,
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 86,
@@ -4133,10 +4872,10 @@
           "direct_meters" : null,
           "action_ids" : [20, 3],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_23",
+          "base_default_next" : "node_36",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_23",
-            "nop" : "node_23"
+            "FabricIngress.next.set_vlan" : "node_36",
+            "nop" : "node_36"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -4147,7 +4886,7 @@
         },
         {
           "name" : "tbl_port_counter31",
-          "id" : 13,
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -4161,14 +4900,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [30],
+          "action_ids" : [37],
           "actions" : ["port_counter31"],
-          "base_default_next" : "node_25",
+          "base_default_next" : "node_38",
           "next_tables" : {
-            "port_counter31" : "node_25"
+            "port_counter31" : "node_38"
           },
           "default_entry" : {
-            "action_id" : 30,
+            "action_id" : 37,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4176,7 +4915,7 @@
         },
         {
           "name" : "tbl_port_counter34",
-          "id" : 14,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -4190,14 +4929,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [31],
+          "action_ids" : [38],
           "actions" : ["port_counter34"],
           "base_default_next" : null,
           "next_tables" : {
             "port_counter34" : null
           },
           "default_entry" : {
-            "action_id" : 31,
+            "action_id" : 38,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4347,7 +5086,7 @@
             }
           },
           "true_next" : "node_11",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_11",
@@ -4425,12 +5164,167 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v4",
-          "false_next" : "FabricIngress.acl.acl"
+          "false_next" : "tbl_acl27"
         },
         {
           "name" : "node_18",
           "id" : 7,
           "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 96,
+            "column" : 12,
+            "source_fragment" : "hdr.gtpu.isValid() && hdr.inner_ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "and",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["gtpu", "$valid$"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["inner_ipv4", "$valid$"]
+                  }
+                }
+              }
+            }
+          },
+          "true_next" : "tbl_acl97",
+          "false_next" : "node_24"
+        },
+        {
+          "name" : "node_20",
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 100,
+            "column" : 16,
+            "source_fragment" : "hdr.inner_tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl101",
+          "false_next" : "node_22"
+        },
+        {
+          "name" : "node_22",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 103,
+            "column" : 23,
+            "source_fragment" : "hdr.inner_udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl104",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_24",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 107,
+            "column" : 19,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl108",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_26",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 111,
+            "column" : 16,
+            "source_fragment" : "hdr.tcp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["tcp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl112",
+          "false_next" : "node_28"
+        },
+        {
+          "name" : "node_28",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/acl.p4",
+            "line" : 114,
+            "column" : 23,
+            "source_fragment" : "hdr.udp.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["udp", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_acl115",
+          "false_next" : "FabricIngress.acl.acl"
+        },
+        {
+          "name" : "node_31",
+          "id" : 13,
+          "source_info" : {
             "filename" : "fabric.p4",
             "line" : 73,
             "column" : 12,
@@ -4458,8 +5352,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_23",
-          "id" : 8,
+          "name" : "node_36",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -4481,11 +5375,11 @@
             }
           },
           "true_next" : "tbl_port_counter31",
-          "false_next" : "node_25"
+          "false_next" : "node_38"
         },
         {
-          "name" : "node_25",
-          "id" : 9,
+          "name" : "node_38",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -4520,11 +5414,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_29",
+      "init_table" : "node_42",
       "tables" : [
         {
           "name" : "tbl_packetio41",
-          "id" : 15,
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -4538,14 +5432,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [37],
+          "action_ids" : [44],
           "actions" : ["packetio41"],
-          "base_default_next" : "node_31",
+          "base_default_next" : "node_44",
           "next_tables" : {
-            "packetio41" : "node_31"
+            "packetio41" : "node_44"
           },
           "default_entry" : {
-            "action_id" : 37,
+            "action_id" : 44,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4553,7 +5447,7 @@
         },
         {
           "name" : "tbl_packetio44",
-          "id" : 16,
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -4567,14 +5461,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [38],
+          "action_ids" : [45],
           "actions" : ["packetio44"],
-          "base_default_next" : "node_33",
+          "base_default_next" : "node_46",
           "next_tables" : {
-            "packetio44" : "node_33"
+            "packetio44" : "node_46"
           },
           "default_entry" : {
-            "action_id" : 38,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4582,7 +5476,7 @@
         },
         {
           "name" : "tbl_next349",
-          "id" : 17,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 349,
@@ -4596,14 +5490,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39],
+          "action_ids" : [46],
           "actions" : ["next349"],
-          "base_default_next" : "node_35",
+          "base_default_next" : "node_48",
           "next_tables" : {
-            "next349" : "node_35"
+            "next349" : "node_48"
           },
           "default_entry" : {
-            "action_id" : 39,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4611,7 +5505,7 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 18,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -4625,14 +5519,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [32],
+          "action_ids" : [39],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 32,
+            "action_id" : 39,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4640,7 +5534,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 19,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 355,
@@ -4654,14 +5548,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [33],
+          "action_ids" : [40],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 33,
+            "action_id" : 40,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4669,7 +5563,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 20,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -4696,16 +5590,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [34, 35, 36],
+          "action_ids" : [41, 42, 43],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
-          "base_default_next" : "node_40",
+          "base_default_next" : "node_53",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_40",
-            "FabricEgress.egress_next.pop_vlan" : "node_40",
-            "FabricEgress.egress_next.drop" : "node_40"
+            "FabricEgress.egress_next.push_vlan" : "node_53",
+            "FabricEgress.egress_next.pop_vlan" : "node_53",
+            "FabricEgress.egress_next.drop" : "node_53"
           },
           "default_entry" : {
-            "action_id" : 36,
+            "action_id" : 43,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4713,7 +5607,7 @@
         },
         {
           "name" : "tbl_next375",
-          "id" : 21,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 375,
@@ -4727,14 +5621,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41],
+          "action_ids" : [48],
           "actions" : ["next375"],
-          "base_default_next" : "node_42",
+          "base_default_next" : "node_55",
           "next_tables" : {
-            "next375" : "node_42"
+            "next375" : "node_55"
           },
           "default_entry" : {
-            "action_id" : 41,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4742,7 +5636,7 @@
         },
         {
           "name" : "tbl_next376",
-          "id" : 22,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -4756,14 +5650,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40],
+          "action_ids" : [47],
           "actions" : ["next376"],
           "base_default_next" : null,
           "next_tables" : {
             "next376" : null
           },
           "default_entry" : {
-            "action_id" : 40,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4771,7 +5665,7 @@
         },
         {
           "name" : "tbl_next379",
-          "id" : 23,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 379,
@@ -4785,14 +5679,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43],
+          "action_ids" : [50],
           "actions" : ["next379"],
-          "base_default_next" : "node_46",
+          "base_default_next" : "node_59",
           "next_tables" : {
-            "next379" : "node_46"
+            "next379" : "node_59"
           },
           "default_entry" : {
-            "action_id" : 43,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4800,7 +5694,7 @@
         },
         {
           "name" : "tbl_next380",
-          "id" : 24,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
@@ -4814,14 +5708,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [42],
+          "action_ids" : [49],
           "actions" : ["next380"],
           "base_default_next" : null,
           "next_tables" : {
             "next380" : null
           },
           "default_entry" : {
-            "action_id" : 42,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4831,8 +5725,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_29",
-          "id" : 10,
+          "name" : "node_42",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -4851,11 +5745,11 @@
             }
           },
           "true_next" : "tbl_packetio41",
-          "false_next" : "node_31"
+          "false_next" : "node_44"
         },
         {
-          "name" : "node_31",
-          "id" : 11,
+          "name" : "node_44",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -4877,11 +5771,11 @@
             }
           },
           "true_next" : "tbl_packetio44",
-          "false_next" : "node_33"
+          "false_next" : "node_46"
         },
         {
-          "name" : "node_33",
-          "id" : 12,
+          "name" : "node_46",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 347,
@@ -4920,11 +5814,11 @@
             }
           },
           "true_next" : "tbl_next349",
-          "false_next" : "node_35"
+          "false_next" : "node_48"
         },
         {
-          "name" : "node_35",
-          "id" : 13,
+          "name" : "node_48",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 352,
@@ -4945,12 +5839,12 @@
               }
             }
           },
-          "true_next" : "node_36",
+          "true_next" : "node_49",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_36",
-          "id" : 14,
+          "name" : "node_49",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 353,
@@ -4972,8 +5866,8 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_40",
-          "id" : 15,
+          "name" : "node_53",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 374,
@@ -4992,11 +5886,11 @@
             }
           },
           "true_next" : "tbl_next375",
-          "false_next" : "node_44"
+          "false_next" : "node_57"
         },
         {
-          "name" : "node_42",
-          "id" : 16,
+          "name" : "node_55",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 376,
@@ -5021,8 +5915,8 @@
           "true_next" : "tbl_next376"
         },
         {
-          "name" : "node_44",
-          "id" : 17,
+          "name" : "node_57",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 378,
@@ -5064,8 +5958,8 @@
           "true_next" : "tbl_next379"
         },
         {
-          "name" : "node_46",
-          "id" : 18,
+          "name" : "node_59",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 380,
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt
index 8bf7d01..dd1645b 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt
@@ -168,70 +168,70 @@
   }
   match_fields {
     id: 2
-    name: "ip_proto"
-    bitwidth: 8
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 3
-    name: "l4_sport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 4
-    name: "l4_dport"
-    bitwidth: 16
-    match_type: TERNARY
-  }
-  match_fields {
-    id: 5
     name: "eth_dst"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 6
+    id: 3
     name: "eth_src"
     bitwidth: 48
     match_type: TERNARY
   }
   match_fields {
-    id: 7
+    id: 4
     name: "vlan_id"
     bitwidth: 12
     match_type: TERNARY
   }
   match_fields {
-    id: 8
+    id: 5
     name: "eth_type"
     bitwidth: 16
     match_type: TERNARY
   }
   match_fields {
-    id: 9
+    id: 6
     name: "ipv4_src"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 10
+    id: 7
     name: "ipv4_dst"
     bitwidth: 32
     match_type: TERNARY
   }
   match_fields {
-    id: 11
+    id: 8
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
     name: "icmp_type"
     bitwidth: 8
     match_type: TERNARY
   }
   match_fields {
-    id: 12
+    id: 10
     name: "icmp_code"
     bitwidth: 8
     match_type: TERNARY
   }
+  match_fields {
+    id: 11
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
   action_refs {
     id: 23623126
   }
diff --git a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricInterpreterTest.java b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricInterpreterTest.java
index 0ad8d02..2ea8b29 100644
--- a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricInterpreterTest.java
+++ b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/FabricInterpreterTest.java
@@ -93,7 +93,7 @@
     }
 
     /**
-     * Map treatment to permit action.
+     * Map empty treatment to permit action.
      */
     @Test
     public void testFilteringTreatmentPermit() throws Exception {
@@ -107,6 +107,40 @@
         assertEquals(expectedAction, mappedAction);
     }
 
+    /**
+     * Map empty treatment and wipeDeferred to permit action.
+     */
+    @Test
+    public void testFilteringTreatmentPermit2() throws Exception {
+        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
+                .wipeDeferred()
+                .build();
+        PiAction mappedAction = interpreter.mapTreatment(treatment,
+                FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN);
+        PiAction expectedAction = PiAction.builder()
+                .withId(FabricConstants.FABRIC_INGRESS_FILTERING_PERMIT)
+                .build();
+
+        assertEquals(expectedAction, mappedAction);
+    }
+
+    /**
+     * Map popVlan to permit action.
+     */
+    @Test
+    public void testFilteringTreatmentPermit3() throws Exception {
+        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
+                .popVlan()
+                .build();
+        PiAction mappedAction = interpreter.mapTreatment(treatment,
+                FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN);
+        PiAction expectedAction = PiAction.builder()
+                .withId(FabricConstants.FABRIC_INGRESS_FILTERING_PERMIT)
+                .build();
+
+        assertEquals(expectedAction, mappedAction);
+    }
+
     /* Forwarding control block */
 
     /**
@@ -124,7 +158,7 @@
     }
 
     /**
-     * Map empty treatment for ACL table.
+     * Map empty treatment to NOP for ACL table.
      */
     @Test
     public void testAclTreatmentEmpty() throws Exception {
@@ -137,6 +171,22 @@
         assertEquals(expectedAction, mappedAction);
     }
 
+    /**
+     * Map wipeDeferred treatment to DROP for ACL table.
+     */
+    @Test
+    public void testAclTreatmentWipeDeferred() throws Exception {
+        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
+                .wipeDeferred()
+                .build();
+        PiAction mappedAction = interpreter.mapTreatment(
+                treatment, FabricConstants.FABRIC_INGRESS_ACL_ACL);
+        PiAction expectedAction = PiAction.builder()
+                .withId(FabricConstants.FABRIC_INGRESS_ACL_DROP)
+                .build();
+        assertEquals(expectedAction, mappedAction);
+    }
+
     /* Next control block */
 
     /**
diff --git a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/FilteringObjectiveTranslatorTest.java b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/FilteringObjectiveTranslatorTest.java
index 24300ea..71e45b1 100644
--- a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/FilteringObjectiveTranslatorTest.java
+++ b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/FilteringObjectiveTranslatorTest.java
@@ -395,6 +395,53 @@
         assertEquals(expectedTranslation, actualTranslation);
     }
 
+    /**
+     * Test no more ports scenario for filtering objective.
+     */
+    @Test
+    public void testNoMorePorts() throws FabricPipelinerException {
+        // Tagged port scenario
+        FilteringObjective filteringObjective = DefaultFilteringObjective.builder()
+                .withKey(Criteria.matchInPort(PORT_1))
+                .addCondition(Criteria.matchEthDst(ROUTER_MAC))
+                .addCondition(Criteria.matchVlanId(VLAN_100))
+                .withPriority(PRIORITY)
+                .fromApp(APP_ID)
+                .withMeta(DefaultTrafficTreatment.builder().wipeDeferred().build())
+                .permit()
+                .add();
+        ObjectiveTranslation actualTranslation = translator.translate(filteringObjective);
+        Collection<FlowRule> expectedFlowRules = Lists.newArrayList();
+        // Ingress port vlan rule
+        expectedFlowRules.add(buildExpectedVlanInPortRule(
+                PORT_1, VLAN_100, null, VlanId.NONE,
+                FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN));
+        // forwarding classifier ipv4
+        expectedFlowRules.addAll(buildExpectedFwdClassifierRule(
+                PORT_1,
+                ROUTER_MAC,
+                null,
+                Ethernet.TYPE_IPV4,
+                FilteringObjectiveTranslator.FWD_IPV4_ROUTING));
+        // forwarding classifier ipv6
+        expectedFlowRules.addAll(buildExpectedFwdClassifierRule(
+                PORT_1,
+                ROUTER_MAC,
+                null,
+                Ethernet.TYPE_IPV6,
+                FilteringObjectiveTranslator.FWD_IPV6_ROUTING));
+        // forwarding classifier mpls
+        expectedFlowRules.addAll(buildExpectedFwdClassifierRule(
+                PORT_1,
+                ROUTER_MAC,
+                null,
+                Ethernet.MPLS_UNICAST,
+                FilteringObjectiveTranslator.FWD_MPLS));
+
+        ObjectiveTranslation expectedTranslation = buildExpectedTranslation(expectedFlowRules);
+        assertEquals(expectedTranslation, actualTranslation);
+    }
+
     /* Utilities */
 
     private void assertError(ObjectiveError error, ObjectiveTranslation actualTranslation) {
diff --git a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/ForwardingObjectiveTranslatorTest.java b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/ForwardingObjectiveTranslatorTest.java
index e005cfd..14253e7 100644
--- a/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/ForwardingObjectiveTranslatorTest.java
+++ b/pipelines/fabric/impl/src/test/java/org/onosproject/pipelines/fabric/impl/behaviour/pipeliner/ForwardingObjectiveTranslatorTest.java
@@ -185,6 +185,96 @@
 
         assertTrue(expectedFlowRule.exactMatch(actualFlowRule));
     }
+/**
+     * Test versatile flag of forwarding objective with acl drop.
+     */
+    @Test
+    public void testAclDrop() {
+        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
+                .wipeDeferred()
+                .build();
+        // ACL 8-tuples like
+        TrafficSelector selector = DefaultTrafficSelector.builder()
+                .matchIPDst(IPV4_UNICAST_ADDR)
+                .build();
+        ForwardingObjective fwd = DefaultForwardingObjective.builder()
+                .withSelector(selector)
+                .withPriority(PRIORITY)
+                .fromApp(APP_ID)
+                .makePermanent()
+                .withFlag(ForwardingObjective.Flag.VERSATILE)
+                .withTreatment(treatment)
+                .add();
+
+        ObjectiveTranslation result = translator.translate(fwd);
+
+        List<FlowRule> flowRulesInstalled = (List<FlowRule>) result.flowRules();
+        List<GroupDescription> groupsInstalled = (List<GroupDescription>) result.groups();
+        assertEquals(1, flowRulesInstalled.size());
+        assertTrue(groupsInstalled.isEmpty());
+
+        FlowRule actualFlowRule = flowRulesInstalled.get(0);
+        PiAction piAction = PiAction.builder()
+                .withId(FabricConstants.FABRIC_INGRESS_ACL_DROP)
+                .build();
+        FlowRule expectedFlowRule = DefaultFlowRule.builder()
+                .forDevice(DEVICE_ID)
+                .forTable(FabricConstants.FABRIC_INGRESS_ACL_ACL)
+                .withPriority(PRIORITY)
+                .makePermanent()
+                .withSelector(selector)
+                .withTreatment(DefaultTrafficTreatment.builder()
+                        .piTableAction(piAction).build())
+                .fromApp(APP_ID)
+                .build();
+
+        assertTrue(expectedFlowRule.exactMatch(actualFlowRule));
+    }
+
+    /**
+     * Test versatile flag of forwarding objective with acl nop.
+     */
+    @Test
+    public void testAclNop() {
+        TrafficTreatment treatment = DefaultTrafficTreatment.builder()
+                .build();
+        // ACL 8-tuples like
+        TrafficSelector selector = DefaultTrafficSelector.builder()
+                .matchIPDst(IPV4_UNICAST_ADDR)
+                .build();
+        ForwardingObjective fwd = DefaultForwardingObjective.builder()
+                .withSelector(selector)
+                .withPriority(PRIORITY)
+                .fromApp(APP_ID)
+                .makePermanent()
+                .withFlag(ForwardingObjective.Flag.VERSATILE)
+                .withTreatment(treatment)
+                .add();
+
+        ObjectiveTranslation result = translator.translate(fwd);
+
+        List<FlowRule> flowRulesInstalled = (List<FlowRule>) result.flowRules();
+        List<GroupDescription> groupsInstalled = (List<GroupDescription>) result.groups();
+        assertEquals(1, flowRulesInstalled.size());
+        assertTrue(groupsInstalled.isEmpty());
+
+        FlowRule actualFlowRule = flowRulesInstalled.get(0);
+        PiAction piAction = PiAction.builder()
+                .withId(FabricConstants.FABRIC_INGRESS_ACL_NOP_ACL)
+                .build();
+        FlowRule expectedFlowRule = DefaultFlowRule.builder()
+                .forDevice(DEVICE_ID)
+                .forTable(FabricConstants.FABRIC_INGRESS_ACL_ACL)
+                .withPriority(PRIORITY)
+                .makePermanent()
+                .withSelector(selector)
+                .withTreatment(DefaultTrafficTreatment.builder()
+                        .piTableAction(piAction).build())
+                .fromApp(APP_ID)
+                .build();
+
+        assertTrue(expectedFlowRule.exactMatch(actualFlowRule));
+    }
 
     /**
      * Test programming L2 unicast rule to bridging table.