Improvement in fabric.p4 and bng.p4

- fabric.p4 now supports double tagged hosts
- bng.p4 now only manages PPPoE termination
- bng_ingress moved at the end of the fabric pipeline

Change-Id: Iff62238fde9ec6ddf7311312a98c041e3ab3aa8d
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
index f1bb185..36d9f25 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
@@ -37,6 +37,8 @@
             PiMatchFieldId.of("ig_port");
     public static final PiMatchFieldId HDR_VLAN_IS_VALID =
             PiMatchFieldId.of("vlan_is_valid");
+    public static final PiMatchFieldId HDR_EG_PORT =
+            PiMatchFieldId.of("eg_port");
     public static final PiMatchFieldId HDR_IPV6_SRC_NET_ID =
             PiMatchFieldId.of("ipv6_src_net_id");
     public static final PiMatchFieldId HDR_C_TAG = PiMatchFieldId.of("c_tag");
@@ -44,6 +46,8 @@
             PiMatchFieldId.of("ipv4_src");
     public static final PiMatchFieldId HDR_IPV6_DST =
             PiMatchFieldId.of("ipv6_dst");
+    public static final PiMatchFieldId HDR_IS_MPLS =
+            PiMatchFieldId.of("is_mpls");
     public static final PiMatchFieldId HDR_L4_DPORT =
             PiMatchFieldId.of("l4_dport");
     public static final PiMatchFieldId HDR_PPPOE_CODE =
@@ -63,8 +67,6 @@
             PiMatchFieldId.of("ipv4_dst");
     public static final PiMatchFieldId HDR_IPV6_TRAFFIC_CLASS =
             PiMatchFieldId.of("ipv6_traffic_class");
-    public static final PiMatchFieldId HDR_IPV6_DST_NET_ID =
-            PiMatchFieldId.of("ipv6_dst_net_id");
     public static final PiMatchFieldId HDR_ETH_TYPE =
             PiMatchFieldId.of("eth_type");
     public static final PiMatchFieldId HDR_NEXT_ID =
@@ -73,6 +75,8 @@
             PiMatchFieldId.of("l4_sport");
     public static final PiMatchFieldId HDR_ICMP_CODE =
             PiMatchFieldId.of("icmp_code");
+    public static final PiMatchFieldId HDR_INNER_VLAN_ID =
+            PiMatchFieldId.of("inner_vlan_id");
     public static final PiMatchFieldId HDR_IPV4_ECN =
             PiMatchFieldId.of("ipv4_ecn");
     public static final PiMatchFieldId HDR_PPPOE_SESSION_ID =
@@ -83,8 +87,10 @@
             PiMatchFieldId.of("line_id");
     public static final PiMatchFieldId HDR_IPV4_DSCP =
             PiMatchFieldId.of("ipv4_dscp");
-    public static final PiMatchFieldId HDR_EG_PORT =
-            PiMatchFieldId.of("eg_port");
+    public static final PiMatchFieldId HDR_IS_IPV4 =
+            PiMatchFieldId.of("is_ipv4");
+    public static final PiMatchFieldId HDR_IS_IPV6 =
+            PiMatchFieldId.of("is_ipv6");
     public static final PiMatchFieldId HDR_GTP_IPV4_DST =
             PiMatchFieldId.of("gtp_ipv4_dst");
     public static final PiMatchFieldId HDR_INT_IS_VALID =
@@ -98,10 +104,10 @@
     // Table IDs
     public static final PiTableId FABRIC_INGRESS_NEXT_HASHED =
             PiTableId.of("FabricIngress.next.hashed");
+    public static final PiTableId FABRIC_INGRESS_BNG_INGRESS_T_LINE_MAP =
+            PiTableId.of("FabricIngress.bng_ingress.t_line_map");
     public static final PiTableId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_TB_INT_INSERT =
             PiTableId.of("FabricEgress.process_int_main.process_int_transit.tb_int_insert");
-    public static final PiTableId FABRIC_EGRESS_BNG_EGRESS_DOWNSTREAM_T_SESSION_ENCAP =
-            PiTableId.of("FabricEgress.bng_egress.downstream.t_session_encap");
     public static final PiTableId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER =
             PiTableId.of("FabricIngress.filtering.fwd_classifier");
     public static final PiTableId FABRIC_INGRESS_NEXT_XCONNECT =
@@ -130,16 +136,12 @@
             PiTableId.of("FabricIngress.bng_ingress.upstream.t_pppoe_term_v4");
     public static final PiTableId FABRIC_INGRESS_SPGW_INGRESS_S1U_FILTER_TABLE =
             PiTableId.of("FabricIngress.spgw_ingress.s1u_filter_table");
-    public static final PiTableId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_T_LINE_MAP_V6 =
-            PiTableId.of("FabricIngress.bng_ingress.downstream.t_line_map_v6");
-    public static final PiTableId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_T_LINE_MAP_V4 =
-            PiTableId.of("FabricIngress.bng_ingress.downstream.t_line_map_v4");
     public static final PiTableId FABRIC_INGRESS_FORWARDING_BRIDGING =
             PiTableId.of("FabricIngress.forwarding.bridging");
-    public static final PiTableId FABRIC_INGRESS_BNG_INGRESS_UPSTREAM_T_LINE_MAP =
-            PiTableId.of("FabricIngress.bng_ingress.upstream.t_line_map");
     public static final PiTableId FABRIC_INGRESS_SPGW_INGRESS_DL_SESS_LOOKUP =
             PiTableId.of("FabricIngress.spgw_ingress.dl_sess_lookup");
+    public static final PiTableId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_T_LINE_SESSION_MAP =
+            PiTableId.of("FabricIngress.bng_ingress.downstream.t_line_session_map");
     public static final PiTableId FABRIC_EGRESS_EGRESS_NEXT_EGRESS_VLAN =
             PiTableId.of("FabricEgress.egress_next.egress_vlan");
     public static final PiTableId FABRIC_INGRESS_PROCESS_SET_SOURCE_SINK_TB_SET_SINK =
@@ -219,6 +221,8 @@
             PiActionId.of("FabricIngress.forwarding.set_next_id_bridging");
     public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_SOURCE_INT_SOURCE_DSCP =
             PiActionId.of("FabricEgress.process_int_main.process_int_source.int_source_dscp");
+    public static final PiActionId FABRIC_INGRESS_NEXT_SET_DOUBLE_VLAN =
+            PiActionId.of("FabricIngress.next.set_double_vlan");
     public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INIT_METADATA =
             PiActionId.of("FabricEgress.process_int_main.process_int_transit.init_metadata");
     public static final PiActionId FABRIC_INGRESS_ACL_DROP =
@@ -227,10 +231,14 @@
             PiActionId.of("FabricIngress.acl.set_clone_session_id");
     public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_UPSTREAM_PUNT_TO_CPU =
             PiActionId.of("FabricIngress.bng_ingress.upstream.punt_to_cpu");
-    public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_UPSTREAM_SET_LINE =
-            PiActionId.of("FabricIngress.bng_ingress.upstream.set_line");
+    public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_DROP =
+            PiActionId.of("FabricIngress.bng_ingress.downstream.drop");
+    public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN =
+            PiActionId.of("FabricIngress.next.set_vlan");
     public static final PiActionId FABRIC_INGRESS_ACL_NOP_ACL =
             PiActionId.of("FabricIngress.acl.nop_acl");
+    public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_SET_LINE =
+            PiActionId.of("FabricIngress.bng_ingress.set_line");
     public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_UPSTREAM_TERM_DISABLED =
             PiActionId.of("FabricIngress.bng_ingress.upstream.term_disabled");
     public static final PiActionId FABRIC_INGRESS_ACL_SET_NEXT_ID_ACL =
@@ -251,8 +259,6 @@
             PiActionId.of("FabricIngress.next.output_hashed");
     public static final PiActionId FABRIC_INGRESS_FORWARDING_POP_MPLS_AND_NEXT =
             PiActionId.of("FabricIngress.forwarding.pop_mpls_and_next");
-    public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_SET_LINE_NEXT =
-            PiActionId.of("FabricIngress.bng_ingress.downstream.set_line_next");
     public static final PiActionId FABRIC_EGRESS_BNG_EGRESS_DOWNSTREAM_ENCAP_V6 =
             PiActionId.of("FabricEgress.bng_egress.downstream.encap_v6");
     public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_SIMPLE =
@@ -261,8 +267,6 @@
             PiActionId.of("FabricIngress.acl.punt_to_cpu");
     public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_QOS_PRIO =
             PiActionId.of("FabricIngress.bng_ingress.downstream.qos_prio");
-    public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN =
-            PiActionId.of("FabricIngress.next.set_vlan");
     public static final PiActionId FABRIC_EGRESS_EGRESS_NEXT_POP_VLAN =
             PiActionId.of("FabricEgress.egress_next.pop_vlan");
     public static final PiActionId FABRIC_INGRESS_PROCESS_SET_SOURCE_SINK_INT_SET_SINK =
@@ -280,21 +284,21 @@
             PiActionId.of("FabricIngress.next.output_simple");
     public static final PiActionId FABRIC_INGRESS_FILTERING_DENY =
             PiActionId.of("FabricIngress.filtering.deny");
+    public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_SET_SESSION =
+            PiActionId.of("FabricIngress.bng_ingress.downstream.set_session");
     public static final PiActionId FABRIC_INGRESS_NEXT_SET_MCAST_GROUP_ID =
             PiActionId.of("FabricIngress.next.set_mcast_group_id");
     public static final PiActionId FABRIC_INGRESS_FILTERING_SET_FORWARDING_TYPE =
             PiActionId.of("FabricIngress.filtering.set_forwarding_type");
-    public static final PiActionId FABRIC_INGRESS_BNG_INGRESS_DOWNSTREAM_SET_LINE_DROP =
-            PiActionId.of("FabricIngress.bng_ingress.downstream.set_line_drop");
     public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_REPORT_DO_REPORT_ENCAPSULATION =
             PiActionId.of("FabricEgress.process_int_main.process_int_report.do_report_encapsulation");
     public static final PiActionId NO_ACTION = PiActionId.of("NoAction");
     public static final PiActionId FABRIC_INGRESS_NEXT_OUTPUT_XCONNECT =
             PiActionId.of("FabricIngress.next.output_xconnect");
     // Action Param IDs
+    public static final PiActionParamId DMAC = PiActionParamId.of("dmac");
     public static final PiActionParamId MON_PORT =
             PiActionParamId.of("mon_port");
-    public static final PiActionParamId C_TAG = PiActionParamId.of("c_tag");
     public static final PiActionParamId S1U_SGW_ADDR =
             PiActionParamId.of("s1u_sgw_addr");
     public static final PiActionParamId SMAC = PiActionParamId.of("smac");
@@ -306,7 +310,8 @@
     public static final PiActionParamId NEXT_ID = PiActionParamId.of("next_id");
     public static final PiActionParamId INS_CNT = PiActionParamId.of("ins_cnt");
     public static final PiActionParamId SRC_MAC = PiActionParamId.of("src_mac");
-    public static final PiActionParamId DMAC = PiActionParamId.of("dmac");
+    public static final PiActionParamId INNER_VLAN_ID =
+            PiActionParamId.of("inner_vlan_id");
     public static final PiActionParamId PPPOE_SESSION_ID =
             PiActionParamId.of("pppoe_session_id");
     public static final PiActionParamId MON_MAC = PiActionParamId.of("mon_mac");
@@ -318,6 +323,8 @@
     public static final PiActionParamId LINE_ID = PiActionParamId.of("line_id");
     public static final PiActionParamId FWD_TYPE =
             PiActionParamId.of("fwd_type");
+    public static final PiActionParamId OUTER_VLAN_ID =
+            PiActionParamId.of("outer_vlan_id");
     public static final PiActionParamId INS_MASK0407 =
             PiActionParamId.of("ins_mask0407");
     public static final PiActionParamId TEID = PiActionParamId.of("teid");
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
index dcd872b..e5e90ed 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
@@ -91,6 +91,7 @@
                     .put(Criterion.Type.ETH_TYPE, FabricConstants.HDR_ETH_TYPE)
                     .put(Criterion.Type.MPLS_LABEL, FabricConstants.HDR_MPLS_LABEL)
                     .put(Criterion.Type.VLAN_VID, FabricConstants.HDR_VLAN_ID)
+                    .put(Criterion.Type.INNER_VLAN_VID, FabricConstants.HDR_INNER_VLAN_ID)
                     .put(Criterion.Type.IPV4_DST, FabricConstants.HDR_IPV4_DST)
                     .put(Criterion.Type.IPV4_SRC, FabricConstants.HDR_IPV4_SRC)
                     .put(Criterion.Type.IPV6_DST, FabricConstants.HDR_IPV6_DST)
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FilteringObjectiveTranslator.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FilteringObjectiveTranslator.java
index 67d7b3a..e86f270 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FilteringObjectiveTranslator.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FilteringObjectiveTranslator.java
@@ -17,6 +17,7 @@
 package org.onosproject.pipelines.fabric.pipeliner;
 
 import com.google.common.collect.Lists;
+import org.onlab.packet.EthType;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
@@ -63,12 +64,6 @@
             .withId(FabricConstants.FABRIC_INGRESS_FILTERING_DENY)
             .build();
 
-    private static final PiCriterion VLAN_VALID = PiCriterion.builder()
-            .matchExact(FabricConstants.HDR_VLAN_IS_VALID, ONE)
-            .build();
-    private static final PiCriterion VLAN_INVALID = PiCriterion.builder()
-            .matchExact(FabricConstants.HDR_VLAN_IS_VALID, ZERO)
-            .build();
 
     FilteringObjectiveTranslator(DeviceId deviceId, FabricCapabilities capabilities) {
         super(deviceId, capabilities);
@@ -88,14 +83,17 @@
         }
 
         final PortCriterion inPort = (PortCriterion) obj.key();
-        final VlanIdCriterion vlan = (VlanIdCriterion) criterion(
+
+        final VlanIdCriterion outerVlan = (VlanIdCriterion) criterion(
                 obj.conditions(), Criterion.Type.VLAN_VID);
+        final VlanIdCriterion innerVlan = (VlanIdCriterion) criterion(
+                obj.conditions(), Criterion.Type.INNER_VLAN_VID);
         final EthCriterion ethDst = (EthCriterion) criterion(
                 obj.conditions(), Criterion.Type.ETH_DST);
         final EthCriterion ethDstMasked = (EthCriterion) criterion(
                 obj.conditions(), Criterion.Type.ETH_DST_MASKED);
 
-        ingressPortVlanRule(obj, inPort, vlan, resultBuilder);
+        ingressPortVlanRule(obj, inPort, outerVlan, innerVlan, resultBuilder);
         fwdClassifierRules(obj, inPort, ethDst, ethDstMasked, resultBuilder);
 
         return resultBuilder.build();
@@ -104,18 +102,28 @@
     private void ingressPortVlanRule(
             FilteringObjective obj,
             Criterion inPortCriterion,
-            VlanIdCriterion vlanCriterion,
+            VlanIdCriterion outerVlanCriterion,
+            VlanIdCriterion innerVlanCriterion,
             ObjectiveTranslation.Builder resultBuilder)
             throws FabricPipelinerException {
 
-        final boolean vlanValid = vlanCriterion != null
-                && !vlanCriterion.vlanId().equals(VlanId.NONE);
+        final boolean outerVlanValid = outerVlanCriterion != null
+                && !outerVlanCriterion.vlanId().equals(VlanId.NONE);
+        final boolean innerVlanValid = innerVlanCriterion != null
+                && !innerVlanCriterion.vlanId().equals(VlanId.NONE);
+
+        final PiCriterion piCriterion = PiCriterion.builder()
+                .matchExact(FabricConstants.HDR_VLAN_IS_VALID, outerVlanValid ? ONE : ZERO)
+                .build();
 
         final TrafficSelector.Builder selector = DefaultTrafficSelector.builder()
                 .add(inPortCriterion)
-                .add(vlanValid ? VLAN_VALID : VLAN_INVALID);
-        if (vlanValid) {
-            selector.add(vlanCriterion);
+                .add(piCriterion);
+        if (outerVlanValid) {
+            selector.add(outerVlanCriterion);
+        }
+        if (innerVlanValid) {
+            selector.add(innerVlanCriterion);
         }
 
         final TrafficTreatment treatment;
@@ -127,7 +135,6 @@
             treatment = obj.meta() == null
                     ? DefaultTrafficTreatment.emptyTreatment() : obj.meta();
         }
-
         resultBuilder.addFlowRule(flowRule(
                 obj, FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN,
                 selector.build(), treatment));
@@ -214,7 +221,7 @@
             throws FabricPipelinerException {
         final TrafficSelector selector = DefaultTrafficSelector.builder()
                 .matchInPort(inPort)
-                .matchEthType(ethType)
+                .matchPi(mapEthTypeFwdClassifier(ethType))
                 .matchEthDstMasked(dstMac, dstMacMask == null
                         ? MacAddress.EXACT_MASK : dstMacMask)
                 .build();
@@ -234,4 +241,38 @@
                 .build();
 
     }
+
+    static PiCriterion mapEthTypeFwdClassifier(short ethType) {
+        // Map the Ethernet type to the validity bits of the fabric pipeline
+        switch (EthType.EtherType.lookup(ethType)) {
+            case IPV4: {
+                return PiCriterion.builder()
+                        .matchExact(FabricConstants.HDR_IS_IPV4, ONE)
+                        .matchExact(FabricConstants.HDR_IS_IPV6, ZERO)
+                        .matchExact(FabricConstants.HDR_IS_MPLS, ZERO)
+                        .build();
+            }
+            case IPV6: {
+                return PiCriterion.builder()
+                        .matchExact(FabricConstants.HDR_IS_IPV4, ZERO)
+                        .matchExact(FabricConstants.HDR_IS_IPV6, ONE)
+                        .matchExact(FabricConstants.HDR_IS_MPLS, ZERO)
+                        .build();
+            }
+            case MPLS_UNICAST: {
+                return PiCriterion.builder()
+                        .matchExact(FabricConstants.HDR_IS_IPV4, ZERO)
+                        .matchExact(FabricConstants.HDR_IS_IPV6, ZERO)
+                        .matchExact(FabricConstants.HDR_IS_MPLS, ONE)
+                        .build();
+            }
+            default: {
+                return PiCriterion.builder()
+                        .matchExact(FabricConstants.HDR_IS_IPV4, ZERO)
+                        .matchExact(FabricConstants.HDR_IS_IPV6, ZERO)
+                        .matchExact(FabricConstants.HDR_IS_MPLS, ZERO)
+                        .build();
+            }
+        }
+    }
 }
diff --git a/pipelines/fabric/src/main/resources/Makefile b/pipelines/fabric/src/main/resources/Makefile
index 32d6a25..fc096ab 100644
--- a/pipelines/fabric/src/main/resources/Makefile
+++ b/pipelines/fabric/src/main/resources/Makefile
@@ -7,7 +7,7 @@
 	@./bmv2-compile.sh "fabric-spgw" "-DWITH_SPGW"
 
 fabric-bng:
-	@./bmv2-compile.sh "fabric-bng" "-DWITH_BNG"
+	@./bmv2-compile.sh "fabric-bng" "-DWITH_BNG -DWITH_DOUBLE_VLAN_TERMINATION -DWITHOUT_XCONNECT"
 
 fabric-int:
 	@./bmv2-compile.sh "fabric-int" "-DWITH_INT_SOURCE -DWITH_INT_TRANSIT"
@@ -18,7 +18,7 @@
 fabric-full:
 	@./bmv2-compile.sh "fabric-full" " -DWITH_MULTICAST -DWITH_IPV6 \
 		-DWITH_SIMPLE_NEXT -DWITH_HASHED_NEXT -DWITH_BNG -DWITH_SPGW \
-		-DWITH_INT_SOURCE -DWITH_INT_TRANSIT -DWITH_INT_SINK"
+		-DWITH_INT_SOURCE -DWITH_INT_TRANSIT -DWITH_INT_SINK -DWITH_DOUBLE_VLAN_TERMINATION"
 
 constants:
 	docker run -v $(ONOS_ROOT):/onos -w /onos/tools/dev/bin \
diff --git a/pipelines/fabric/src/main/resources/fabric.p4 b/pipelines/fabric/src/main/resources/fabric.p4
index fede305..86bd764 100644
--- a/pipelines/fabric/src/main/resources/fabric.p4
+++ b/pipelines/fabric/src/main/resources/fabric.p4
@@ -68,9 +68,6 @@
         spgw_ingress.apply(hdr.gtpu_ipv4, hdr.gtpu_udp, hdr.gtpu,
                            hdr.ipv4, hdr.udp, fabric_metadata, standard_metadata);
 #endif // WITH_SPGW
-#ifdef WITH_BNG
-        bng_ingress.apply(hdr, fabric_metadata, standard_metadata);
-#endif // WITH_BNG
         if (fabric_metadata.skip_forwarding == _FALSE) {
             forwarding.apply(hdr, fabric_metadata, standard_metadata);
         }
@@ -86,6 +83,10 @@
             process_set_source_sink.apply(hdr, fabric_metadata, standard_metadata);
 #endif
         }
+#ifdef WITH_BNG
+        bng_ingress.apply(hdr, fabric_metadata, standard_metadata);
+#endif // WITH_BNG
+
     }
 }
 
diff --git a/pipelines/fabric/src/main/resources/include/bng.p4 b/pipelines/fabric/src/main/resources/include/bng.p4
index 11e4639..ede0001 100644
--- a/pipelines/fabric/src/main/resources/include/bng.p4
+++ b/pipelines/fabric/src/main/resources/include/bng.p4
@@ -26,10 +26,6 @@
 #ifndef __BNG__
 #define __BNG__
 
-#define BNG_MAX_SUBSC 8192
-#define BNG_MAX_NET_PER_SUBSC 4
-#define BNG_MAX_SUBSC_NET BNG_MAX_NET_PER_SUBSC * BNG_MAX_SUBSC
-
 #define BNG_SUBSC_IPV6_NET_PREFIX_LEN 64
 
 control bng_ingress_upstream(
@@ -41,38 +37,11 @@
     counter(BNG_MAX_SUBSC, CounterType.packets) c_dropped;
     counter(BNG_MAX_SUBSC, CounterType.packets) c_control;
 
-    vlan_id_t s_tag = hdr.vlan_tag.vlan_id;
-    vlan_id_t c_tag = hdr.inner_vlan_tag.vlan_id;
-
-    _BOOL drop = _FALSE;
-    // TABLE: t_line_map
-    // Maps double VLAN tags to line ID. Line IDs are used to uniquelly identify
-    // a subscriber.
-
-    action set_line(bit<32> line_id) {
-        fmeta.bng.line_id = line_id;
-    }
-
-    table t_line_map {
-        actions = {
-            @defaultonly nop;
-            set_line;
-        }
-        key = {
-            s_tag: exact @name("s_tag");
-            c_tag: exact @name("c_tag");
-        }
-        size = BNG_MAX_SUBSC;
-        const default_action = nop;
-    }
-
     // TABLE: t_pppoe_cp
     // Punt to CPU for PPPeE control packets.
 
     action punt_to_cpu() {
         smeta.egress_spec = CPU_PORT;
-        fmeta.skip_forwarding = _TRUE;
-        fmeta.skip_next = _TRUE;
         c_control.count(fmeta.bng.line_id);
     }
 
@@ -95,26 +64,24 @@
 
     @hidden
     action term_enabled(bit<16> eth_type) {
-        hdr.ethernet.eth_type = eth_type;
-        fmeta.eth_type = eth_type;
+        hdr.inner_vlan_tag.eth_type = eth_type;
+        fmeta.last_eth_type = eth_type;
         hdr.pppoe.setInvalid();
-        hdr.vlan_tag.setInvalid();
-        hdr.inner_vlan_tag.setInvalid();
         c_terminated.count(fmeta.bng.line_id);
     }
 
     action term_disabled() {
         fmeta.bng.type = BNG_TYPE_INVALID;
-        fmeta.skip_forwarding = _TRUE;
-        fmeta.skip_next = _TRUE;
         mark_to_drop(smeta);
-        drop = _TRUE;
     }
 
     action term_enabled_v4() {
         term_enabled(ETHERTYPE_IPV4);
     }
 
+    // TODO: add match on hdr.ethernet.src_addr for antispoofing
+    // Take into account that MAC src address is modified by the Next control block
+    // when doing routing functionality.
     table t_pppoe_term_v4 {
         key = {
             fmeta.bng.line_id    : exact @name("line_id");
@@ -134,6 +101,9 @@
         term_enabled(ETHERTYPE_IPV6);
     }
 
+    // TODO: add match on hdr.ethernet.src_addr for antispoofing
+    // Match on unmodified metadata field, taking into account that MAC src address
+    // is modified by the Next control block when doing routing functionality.
     table t_pppoe_term_v6 {
         key = {
             fmeta.bng.line_id         : exact @name("line_id");
@@ -150,25 +120,23 @@
 #endif // WITH_IPV6
 
     apply {
-        // If table miss, line_id will be 0 (default metadata value).
-        t_line_map.apply();
-
-        if (t_pppoe_cp.apply().hit) {
+        if(t_pppoe_cp.apply().hit) {
             return;
         }
-
         if (hdr.ipv4.isValid()) {
-            t_pppoe_term_v4.apply();
-            if (drop == _TRUE) {
-                c_dropped.count(fmeta.bng.line_id);
+            switch(t_pppoe_term_v4.apply().action_run) {
+                term_disabled: {
+                    c_dropped.count(fmeta.bng.line_id);
+                }
             }
         }
 #ifdef WITH_IPV6
         else if (hdr.ipv6.isValid()) {
-            t_pppoe_term_v6.apply();
-            if (drop == _TRUE) {
-                c_dropped.count(fmeta.bng.line_id);
-             }
+            switch(t_pppoe_term_v6.apply().action_run) {
+               term_disabled: {
+                   c_dropped.count(fmeta.bng.line_id);
+               }
+           }
         }
 #endif // WITH_IPV6
     }
@@ -184,65 +152,37 @@
     meter(BNG_MAX_SUBSC, MeterType.bytes) m_besteff;
     meter(BNG_MAX_SUBSC, MeterType.bytes) m_prio;
 
-    // Downstream line map tables.
-    // Map IP dest address to line ID and next ID. Setting a next ID here
-    // allows to skip the fabric.p4 forwarding stage later.
-    _BOOL prio = _FALSE;
-
-    @hidden
-    action set_line(bit<32> line_id) {
+    action set_session(bit<16> pppoe_session_id) {
         fmeta.bng.type = BNG_TYPE_DOWNSTREAM;
-        fmeta.bng.line_id = line_id;
-        c_line_rx.count(line_id);
+        fmeta.bng.pppoe_session_id = pppoe_session_id;
+        c_line_rx.count(fmeta.bng.line_id);
     }
 
-    action set_line_next(bit<32> line_id, next_id_t next_id) {
-        set_line(line_id);
-        fmeta.next_id = next_id;
-        fmeta.skip_forwarding = _TRUE;
-    }
-
-    action set_line_drop(bit<32> line_id) {
-        set_line(line_id);
-        fmeta.skip_forwarding = _TRUE;
-        fmeta.skip_next = _TRUE;
+    action drop() {
+        fmeta.bng.type = BNG_TYPE_DOWNSTREAM;
+        c_line_rx.count(fmeta.bng.line_id);
         mark_to_drop(smeta);
     }
 
-    table t_line_map_v4 {
+    table t_line_session_map {
         key = {
-            hdr.ipv4.dst_addr: exact @name("ipv4_dst");
+            fmeta.bng.line_id : exact @name("line_id");
         }
         actions = {
             @defaultonly nop;
-            set_line_next;
-            set_line_drop;
+            set_session;
+            drop;
         }
-        size = BNG_MAX_SUBSC_NET;
+        size = BNG_MAX_SUBSC;
         const default_action = nop;
     }
 
-#ifdef WITH_IPV6
-    table t_line_map_v6 {
-        key = {
-            hdr.ipv6.dst_addr[127:64]: exact @name("ipv6_dst_net_id");
-        }
-        actions = {
-            @defaultonly nop;
-            set_line_next;
-            set_line_drop;
-        }
-        size = BNG_MAX_SUBSC_NET;
-        const default_action = nop;
-    }
-#endif // WITH_IPV6
-
     // Downstream QoS tables.
     // Provide coarse metering before prioritazion in the OLT. By default
     // everything is tagged and metered as best-effort traffic.
 
     action qos_prio() {
-        prio = _TRUE;
+        // no-op
     }
 
     action qos_besteff() {
@@ -281,38 +221,39 @@
 #endif // WITH_IPV6
 
     apply {
+        // We are not sure the pkt is a BNG downstream one, first we need to
+        // verify the line_id matches the one of a subscriber...
+
         // IPv4
-        if (hdr.ipv4.isValid()) {
-            if (t_line_map_v4.apply().hit) {
-                // Apply QoS only to subscriber traffic. This makes sense only
-                // if the downstream ports are used to receive IP traffic NOT
-                // destined to subscribers, e.g. to services in the compute
-                // nodes.
-                t_qos_v4.apply();
-                if (prio == _TRUE) {
-                    m_prio.execute_meter((bit<32>)fmeta.bng.line_id,
-                                          fmeta.bng.ds_meter_result);
-                } else {
-                    m_besteff.execute_meter((bit<32>)fmeta.bng.line_id,
-                                            fmeta.bng.ds_meter_result);
+        if (t_line_session_map.apply().hit) {
+            // Apply QoS only to subscriber traffic. This makes sense only
+            // if the downstream ports are used to receive IP traffic NOT
+            // destined to subscribers, e.g. to services in the compute
+            // nodes.
+            if (hdr.ipv4.isValid()) {
+                switch (t_qos_v4.apply().action_run) {
+                    qos_prio: {
+                        m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result);
+                    }
+                    qos_besteff: {
+                        m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result);
+                    }
                 }
             }
-        }
 #ifdef WITH_IPV6
-        // IPv6
-        else if (hdr.ipv6.isValid()) {
-            if (t_line_map_v6.apply().hit) {
-                t_qos_v6.apply();
-                if (prio == _TRUE) {
-                    m_prio.execute_meter((bit<32>)fmeta.bng.line_id,
-                                          fmeta.bng.ds_meter_result);
-                } else {
-                    m_besteff.execute_meter((bit<32>)fmeta.bng.line_id,
-                                            fmeta.bng.ds_meter_result);
+            // IPv6
+            else if (hdr.ipv6.isValid()) {
+                switch (t_qos_v6.apply().action_run) {
+                    qos_prio: {
+                        m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result);
+                    }
+                    qos_besteff: {
+                        m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result);
+                    }
                 }
             }
-        }
 #endif // WITH_IPV6
+        }
     }
 }
 
@@ -324,52 +265,41 @@
     counter(BNG_MAX_SUBSC, CounterType.packets_and_bytes) c_line_tx;
 
     @hidden
-    action encap(vlan_id_t c_tag, bit<16> pppoe_session_id) {
-        // s_tag (outer VLAN) should be already set via the next_vlan table.
-        // Here we add c_tag (inner VLAN) and PPPoE.
-        hdr.vlan_tag.eth_type = ETHERTYPE_VLAN;
-        hdr.inner_vlan_tag.setValid();
-        hdr.inner_vlan_tag.vlan_id = c_tag;
+    action encap() {
+        // Here we add PPPoE and modify the inner_vlan_tag Ethernet Type.
         hdr.inner_vlan_tag.eth_type = ETHERTYPE_PPPOES;
         hdr.pppoe.setValid();
         hdr.pppoe.version = 4w1;
         hdr.pppoe.type_id = 4w1;
         hdr.pppoe.code = 8w0; // 0 means session stage.
-        hdr.pppoe.session_id = pppoe_session_id;
+        hdr.pppoe.session_id = fmeta.bng.pppoe_session_id;
         c_line_tx.count(fmeta.bng.line_id);
     }
 
-    action encap_v4(vlan_id_t c_tag, bit<16> pppoe_session_id) {
-        encap(c_tag, pppoe_session_id);
+    action encap_v4() {
+        encap();
         hdr.pppoe.length = hdr.ipv4.total_len + 16w2;
         hdr.pppoe.protocol = PPPOE_PROTOCOL_IP4;
     }
 
 #ifdef WITH_IPV6
-    action encap_v6(vlan_id_t c_tag, bit<16> pppoe_session_id) {
-        encap(c_tag, pppoe_session_id);
+    action encap_v6() {
+        encap();
         hdr.pppoe.length = hdr.ipv6.payload_len + 16w42;
         hdr.pppoe.protocol = PPPOE_PROTOCOL_IP6;
     }
 #endif // WITH_IPV6
 
-    table t_session_encap {
-        key = {
-            fmeta.bng.line_id : exact @name("line_id");
-        }
-        actions = {
-            @defaultonly nop;
-            encap_v4;
-#ifdef WITH_IPV6
-            encap_v6;
-#endif // WITH_IPV6
-        }
-        size = BNG_MAX_SUBSC;
-        const default_action = nop();
-    }
-
     apply {
-        t_session_encap.apply();
+        if (hdr.ipv4.isValid()) {
+            encap_v4();
+        }
+#ifdef WITH_IPV6
+        // IPv6
+        else if (hdr.ipv6.isValid()) {
+            encap_v6();
+        }
+#endif // WITH_IPV6
     }
 }
 
@@ -378,20 +308,54 @@
         inout fabric_metadata_t fmeta,
         inout standard_metadata_t smeta) {
 
-    bng_ingress_upstream() upstream;
-    bng_ingress_downstream() downstream;
+        bng_ingress_upstream() upstream;
+        bng_ingress_downstream() downstream;
 
-    apply {
-        if (hdr.pppoe.isValid()) {
-            fmeta.bng.type = BNG_TYPE_UPSTREAM;
-            upstream.apply(hdr, fmeta, smeta);
+        vlan_id_t s_tag = 0;
+        vlan_id_t c_tag = 0;
+
+        // TABLE: t_line_map
+        // Map s_tag and c_tag to a line ID to uniquely identify a subscriber
+
+        action set_line(bit<32> line_id) {
+            fmeta.bng.line_id = line_id;
         }
-        else {
-            // We are not sure the pkt is a BNG downstream one, first we need to
-            // verify the IP dst matches the IP addr of a subscriber...
-            downstream.apply(hdr, fmeta, smeta);
+
+        table t_line_map {
+            key = {
+                s_tag : exact @name("s_tag");
+                c_tag : exact @name("c_tag");
+            }
+             actions = {
+                @defaultonly nop;
+                set_line;
+            }
+            size = BNG_MAX_SUBSC;
+            const default_action = nop;
         }
-    }
+
+        apply {
+            if(hdr.pppoe.isValid()) {
+                s_tag = hdr.vlan_tag.vlan_id;
+                c_tag = hdr.inner_vlan_tag.vlan_id;
+            } else {
+                // We expect the packet to be downstream,
+                // the tags are set by the next stage in the metadata.
+                s_tag = fmeta.vlan_id;
+                c_tag = fmeta.inner_vlan_id;
+            }
+
+            // First map the double VLAN tags to a line ID
+            // If table miss line ID will be 0.
+            t_line_map.apply();
+
+            if (hdr.pppoe.isValid()) {
+                fmeta.bng.type = BNG_TYPE_UPSTREAM;
+                upstream.apply(hdr, fmeta, smeta);
+            } else {
+                downstream.apply(hdr, fmeta, smeta);
+            }
+        }
 }
 
 control bng_egress(
diff --git a/pipelines/fabric/src/main/resources/include/control/acl.p4 b/pipelines/fabric/src/main/resources/include/control/acl.p4
index bf70f15..4c2df67 100644
--- a/pipelines/fabric/src/main/resources/include/control/acl.p4
+++ b/pipelines/fabric/src/main/resources/include/control/acl.p4
@@ -66,7 +66,7 @@
             hdr.ethernet.dst_addr: ternary @name("eth_src"); // 48
             hdr.ethernet.src_addr: ternary @name("eth_dst"); // 48
             hdr.vlan_tag.vlan_id: ternary @name("vlan_id"); // 12
-            fabric_metadata.eth_type: ternary @name("eth_type"); //16
+            fabric_metadata.last_eth_type: 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
diff --git a/pipelines/fabric/src/main/resources/include/control/filtering.p4 b/pipelines/fabric/src/main/resources/include/control/filtering.p4
index cc8e313..a3213e9 100644
--- a/pipelines/fabric/src/main/resources/include/control/filtering.p4
+++ b/pipelines/fabric/src/main/resources/include/control/filtering.p4
@@ -45,14 +45,17 @@
 
     action permit_with_internal_vlan(vlan_id_t vlan_id) {
         fabric_metadata.vlan_id = vlan_id;
-        ingress_port_vlan_counter.count();
+        permit();
     }
 
+    // FIXME: remove the use of ternary match on valid inner VLAN.
+    // Use multi-table approach to remove ternary matching
     table ingress_port_vlan {
         key = {
-            standard_metadata.ingress_port: exact @name("ig_port");
-            hdr.vlan_tag.isValid(): exact @name("vlan_is_valid");
-            hdr.vlan_tag.vlan_id: ternary @name("vlan_id");
+            standard_metadata.ingress_port : exact @name("ig_port");
+            hdr.vlan_tag.isValid()         : exact @name("vlan_is_valid");
+            hdr.vlan_tag.vlan_id           : ternary @name("vlan_id");
+            hdr.inner_vlan_tag.vlan_id     : ternary @name("inner_vlan_id");
         }
         actions = {
             deny();
@@ -86,9 +89,11 @@
 
     table fwd_classifier {
         key = {
-            standard_metadata.ingress_port: exact @name("ig_port");
-            hdr.ethernet.dst_addr: ternary @name("eth_dst");
-            fabric_metadata.eth_type: exact @name("eth_type");
+            standard_metadata.ingress_port : exact @name("ig_port");
+            hdr.ethernet.dst_addr          : ternary @name("eth_dst");
+            fabric_metadata.is_ipv4        : exact @name("is_ipv4");
+            fabric_metadata.is_ipv6        : exact @name("is_ipv6");
+            fabric_metadata.is_mpls        : exact @name("is_mpls");
         }
         actions = {
             set_forwarding_type;
@@ -102,11 +107,17 @@
         // Initialize lookup metadata. Packets without a VLAN header will be
         // treated as belonging to a default VLAN ID (see parser).
         if (hdr.vlan_tag.isValid()) {
-            fabric_metadata.eth_type = hdr.vlan_tag.eth_type;
             fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id;
             fabric_metadata.vlan_pri = hdr.vlan_tag.pri;
             fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi;
         }
+        #ifdef WITH_DOUBLE_VLAN_TERMINATION
+        if (hdr.inner_vlan_tag.isValid()) {
+            fabric_metadata.inner_vlan_id = hdr.inner_vlan_tag.vlan_id;
+            fabric_metadata.inner_vlan_pri = hdr.inner_vlan_tag.pri;
+            fabric_metadata.inner_vlan_cfi = hdr.inner_vlan_tag.cfi;
+        }
+        #endif // WITH_DOUBLE_VLAN_TERMINATION
         if (!hdr.mpls.isValid()) {
             // Packets with a valid MPLS header will have
             // fabric_metadata.mpls_ttl set to the packet's MPLS ttl value (see
@@ -115,6 +126,22 @@
             fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1;
         }
 
+        // Set last_eth_type checking the validity of the L2.5 headers
+        if (hdr.mpls.isValid()) {
+            fabric_metadata.last_eth_type = ETHERTYPE_MPLS;
+        } else {
+            if (hdr.vlan_tag.isValid()) {
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
+                if(hdr.inner_vlan_tag.isValid()) {
+                    fabric_metadata.last_eth_type = hdr.inner_vlan_tag.eth_type;
+                } else
+#endif //  WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
+                    fabric_metadata.last_eth_type = hdr.vlan_tag.eth_type;
+            } else {
+                fabric_metadata.last_eth_type = hdr.ethernet.eth_type;
+            }
+        }
+
         ingress_port_vlan.apply();
         fwd_classifier.apply();
     }
diff --git a/pipelines/fabric/src/main/resources/include/control/next.p4 b/pipelines/fabric/src/main/resources/include/control/next.p4
index 82b61eb..9868339 100644
--- a/pipelines/fabric/src/main/resources/include/control/next.p4
+++ b/pipelines/fabric/src/main/resources/include/control/next.p4
@@ -71,12 +71,23 @@
         next_vlan_counter.count();
     }
 
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
+    action set_double_vlan(vlan_id_t outer_vlan_id, vlan_id_t inner_vlan_id) {
+        set_vlan(outer_vlan_id);
+        fabric_metadata.push_double_vlan = _TRUE;
+        fabric_metadata.inner_vlan_id = inner_vlan_id;
+    }
+#endif // WITH_DOUBLE_VLAN_TERMINATION
+
     table next_vlan {
         key = {
             fabric_metadata.next_id: exact @name("next_id");
         }
         actions = {
             set_vlan;
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
+            set_double_vlan;
+#endif // WITH_DOUBLE_VLAN_TERMINATION
             @defaultonly nop;
         }
         const default_action = nop();
@@ -93,6 +104,7 @@
 
     action output_xconnect(port_num_t port_num) {
         output(port_num);
+        fabric_metadata.last_eth_type = ETHERTYPE_VLAN;
         xconnect_counter.count();
     }
 
@@ -251,7 +263,7 @@
     action pop_mpls_if_present() {
         hdr.mpls.setInvalid();
         // Assuming there's an IP header after the MPLS one.
-        fabric_metadata.eth_type = fabric_metadata.ip_eth_type;
+        fabric_metadata.last_eth_type = fabric_metadata.ip_eth_type;
     }
 
     @hidden
@@ -261,7 +273,7 @@
         hdr.mpls.tc = 3w0;
         hdr.mpls.bos = 1w1; // BOS = TRUE
         hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push.
-        fabric_metadata.eth_type = ETHERTYPE_MPLS;
+        fabric_metadata.last_eth_type = ETHERTYPE_MPLS;
     }
 
     @hidden
@@ -271,11 +283,25 @@
         hdr.vlan_tag.setValid();
         hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi;
         hdr.vlan_tag.pri = fabric_metadata.vlan_pri;
-        hdr.vlan_tag.eth_type = fabric_metadata.eth_type;
+        hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type;
         hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id;
         hdr.ethernet.eth_type = ETHERTYPE_VLAN;
     }
 
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
+    @hidden
+    action push_inner_vlan() {
+        // Then push inner VLAN TAG, rewriting correclty the outer vlan eth_type
+        // and the ethernet eth_type
+        hdr.inner_vlan_tag.setValid();
+        hdr.inner_vlan_tag.cfi = fabric_metadata.inner_vlan_cfi;
+        hdr.inner_vlan_tag.pri = fabric_metadata.inner_vlan_pri;
+        hdr.inner_vlan_tag.vlan_id = fabric_metadata.inner_vlan_id;
+        hdr.inner_vlan_tag.eth_type = fabric_metadata.last_eth_type;
+        hdr.vlan_tag.eth_type = ETHERTYPE_VLAN;
+    }
+#endif // WITH_DOUBLE_VLAN_TERMINATION
+
     /*
      * Egress VLAN Table.
      * Pops the VLAN tag if the pair egress port and VLAN ID is matched.
@@ -283,7 +309,7 @@
     direct_counter(CounterType.packets_and_bytes) egress_vlan_counter;
 
     action pop_vlan() {
-        hdr.ethernet.eth_type = fabric_metadata.eth_type;
+        hdr.ethernet.eth_type = fabric_metadata.last_eth_type;
         hdr.vlan_tag.setInvalid();
         egress_vlan_counter.count();
     }
@@ -314,12 +340,26 @@
             set_mpls();
         }
 
-        if (!egress_vlan.apply().hit) {
-            // Push VLAN tag if not the default one.
-            if (fabric_metadata.vlan_id != DEFAULT_VLAN_ID) {
-                push_vlan();
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
+        if (fabric_metadata.push_double_vlan == _TRUE) {
+            // Double VLAN termination.
+            push_vlan();
+            push_inner_vlan();
+        } else {
+            // If no push double vlan, inner_vlan_tag must be popped
+            hdr.inner_vlan_tag.setInvalid();
+#endif // WITH_DOUBLE_VLAN_TERMINATION
+            // Port-based VLAN tagging (by default all
+            // ports are assumed tagged)
+            if (!egress_vlan.apply().hit) {
+                // Push VLAN tag if not the default one.
+                if (fabric_metadata.vlan_id != DEFAULT_VLAN_ID) {
+                    push_vlan();
+                }
             }
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
         }
+#endif // WITH_DOUBLE_VLAN_TERMINATION
 
         // TTL decrement and check.
         if (hdr.mpls.isValid()) {
diff --git a/pipelines/fabric/src/main/resources/include/header.p4 b/pipelines/fabric/src/main/resources/include/header.p4
index 11204e8..09df685 100644
--- a/pipelines/fabric/src/main/resources/include/header.p4
+++ b/pipelines/fabric/src/main/resources/include/header.p4
@@ -159,17 +159,27 @@
 struct bng_meta_t {
     bit<2>  type; // upstream or downstream
     bit<32> line_id; // subscriber line
+    bit<16> pppoe_session_id;
     bit<32> ds_meter_result; // for downstream metering
 }
 #endif // WITH_BNG
 
 //Custom metadata definition
 struct fabric_metadata_t {
-    bit<16>       eth_type;
+    bit<16>       last_eth_type;
+    _BOOL         is_ipv4;
+    _BOOL         is_ipv6;
+    _BOOL         is_mpls;
     bit<16>       ip_eth_type;
     vlan_id_t     vlan_id;
     bit<3>        vlan_pri;
     bit<1>        vlan_cfi;
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
+    _BOOL         push_double_vlan;
+    vlan_id_t     inner_vlan_id;
+    bit<3>        inner_vlan_pri;
+    bit<1>        inner_vlan_cfi;
+#endif // WITH_DOUBLE_VLAN_TERMINATION
     mpls_label_t  mpls_label;
     bit<8>        mpls_ttl;
     _BOOL         skip_forwarding;
@@ -195,9 +205,9 @@
 struct parsed_headers_t {
     ethernet_t ethernet;
     vlan_tag_t vlan_tag;
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
     vlan_tag_t inner_vlan_tag;
-#endif // WITH_XCONNECT || WITH_BNG
+#endif // WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
 #ifdef WITH_BNG
     pppoe_t pppoe;
 #endif // WITH_BNG
diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index e234676..2d6a1d4 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -40,14 +40,14 @@
 
     state parse_ethernet {
         packet.extract(hdr.ethernet);
-        fabric_metadata.eth_type = hdr.ethernet.eth_type;
+        fabric_metadata.last_eth_type = hdr.ethernet.eth_type;
         fabric_metadata.vlan_id = DEFAULT_VLAN_ID;
         transition select(hdr.ethernet.eth_type){
             ETHERTYPE_VLAN: parse_vlan_tag;
             ETHERTYPE_MPLS: parse_mpls;
-            ETHERTYPE_IPV4: parse_ipv4;
+            ETHERTYPE_IPV4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            ETHERTYPE_IPV6: parse_ipv6;
+            ETHERTYPE_IPV6: pre_parse_ipv6;
 #endif // WITH_IPV6
             default: accept;
         }
@@ -56,25 +56,27 @@
     state parse_vlan_tag {
         packet.extract(hdr.vlan_tag);
         transition select(hdr.vlan_tag.eth_type){
-            ETHERTYPE_IPV4: parse_ipv4;
+            ETHERTYPE_IPV4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            ETHERTYPE_IPV6: parse_ipv6;
+            ETHERTYPE_IPV6: pre_parse_ipv6;
 #endif // WITH_IPV6
             ETHERTYPE_MPLS: parse_mpls;
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
             ETHERTYPE_VLAN: parse_inner_vlan_tag;
+            ETHERTYPE_QINQ: parse_inner_vlan_tag;
+            ETHERTYPE_QINQ_NON_STD: parse_inner_vlan_tag;
 #endif // WITH_XCONNECT
             default: accept;
         }
     }
 
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
     state parse_inner_vlan_tag {
         packet.extract(hdr.inner_vlan_tag);
         transition select(hdr.inner_vlan_tag.eth_type){
-            ETHERTYPE_IPV4: parse_ipv4;
+            ETHERTYPE_IPV4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            ETHERTYPE_IPV6: parse_ipv6;
+            ETHERTYPE_IPV6: pre_parse_ipv6;
 #endif // WITH_IPV6
             ETHERTYPE_MPLS: parse_mpls;
 #ifdef WITH_BNG
@@ -84,16 +86,16 @@
             default: accept;
         }
     }
-#endif // WITH_XCONNECT
+#endif // WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
 
 #ifdef WITH_BNG
     state parse_pppoe {
         packet.extract(hdr.pppoe);
         transition select(hdr.pppoe.protocol) {
             PPPOE_PROTOCOL_MPLS: parse_mpls;
-            PPPOE_PROTOCOL_IP4: parse_ipv4;
+            PPPOE_PROTOCOL_IP4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            PPPOE_PROTOCOL_IP6: parse_ipv6;
+            PPPOE_PROTOCOL_IP6: pre_parse_ipv6;
 #endif // WITH_IPV6
             default: accept;
         }
@@ -102,13 +104,16 @@
 
     state parse_mpls {
         packet.extract(hdr.mpls);
+        fabric_metadata.is_mpls = _TRUE;
         fabric_metadata.mpls_label = hdr.mpls.label;
         fabric_metadata.mpls_ttl = hdr.mpls.ttl;
         // There is only one MPLS label for this fabric.
         // Assume header after MPLS header is IPv4/IPv6
         // Lookup first 4 bits for version
         transition select(packet.lookahead<bit<IP_VER_LENGTH>>()) {
-            //The packet should be either IPv4 or IPv6.
+            // The packet should be either IPv4 or IPv6.
+            // If we have MPLS, go directly to parsing state without
+            // moving to pre_ states, the packet is considered MPLS
             IP_VERSION_4: parse_ipv4;
 #ifdef WITH_IPV6
             IP_VERSION_6: parse_ipv6;
@@ -117,6 +122,11 @@
         }
     }
 
+    // Intermediate state to set is_ipv4
+    state pre_parse_ipv4 {
+        fabric_metadata.is_ipv4 = _TRUE;
+        transition parse_ipv4;
+    }
     state parse_ipv4 {
         packet.extract(hdr.ipv4);
         fabric_metadata.ip_proto = hdr.ipv4.protocol;
@@ -132,6 +142,11 @@
     }
 
 #ifdef WITH_IPV6
+    // Intermediate state to set is_ipv6
+    state pre_parse_ipv6 {
+        fabric_metadata.is_ipv6 = _TRUE;
+        transition parse_ipv6;
+    }
     state parse_ipv6 {
         packet.extract(hdr.ipv6);
         fabric_metadata.ip_proto = hdr.ipv6.next_hdr;
@@ -270,9 +285,9 @@
 #endif // WITH_INT_SINK
         packet.emit(hdr.ethernet);
         packet.emit(hdr.vlan_tag);
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
         packet.emit(hdr.inner_vlan_tag);
-#endif // WITH_XCONNECT
+#endif // WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
 #ifdef WITH_BNG
         packet.emit(hdr.pppoe);
 #endif // WITH_BNG
diff --git a/pipelines/fabric/src/main/resources/include/size.p4 b/pipelines/fabric/src/main/resources/include/size.p4
index 8cd2fcc..2883094 100644
--- a/pipelines/fabric/src/main/resources/include/size.p4
+++ b/pipelines/fabric/src/main/resources/include/size.p4
@@ -2,8 +2,14 @@
 #define __TABLE_SIZE__
 
 // Default sizes when building for BMv2.
-
-#define PORT_VLAN_TABLE_SIZE 1024
+#define BNG_MAX_SUBSC 8192
+#define BNG_MAX_NET_PER_SUBSC 4
+#define BNG_MAX_SUBSC_NET BNG_MAX_NET_PER_SUBSC * BNG_MAX_SUBSC
+#ifdef WITH_BNG
+    #define PORT_VLAN_TABLE_SIZE BNG_MAX_SUBSC
+#else
+    #define PORT_VLAN_TABLE_SIZE 1024
+#endif // WITH_BNG
 #define FWD_CLASSIFIER_TABLE_SIZE 1024
 #define BRIDGING_TABLE_SIZE 1024
 #define MPLS_TABLE_SIZE 1024
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
index 32ed643..911f55f 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
@@ -7,32 +7,40 @@
         ["tmp_0", 4, false],
         ["tmp", 32, false],
         ["tmp_1", 32, false],
-        ["bng_ingress_upstream_drop", 1, false],
+        ["bng_ingress_s_tag", 12, false],
+        ["bng_ingress_c_tag", 12, false],
         ["bng_ingress_upstream_tmp", 1, false],
-        ["bng_ingress_downstream_prio", 1, false],
         ["bng_ingress_downstream_tmp", 1, false],
         ["bng_ingress_upstream_hasReturned", 1, false],
         ["egress_next_tmp", 1, false],
-        ["fabric_metadata_t._eth_type0", 16, false],
-        ["fabric_metadata_t._ip_eth_type1", 16, false],
-        ["fabric_metadata_t._vlan_id2", 12, false],
-        ["fabric_metadata_t._vlan_pri3", 3, false],
-        ["fabric_metadata_t._vlan_cfi4", 1, false],
-        ["fabric_metadata_t._mpls_label5", 20, false],
-        ["fabric_metadata_t._mpls_ttl6", 8, false],
-        ["fabric_metadata_t._skip_forwarding7", 1, false],
-        ["fabric_metadata_t._skip_next8", 1, false],
-        ["fabric_metadata_t._fwd_type9", 3, false],
-        ["fabric_metadata_t._next_id10", 32, false],
-        ["fabric_metadata_t._is_multicast11", 1, false],
-        ["fabric_metadata_t._is_controller_packet_out12", 1, false],
-        ["fabric_metadata_t._ip_proto13", 8, false],
-        ["fabric_metadata_t._l4_sport14", 16, false],
-        ["fabric_metadata_t._l4_dport15", 16, false],
-        ["fabric_metadata_t._bng_type16", 2, false],
-        ["fabric_metadata_t._bng_line_id17", 32, false],
-        ["fabric_metadata_t._bng_ds_meter_result18", 32, false],
-        ["_padding_0", 1, false]
+        ["fabric_metadata_t._last_eth_type0", 16, false],
+        ["fabric_metadata_t._is_ipv41", 1, false],
+        ["fabric_metadata_t._is_ipv62", 1, false],
+        ["fabric_metadata_t._is_mpls3", 1, false],
+        ["fabric_metadata_t._ip_eth_type4", 16, false],
+        ["fabric_metadata_t._vlan_id5", 12, false],
+        ["fabric_metadata_t._vlan_pri6", 3, false],
+        ["fabric_metadata_t._vlan_cfi7", 1, false],
+        ["fabric_metadata_t._push_double_vlan8", 1, false],
+        ["fabric_metadata_t._inner_vlan_id9", 12, false],
+        ["fabric_metadata_t._inner_vlan_pri10", 3, false],
+        ["fabric_metadata_t._inner_vlan_cfi11", 1, false],
+        ["fabric_metadata_t._mpls_label12", 20, false],
+        ["fabric_metadata_t._mpls_ttl13", 8, false],
+        ["fabric_metadata_t._skip_forwarding14", 1, false],
+        ["fabric_metadata_t._skip_next15", 1, false],
+        ["fabric_metadata_t._fwd_type16", 3, false],
+        ["fabric_metadata_t._next_id17", 32, false],
+        ["fabric_metadata_t._is_multicast18", 1, false],
+        ["fabric_metadata_t._is_controller_packet_out19", 1, false],
+        ["fabric_metadata_t._ip_proto20", 8, false],
+        ["fabric_metadata_t._l4_sport21", 16, false],
+        ["fabric_metadata_t._l4_dport22", 16, false],
+        ["fabric_metadata_t._bng_type23", 2, false],
+        ["fabric_metadata_t._bng_line_id24", 32, false],
+        ["fabric_metadata_t._bng_pppoe_session_id25", 16, false],
+        ["fabric_metadata_t._bng_ds_meter_result26", 32, false],
+        ["_padding_0", 7, false]
       ]
     },
     {
@@ -375,7 +383,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+                  "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
                 },
                 {
                   "type" : "field",
@@ -388,7 +396,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                  "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
                 },
                 {
                   "type" : "hexstr",
@@ -415,7 +423,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "value" : "default",
@@ -449,7 +457,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -464,6 +472,18 @@
               "next_state" : "parse_inner_vlan_tag"
             },
             {
+              "type" : "hexstr",
+              "value" : "0x88a8",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x9100",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
               "value" : "default",
               "mask" : null,
               "next_state" : null
@@ -495,7 +515,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -553,7 +573,7 @@
               "type" : "hexstr",
               "value" : "0x0021",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "value" : "default",
@@ -585,7 +605,30 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                  "value" : ["scalars", "fabric_metadata_t._is_mpls3"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
                 },
                 {
                   "type" : "field",
@@ -598,7 +641,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl13"]
                 },
                 {
                   "type" : "field",
@@ -642,12 +685,49 @@
           ]
         },
         {
-          "name" : "parse_ipv4",
+          "name" : "pre_parse_ipv4",
           "id" : 7,
           "parser_ops" : [
             {
               "parameters" : [
                 {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._is_ipv41"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv4"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_ipv4",
+          "id" : 8,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
                   "type" : "regular",
                   "value" : "ipv4"
                 }
@@ -658,7 +738,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto20"]
                 },
                 {
                   "type" : "field",
@@ -671,7 +751,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
                 },
                 {
                   "type" : "hexstr",
@@ -715,7 +795,7 @@
         },
         {
           "name" : "parse_tcp",
-          "id" : 8,
+          "id" : 9,
           "parser_ops" : [
             {
               "parameters" : [
@@ -730,7 +810,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
                 },
                 {
                   "type" : "field",
@@ -743,7 +823,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
                 },
                 {
                   "type" : "field",
@@ -764,7 +844,7 @@
         },
         {
           "name" : "parse_udp",
-          "id" : 9,
+          "id" : 10,
           "parser_ops" : [
             {
               "parameters" : [
@@ -779,7 +859,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
                 },
                 {
                   "type" : "field",
@@ -792,7 +872,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
                 },
                 {
                   "type" : "field",
@@ -818,7 +898,7 @@
         },
         {
           "name" : "parse_icmp",
-          "id" : 10,
+          "id" : 11,
           "parser_ops" : [
             {
               "parameters" : [
@@ -849,7 +929,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 261,
+        "line" : 276,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -862,7 +942,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 184,
+        "line" : 152,
         "column" : 33,
         "source_fragment" : "m_besteff"
       },
@@ -876,7 +956,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 185,
+        "line" : 153,
         "column" : 33,
         "source_fragment" : "m_prio"
       },
@@ -892,7 +972,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 40,
+        "line" : 36,
         "column" : 39,
         "source_fragment" : "c_terminated"
       },
@@ -904,7 +984,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 41,
+        "line" : 37,
         "column" : 39,
         "source_fragment" : "c_dropped"
       },
@@ -916,7 +996,7 @@
       "id" : 2,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 42,
+        "line" : 38,
         "column" : 39,
         "source_fragment" : "c_control"
       },
@@ -928,7 +1008,7 @@
       "id" : 3,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 182,
+        "line" : 150,
         "column" : 49,
         "source_fragment" : "c_line_rx"
       },
@@ -954,7 +1034,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 80,
+        "line" : 83,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -1020,44 +1100,32 @@
       }
     },
     {
-      "name" : "FabricIngress.next.xconnect_counter",
-      "id" : 11,
-      "is_direct" : true,
-      "binding" : "FabricIngress.next.xconnect",
-      "source_info" : {
-        "filename" : "include/control/next.p4",
-        "line" : 92,
-        "column" : 50,
-        "source_fragment" : "xconnect_counter"
-      }
-    },
-    {
       "name" : "FabricIngress.next.hashed_counter",
-      "id" : 12,
+      "id" : 11,
       "is_direct" : true,
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 166,
+        "line" : 178,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
     },
     {
       "name" : "FabricIngress.next.multicast_counter",
-      "id" : 13,
+      "id" : 12,
       "is_direct" : true,
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 210,
+        "line" : 222,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
     },
     {
       "name" : "FabricIngress.port_counters_control.egress_port_counter",
-      "id" : 14,
+      "id" : 13,
       "source_info" : {
         "filename" : "include/control/port_counter.p4",
         "line" : 26,
@@ -1069,7 +1137,7 @@
     },
     {
       "name" : "FabricIngress.port_counters_control.ingress_port_counter",
-      "id" : 15,
+      "id" : 14,
       "source_info" : {
         "filename" : "include/control/port_counter.p4",
         "line" : 27,
@@ -1081,10 +1149,10 @@
     },
     {
       "name" : "FabricEgress.bng_egress.downstream.c_line_tx",
-      "id" : 16,
+      "id" : 15,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 324,
+        "line" : 265,
         "column" : 49,
         "source_fragment" : "c_line_tx"
       },
@@ -1093,12 +1161,12 @@
     },
     {
       "name" : "FabricEgress.egress_next.egress_vlan_counter",
-      "id" : 17,
+      "id" : 16,
       "is_direct" : true,
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 283,
+        "line" : 309,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -1286,45 +1354,8 @@
       "primitives" : []
     },
     {
-      "name" : "nop",
-      "id" : 9,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.set_line",
-      "id" : 10,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 53,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        }
-      ]
-    },
-    {
       "name" : "FabricIngress.bng_ingress.upstream.punt_to_cpu",
-      "id" : 11,
+      "id" : 9,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1341,70 +1372,12 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 73,
+            "line" : 44,
             "column" : 8,
             "source_fragment" : "smeta.egress_spec = 255"
           }
         },
         {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 74,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 75,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
           "op" : "count",
           "parameters" : [
             {
@@ -1413,12 +1386,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 76,
+            "line" : 45,
             "column" : 8,
             "source_fragment" : "c_control.count(fmeta.bng.line_id)"
           }
@@ -1427,7 +1400,7 @@
     },
     {
       "name" : "FabricIngress.bng_ingress.upstream.term_disabled",
-      "id" : 12,
+      "id" : 10,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1435,7 +1408,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type23"]
             },
             {
               "type" : "hexstr",
@@ -1450,64 +1423,6 @@
           }
         },
         {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 108,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 109,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
           "op" : "mark_to_drop",
           "parameters" : [
             {
@@ -1517,45 +1432,16 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 110,
+            "line" : 75,
             "column" : 8,
             "source_fragment" : "mark_to_drop(smeta)"
           }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_drop"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 111,
-            "column" : 8,
-            "source_fragment" : "drop=true"
-          }
         }
       ]
     },
     {
       "name" : "FabricIngress.bng_ingress.upstream.term_enabled_v4",
-      "id" : 13,
+      "id" : 11,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1563,7 +1449,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["ethernet", "eth_type"]
+              "value" : ["inner_vlan_tag", "eth_type"]
             },
             {
               "type" : "hexstr",
@@ -1582,7 +1468,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -1606,42 +1492,12 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 100,
+            "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.setInvalid()"
           }
         },
         {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 101,
-            "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.setInvalid()"
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "inner_vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 102,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
-          }
-        },
-        {
           "op" : "count",
           "parameters" : [
             {
@@ -1650,12 +1506,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 103,
+            "line" : 70,
             "column" : 8,
             "source_fragment" : "c_terminated.count(fmeta.bng.line_id)"
           }
@@ -1663,16 +1519,12 @@
       ]
     },
     {
-      "name" : "FabricIngress.bng_ingress.downstream.set_line_next",
-      "id" : 14,
+      "name" : "FabricIngress.bng_ingress.downstream.set_session",
+      "id" : 12,
       "runtime_data" : [
         {
-          "name" : "line_id",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "next_id",
-          "bitwidth" : 32
+          "name" : "pppoe_session_id",
+          "bitwidth" : 16
         }
       ],
       "primitives" : [
@@ -1681,7 +1533,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type23"]
             },
             {
               "type" : "hexstr",
@@ -1700,7 +1552,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_pppoe_session_id25"]
             },
             {
               "type" : "runtime_data",
@@ -1709,9 +1561,9 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 195,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
+            "line" : 157,
+            "column" : 35,
+            "source_fragment" : "= pppoe_session_id; ..."
           }
         },
         {
@@ -1722,83 +1574,30 @@
               "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
             },
             {
-              "type" : "runtime_data",
-              "value" : 0
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 196,
+            "line" : 158,
             "column" : 8,
-            "source_fragment" : "c_line_rx.count(line_id)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 1
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 201,
-            "column" : 22,
-            "source_fragment" : "= next_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 202,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
+            "source_fragment" : "c_line_rx.count(fmeta.bng.line_id)"
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.bng_ingress.downstream.set_line_drop",
-      "id" : 15,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        }
-      ],
+      "name" : "FabricIngress.bng_ingress.downstream.drop",
+      "id" : 13,
+      "runtime_data" : [],
       "primitives" : [
         {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type23"]
             },
             {
               "type" : "hexstr",
@@ -1813,25 +1612,6 @@
           }
         },
         {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 195,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        },
-        {
           "op" : "count",
           "parameters" : [
             {
@@ -1839,73 +1619,15 @@
               "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
             },
             {
-              "type" : "runtime_data",
-              "value" : 0
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 196,
+            "line" : 163,
             "column" : 8,
-            "source_fragment" : "c_line_rx.count(line_id)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 207,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 208,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
+            "source_fragment" : "c_line_rx.count(fmeta.bng.line_id)"
           }
         },
         {
@@ -1918,7 +1640,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 209,
+            "line" : 164,
             "column" : 8,
             "source_fragment" : "mark_to_drop(smeta)"
           }
@@ -1927,49 +1649,50 @@
     },
     {
       "name" : "FabricIngress.bng_ingress.downstream.qos_prio",
-      "id" : 16,
+      "id" : 14,
       "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.qos_besteff",
+      "id" : 15,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.set_line",
+      "id" : 16,
+      "runtime_data" : [
+        {
+          "name" : "line_id",
+          "bitwidth" : 32
+        }
+      ],
       "primitives" : [
         {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_prio"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 0
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 245,
-            "column" : 8,
-            "source_fragment" : "prio=true"
+            "line" : 321,
+            "column" : 30,
+            "source_fragment" : "= line_id; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.bng_ingress.downstream.qos_besteff",
-      "id" : 17,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
       "name" : "FabricIngress.filtering.deny",
-      "id" : 18,
+      "id" : 17,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1977,7 +1700,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding14"]
             },
             {
               "type" : "expression",
@@ -2006,7 +1729,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next15"]
             },
             {
               "type" : "expression",
@@ -2034,13 +1757,13 @@
     },
     {
       "name" : "FabricIngress.filtering.permit",
-      "id" : 19,
+      "id" : 18,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricIngress.filtering.permit_with_internal_vlan",
-      "id" : 20,
+      "id" : 19,
       "runtime_data" : [
         {
           "name" : "vlan_id",
@@ -2053,7 +1776,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -2071,7 +1794,7 @@
     },
     {
       "name" : "FabricIngress.filtering.set_forwarding_type",
-      "id" : 21,
+      "id" : 20,
       "runtime_data" : [
         {
           "name" : "fwd_type",
@@ -2084,7 +1807,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+              "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
             },
             {
               "type" : "runtime_data",
@@ -2093,7 +1816,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 83,
+            "line" : 86,
             "column" : 33,
             "source_fragment" : "= fwd_type; ..."
           }
@@ -2102,7 +1825,7 @@
     },
     {
       "name" : "FabricIngress.forwarding.set_next_id_bridging",
-      "id" : 22,
+      "id" : 21,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -2115,7 +1838,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -2133,7 +1856,7 @@
     },
     {
       "name" : "FabricIngress.forwarding.pop_mpls_and_next",
-      "id" : 23,
+      "id" : 22,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -2146,7 +1869,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             },
             {
               "type" : "hexstr",
@@ -2165,7 +1888,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -2183,7 +1906,7 @@
     },
     {
       "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
-      "id" : 24,
+      "id" : 23,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -2196,7 +1919,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -2214,13 +1937,13 @@
     },
     {
       "name" : "FabricIngress.forwarding.nop_routing_v4",
-      "id" : 25,
+      "id" : 24,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricIngress.acl.set_next_id_acl",
-      "id" : 26,
+      "id" : 25,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -2233,7 +1956,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -2251,7 +1974,7 @@
     },
     {
       "name" : "FabricIngress.acl.punt_to_cpu",
-      "id" : 27,
+      "id" : 26,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2278,7 +2001,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next15"]
             },
             {
               "type" : "expression",
@@ -2306,7 +2029,7 @@
     },
     {
       "name" : "FabricIngress.acl.set_clone_session_id",
-      "id" : 28,
+      "id" : 27,
       "runtime_data" : [
         {
           "name" : "clone_id",
@@ -2337,7 +2060,7 @@
     },
     {
       "name" : "FabricIngress.acl.drop",
-      "id" : 29,
+      "id" : 28,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2360,7 +2083,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next15"]
             },
             {
               "type" : "expression",
@@ -2388,13 +2111,13 @@
     },
     {
       "name" : "FabricIngress.acl.nop_acl",
-      "id" : 30,
+      "id" : 29,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricIngress.next.set_vlan",
-      "id" : 31,
+      "id" : 30,
       "runtime_data" : [
         {
           "name" : "vlan_id",
@@ -2407,7 +2130,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -2424,7 +2147,90 @@
       ]
     },
     {
-      "name" : "FabricIngress.next.output_xconnect",
+      "name" : "FabricIngress.next.set_double_vlan",
+      "id" : 31,
+      "runtime_data" : [
+        {
+          "name" : "outer_vlan_id",
+          "bitwidth" : 12
+        },
+        {
+          "name" : "inner_vlan_id",
+          "bitwidth" : 12
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 70,
+            "column" : 32,
+            "source_fragment" : "= vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._push_double_vlan8"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 77,
+            "column" : 41,
+            "source_fragment" : "= true; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 1
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 78,
+            "column" : 38,
+            "source_fragment" : "= inner_vlan_id; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.next.output_hashed",
       "id" : 32,
       "runtime_data" : [
         {
@@ -2455,70 +2261,8 @@
       ]
     },
     {
-      "name" : "FabricIngress.next.set_next_id_xconnect",
-      "id" : 33,
-      "runtime_data" : [
-        {
-          "name" : "next_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 100,
-            "column" : 32,
-            "source_fragment" : "= next_id; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.next.output_hashed",
-      "id" : 34,
-      "runtime_data" : [
-        {
-          "name" : "port_num",
-          "bitwidth" : 9
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "egress_spec"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 31,
-            "column" : 5,
-            "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
-          }
-        }
-      ]
-    },
-    {
       "name" : "FabricIngress.next.routing_hashed",
-      "id" : 35,
+      "id" : 33,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -2595,7 +2339,7 @@
     },
     {
       "name" : "FabricIngress.next.mpls_routing_hashed",
-      "id" : 36,
+      "id" : 34,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -2620,7 +2364,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             },
             {
               "type" : "runtime_data",
@@ -2695,7 +2439,7 @@
     },
     {
       "name" : "FabricIngress.next.set_mcast_group_id",
-      "id" : 37,
+      "id" : 35,
       "runtime_data" : [
         {
           "name" : "group_id",
@@ -2717,7 +2461,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 213,
+            "line" : 225,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -2727,7 +2471,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+              "value" : ["scalars", "fabric_metadata_t._is_multicast18"]
             },
             {
               "type" : "expression",
@@ -2746,7 +2490,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 214,
+            "line" : 226,
             "column" : 37,
             "source_fragment" : "= true; ..."
           }
@@ -2755,7 +2499,7 @@
     },
     {
       "name" : "act",
-      "id" : 38,
+      "id" : 36,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2797,7 +2541,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out19"]
             },
             {
               "type" : "expression",
@@ -2835,7 +2579,7 @@
     },
     {
       "name" : "act_0",
-      "id" : 39,
+      "id" : 37,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2843,26 +2587,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "field",
@@ -2871,7 +2596,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 106,
+            "line" : 110,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
@@ -2881,7 +2606,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             },
             {
               "type" : "field",
@@ -2890,7 +2615,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 107,
+            "line" : 111,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
@@ -2900,7 +2625,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             },
             {
               "type" : "field",
@@ -2909,7 +2634,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 112,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
@@ -2918,7 +2643,7 @@
     },
     {
       "name" : "act_1",
-      "id" : 40,
+      "id" : 38,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2926,7 +2651,71 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "vlan_id"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 116,
+            "column" : 42,
+            "source_fragment" : "= hdr.inner_vlan_tag.vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_pri10"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "pri"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 117,
+            "column" : 43,
+            "source_fragment" : "= hdr.inner_vlan_tag.pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_cfi11"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "cfi"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 118,
+            "column" : 43,
+            "source_fragment" : "= hdr.inner_vlan_tag.cfi; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_2",
+      "id" : 39,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl13"]
             },
             {
               "type" : "hexstr",
@@ -2935,7 +2724,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
@@ -2943,7 +2732,33 @@
       ]
     },
     {
-      "name" : "act_2",
+      "name" : "act_3",
+      "id" : 40,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8847"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 108,
+            "column" : 31,
+            "source_fragment" : "0x8847; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_4",
       "id" : 41,
       "runtime_data" : [],
       "primitives" : [
@@ -2952,76 +2767,24 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "hexstr",
-              "value" : "0x01"
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 156,
-            "column" : 37,
-            "source_fragment" : "2w0x1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_drop"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 47,
-            "column" : 4,
-            "source_fragment" : "bool drop = false;"
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "= hdr.inner_vlan_tag.eth_type; ..."
           }
         }
       ]
     },
     {
-      "name" : "act_3",
+      "name" : "act_5",
       "id" : 42,
       "runtime_data" : [],
       "primitives" : [
@@ -3030,28 +2793,24 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_tmp"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+          }
         }
       ]
     },
     {
-      "name" : "act_4",
+      "name" : "act_6",
       "id" : 43,
       "runtime_data" : [],
       "primitives" : [
@@ -3060,247 +2819,25 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_5",
-      "id" : 44,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 157,
-            "column" : 12,
-            "source_fragment" : "return"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_6",
-      "id" : 45,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.upstream.c_dropped"
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
+              "value" : ["ethernet", "eth_type"]
             }
           ],
           "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 163,
-            "column" : 16,
-            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "= hdr.ethernet.eth_type; ..."
           }
         }
       ]
     },
     {
       "name" : "act_7",
-      "id" : 46,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_8",
-      "id" : 47,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_9",
-      "id" : 48,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "execute_meter",
-          "parameters" : [
-            {
-              "type" : "meter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.m_prio"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result18"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 293,
-            "column" : 20,
-            "source_fragment" : "m_prio.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_10",
-      "id" : 49,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "execute_meter",
-          "parameters" : [
-            {
-              "type" : "meter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.m_besteff"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result18"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 296,
-            "column" : 20,
-            "source_fragment" : "m_besteff.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_11",
-      "id" : 50,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_prio"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 190,
-            "column" : 4,
-            "source_fragment" : "bool prio = false;"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_12",
-      "id" : 51,
+      "id" : 44,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3357,8 +2894,8 @@
       ]
     },
     {
-      "name" : "act_13",
-      "id" : 52,
+      "name" : "act_8",
+      "id" : 45,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3415,63 +2952,27 @@
       ]
     },
     {
-      "name" : "nop",
-      "id" : 53,
+      "name" : "act_9",
+      "id" : 46,
       "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 54,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "FabricEgress.bng_egress.downstream.encap_v4",
-      "id" : 55,
-      "runtime_data" : [
-        {
-          "name" : "c_tag",
-          "bitwidth" : 12
-        },
-        {
-          "name" : "pppoe_session_id",
-          "bitwidth" : 16
-        }
-      ],
       "primitives" : [
         {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
+              "value" : ["scalars", "bng_ingress_s_tag"]
             },
             {
-              "type" : "hexstr",
-              "value" : "0x8100"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 107,
-            "column" : 31,
-            "source_fragment" : "0x8100; ..."
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "inner_vlan_tag"
+              "type" : "field",
+              "value" : ["vlan_tag", "vlan_id"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 331,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.setValid()"
+            "line" : 339,
+            "column" : 16,
+            "source_fragment" : "s_tag = hdr.vlan_tag.vlan_id"
           }
         },
         {
@@ -3479,18 +2980,44 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["inner_vlan_tag", "vlan_id"]
+              "value" : ["scalars", "bng_ingress_c_tag"]
             },
             {
-              "type" : "runtime_data",
-              "value" : 0
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "vlan_id"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 332,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.vlan_id = c_tag; ..."
+            "line" : 340,
+            "column" : 16,
+            "source_fragment" : "c_tag = hdr.inner_vlan_tag.vlan_id"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_10",
+      "id" : 47,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_s_tag"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 344,
+            "column" : 16,
+            "source_fragment" : "s_tag = fmeta.vlan_id; ..."
           }
         },
         {
@@ -3498,6 +3025,329 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "bng_ingress_c_tag"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 345,
+            "column" : 16,
+            "source_fragment" : "c_tag = fmeta.inner_vlan_id; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_11",
+      "id" : 48,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_12",
+      "id" : 49,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_13",
+      "id" : 50,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_type23"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../header.p4",
+            "line" : 156,
+            "column" : 37,
+            "source_fragment" : "2w0x1; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_14",
+      "id" : 51,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 124,
+            "column" : 12,
+            "source_fragment" : "return"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_15",
+      "id" : 52,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.upstream.c_dropped"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 129,
+            "column" : 20,
+            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_16",
+      "id" : 53,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_downstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_17",
+      "id" : 54,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_downstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_18",
+      "id" : 55,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "execute_meter",
+          "parameters" : [
+            {
+              "type" : "meter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.m_prio"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result26"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 236,
+            "column" : 24,
+            "source_fragment" : "m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_19",
+      "id" : 56,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "execute_meter",
+          "parameters" : [
+            {
+              "type" : "meter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.m_besteff"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result26"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 239,
+            "column" : 24,
+            "source_fragment" : "m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "nop",
+      "id" : 57,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.bng_egress.downstream.encap_v4",
+      "id" : 58,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["inner_vlan_tag", "eth_type"]
             },
             {
@@ -3522,7 +3372,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 334,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.setValid()"
           }
@@ -3541,7 +3391,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 335,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.version = 4w1"
           }
@@ -3560,7 +3410,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 336,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.type_id = 4w1"
           }
@@ -3579,7 +3429,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 337,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.code = 8w0"
           }
@@ -3592,15 +3442,15 @@
               "value" : ["pppoe", "session_id"]
             },
             {
-              "type" : "runtime_data",
-              "value" : 1
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_pppoe_session_id25"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 338,
+            "line" : 275,
             "column" : 8,
-            "source_fragment" : "hdr.pppoe.session_id = pppoe_session_id; ..."
+            "source_fragment" : "hdr.pppoe.session_id = fmeta.bng.pppoe_session_id; ..."
           }
         },
         {
@@ -3612,12 +3462,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id24"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 339,
+            "line" : 276,
             "column" : 8,
             "source_fragment" : "c_line_tx.count(fmeta.bng.line_id)"
           }
@@ -3659,7 +3509,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 344,
+            "line" : 281,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.length = hdr.ipv4.total_len + 16w2"
           }
@@ -3687,7 +3537,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 56,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3700,7 +3550,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 252,
+            "line" : 264,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -3710,17 +3560,17 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+              "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 254,
-            "column" : 33,
+            "line" : 266,
+            "column" : 38,
             "source_fragment" : "= fabric_metadata.ip_eth_type; ..."
           }
         }
@@ -3728,7 +3578,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 57,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3741,7 +3591,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 259,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -3755,12 +3605,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 260,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
@@ -3779,7 +3629,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 261,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -3798,7 +3648,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 262,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -3812,12 +3662,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl13"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 263,
+            "line" : 275,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
@@ -3827,7 +3677,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -3845,7 +3695,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 58,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3858,7 +3708,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 271,
+            "line" : 283,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -3872,12 +3722,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 272,
+            "line" : 284,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -3891,12 +3741,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 285,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -3910,14 +3760,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 286,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -3929,12 +3779,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 287,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -3961,8 +3811,242 @@
       ]
     },
     {
+      "name" : "FabricEgress.egress_next.push_vlan",
+      "id" : 62,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 283,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "cfi"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 284,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "pri"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 285,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 286,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "vlan_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 287,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.egress_next.push_inner_vlan",
+      "id" : 63,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "inner_vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 296,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "cfi"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_cfi11"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 297,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.cfi = fabric_metadata.inner_vlan_cfi; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "pri"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_pri10"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 298,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.pri = fabric_metadata.inner_vlan_pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "vlan_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 299,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.vlan_id = fabric_metadata.inner_vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 300,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
+        }
+      ]
+    },
+    {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 59,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3974,14 +4058,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 312,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -3994,7 +4078,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -4002,8 +4086,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 60,
+      "name" : "act_20",
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4019,8 +4103,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 61,
+      "name" : "act_21",
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4070,8 +4154,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 62,
+      "name" : "act_22",
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4084,7 +4168,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4092,8 +4176,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 63,
+      "name" : "act_23",
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4122,8 +4206,8 @@
       ]
     },
     {
-      "name" : "act_18",
-      "id" : 64,
+      "name" : "act_24",
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4152,8 +4236,30 @@
       ]
     },
     {
-      "name" : "act_19",
-      "id" : 65,
+      "name" : "act_25",
+      "id" : 70,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "remove_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "inner_vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 350,
+            "column" : 12,
+            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_26",
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4166,7 +4272,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4174,8 +4280,8 @@
       ]
     },
     {
-      "name" : "act_20",
-      "id" : 66,
+      "name" : "act_27",
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4215,7 +4321,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -4223,8 +4329,8 @@
       ]
     },
     {
-      "name" : "act_21",
-      "id" : 67,
+      "name" : "act_28",
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4237,7 +4343,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4245,8 +4351,8 @@
       ]
     },
     {
-      "name" : "act_22",
-      "id" : 68,
+      "name" : "act_29",
+      "id" : 74,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4286,7 +4392,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -4322,14 +4428,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [38],
+          "action_ids" : [36],
           "actions" : ["act"],
           "base_default_next" : "node_4",
           "next_tables" : {
             "act" : "node_4"
           },
           "default_entry" : {
-            "action_id" : 38,
+            "action_id" : 36,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4340,9 +4446,9 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+            "line" : 110,
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -4351,14 +4457,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39],
+          "action_ids" : [37],
           "actions" : ["act_0"],
           "base_default_next" : "node_6",
           "next_tables" : {
             "act_0" : "node_6"
           },
           "default_entry" : {
-            "action_id" : 39,
+            "action_id" : 37,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4369,7 +4475,36 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 116,
+            "column" : 42,
+            "source_fragment" : "= hdr.inner_vlan_tag.vlan_id; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [38],
+          "actions" : ["act_1"],
+          "base_default_next" : "node_8",
+          "next_tables" : {
+            "act_1" : "node_8"
+          },
+          "default_entry" : {
+            "action_id" : 38,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_2",
+          "id" : 3,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -4380,11 +4515,40 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
+          "action_ids" : [39],
+          "actions" : ["act_2"],
+          "base_default_next" : "node_10",
+          "next_tables" : {
+            "act_2" : "node_10"
+          },
+          "default_entry" : {
+            "action_id" : 39,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_3",
+          "id" : 4,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 131,
+            "column" : 42,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
           "action_ids" : [40],
-          "actions" : ["act_1"],
+          "actions" : ["act_3"],
           "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
           "next_tables" : {
-            "act_1" : "FabricIngress.filtering.ingress_port_vlan"
+            "act_3" : "FabricIngress.filtering.ingress_port_vlan"
           },
           "default_entry" : {
             "action_id" : 40,
@@ -4394,11 +4558,98 @@
           }
         },
         {
-          "name" : "FabricIngress.filtering.ingress_port_vlan",
-          "id" : 3,
+          "name" : "tbl_act_4",
+          "id" : 5,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 51,
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [41],
+          "actions" : ["act_4"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_4" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 41,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_5",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [42],
+          "actions" : ["act_5"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_5" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 42,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_6",
+          "id" : 7,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [43],
+          "actions" : ["act_6"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_6" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 43,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 53,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -4420,15 +4671,21 @@
               "name" : "vlan_id",
               "target" : ["vlan_tag", "vlan_id"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "inner_vlan_id",
+              "target" : ["inner_vlan_tag", "vlan_id"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
           "type" : "simple",
-          "max_size" : 1024,
+          "max_size" : 8192,
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [18, 19, 20],
+          "action_ids" : [17, 18, 19],
           "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
           "base_default_next" : "FabricIngress.filtering.fwd_classifier",
           "next_tables" : {
@@ -4437,7 +4694,7 @@
             "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
           },
           "default_entry" : {
-            "action_id" : 18,
+            "action_id" : 17,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4445,10 +4702,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 4,
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 87,
+            "line" : 90,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -4467,8 +4724,20 @@
             },
             {
               "match_type" : "exact",
-              "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "name" : "is_ipv4",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv41"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_ipv6",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv62"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_mpls",
+              "target" : ["scalars", "fabric_metadata_t._is_mpls3"],
               "mask" : null
             }
           ],
@@ -4478,515 +4747,22 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [21],
+          "action_ids" : [20],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "node_10",
+          "base_default_next" : "node_19",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "node_10"
+            "FabricIngress.filtering.set_forwarding_type" : "node_19"
           },
           "default_entry" : {
-            "action_id" : 21,
+            "action_id" : 20,
             "action_const" : true,
             "action_data" : ["0x0"],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_2",
-          "id" : 5,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 47,
-            "column" : 4,
-            "source_fragment" : "bool drop = false; ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [41],
-          "actions" : ["act_2"],
-          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_line_map",
-          "next_tables" : {
-            "act_2" : "FabricIngress.bng_ingress.upstream.t_line_map"
-          },
-          "default_entry" : {
-            "action_id" : 41,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_line_map",
-          "id" : 6,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 56,
-            "column" : 10,
-            "source_fragment" : "t_line_map"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "s_tag",
-              "target" : ["vlan_tag", "vlan_id"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "c_tag",
-              "target" : ["inner_vlan_tag", "vlan_id"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 8192,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [0, 10],
-          "actions" : ["nop", "FabricIngress.bng_ingress.upstream.set_line"],
-          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "next_tables" : {
-            "nop" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-            "FabricIngress.bng_ingress.upstream.set_line" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
-          },
-          "default_entry" : {
-            "action_id" : 0,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "id" : 7,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 79,
-            "column" : 10,
-            "source_fragment" : "t_pppoe_cp"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "pppoe_code",
-              "target" : ["pppoe", "code"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "pppoe_protocol",
-              "target" : ["pppoe", "protocol"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "ternary",
-          "type" : "simple",
-          "max_size" : 16,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [11, 1],
-          "actions" : ["FabricIngress.bng_ingress.upstream.punt_to_cpu", "nop"],
-          "base_default_next" : null,
-          "next_tables" : {
-            "__HIT__" : "tbl_act_3",
-            "__MISS__" : "tbl_act_4"
-          },
-          "default_entry" : {
-            "action_id" : 1,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_3",
-          "id" : 8,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [42],
-          "actions" : ["act_3"],
-          "base_default_next" : "node_16",
-          "next_tables" : {
-            "act_3" : "node_16"
-          },
-          "default_entry" : {
-            "action_id" : 42,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_4",
-          "id" : 9,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [43],
-          "actions" : ["act_4"],
-          "base_default_next" : "node_16",
-          "next_tables" : {
-            "act_4" : "node_16"
-          },
-          "default_entry" : {
-            "action_id" : 43,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_5",
-          "id" : 10,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 157,
-            "column" : 12,
-            "source_fragment" : "return"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [44],
-          "actions" : ["act_5"],
-          "base_default_next" : "node_18",
-          "next_tables" : {
-            "act_5" : "node_18"
-          },
-          "default_entry" : {
-            "action_id" : 44,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "id" : 11,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 118,
-            "column" : 10,
-            "source_fragment" : "t_pppoe_term_v4"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id17"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "pppoe_session_id",
-              "target" : ["pppoe", "session_id"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 32768,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [13, 12],
-          "actions" : ["FabricIngress.bng_ingress.upstream.term_enabled_v4", "FabricIngress.bng_ingress.upstream.term_disabled"],
-          "base_default_next" : "node_21",
-          "next_tables" : {
-            "FabricIngress.bng_ingress.upstream.term_enabled_v4" : "node_21",
-            "FabricIngress.bng_ingress.upstream.term_disabled" : "node_21"
-          },
-          "default_entry" : {
-            "action_id" : 12,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_6",
-          "id" : 12,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 163,
-            "column" : 16,
-            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [45],
-          "actions" : ["act_6"],
-          "base_default_next" : "node_33",
-          "next_tables" : {
-            "act_6" : "node_33"
-          },
-          "default_entry" : {
-            "action_id" : 45,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_7",
-          "id" : 13,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 190,
-            "column" : 4,
-            "source_fragment" : "bool prio = false;"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [50],
-          "actions" : ["act_11"],
-          "base_default_next" : "node_24",
-          "next_tables" : {
-            "act_11" : "node_24"
-          },
-          "default_entry" : {
-            "action_id" : 50,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.downstream.t_line_map_v4",
-          "id" : 14,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 212,
-            "column" : 10,
-            "source_fragment" : "t_line_map_v4"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 32768,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [2, 14, 15],
-          "actions" : ["nop", "FabricIngress.bng_ingress.downstream.set_line_next", "FabricIngress.bng_ingress.downstream.set_line_drop"],
-          "base_default_next" : null,
-          "next_tables" : {
-            "__HIT__" : "tbl_act_8",
-            "__MISS__" : "tbl_act_9"
-          },
-          "default_entry" : {
-            "action_id" : 2,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_8",
-          "id" : 15,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [46],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_28",
-          "next_tables" : {
-            "act_7" : "node_28"
-          },
-          "default_entry" : {
-            "action_id" : 46,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_9",
-          "id" : 16,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [47],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_28",
-          "next_tables" : {
-            "act_8" : "node_28"
-          },
-          "default_entry" : {
-            "action_id" : 47,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "id" : 17,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 252,
-            "column" : 10,
-            "source_fragment" : "t_qos_v4"
-          },
-          "key" : [
-            {
-              "match_type" : "ternary",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id17"],
-              "mask" : null
-            },
-            {
-              "match_type" : "lpm",
-              "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "ipv4_dscp",
-              "target" : ["ipv4", "dscp"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "ipv4_ecn",
-              "target" : ["ipv4", "ecn"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "ternary",
-          "type" : "simple",
-          "max_size" : 256,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [16, 17],
-          "actions" : ["FabricIngress.bng_ingress.downstream.qos_prio", "FabricIngress.bng_ingress.downstream.qos_besteff"],
-          "base_default_next" : "node_30",
-          "next_tables" : {
-            "FabricIngress.bng_ingress.downstream.qos_prio" : "node_30",
-            "FabricIngress.bng_ingress.downstream.qos_besteff" : "node_30"
-          },
-          "default_entry" : {
-            "action_id" : 17,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_10",
-          "id" : 18,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 293,
-            "column" : 20,
-            "source_fragment" : "m_prio.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [48],
-          "actions" : ["act_9"],
-          "base_default_next" : "node_33",
-          "next_tables" : {
-            "act_9" : "node_33"
-          },
-          "default_entry" : {
-            "action_id" : 48,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_11",
-          "id" : 19,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 296,
-            "column" : 20,
-            "source_fragment" : "m_besteff.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [49],
-          "actions" : ["act_10"],
-          "base_default_next" : "node_33",
-          "next_tables" : {
-            "act_10" : "node_33"
-          },
-          "default_entry" : {
-            "action_id" : 49,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 20,
+          "id" : 10,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 46,
@@ -4997,7 +4773,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -5013,7 +4789,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [22, 3],
+          "action_ids" : [21, 3],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -5029,7 +4805,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 21,
+          "id" : 11,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 71,
@@ -5040,7 +4816,7 @@
             {
               "match_type" : "exact",
               "name" : "mpls_label",
-              "target" : ["scalars", "fabric_metadata_t._mpls_label5"],
+              "target" : ["scalars", "fabric_metadata_t._mpls_label12"],
               "mask" : null
             }
           ],
@@ -5050,7 +4826,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [23, 4],
+          "action_ids" : [22, 4],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -5066,7 +4842,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v4",
-          "id" : 22,
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 101,
@@ -5087,7 +4863,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [24, 25, 5],
+          "action_ids" : [23, 24, 5],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -5104,7 +4880,7 @@
         },
         {
           "name" : "FabricIngress.acl.acl",
-          "id" : 23,
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 60,
@@ -5121,19 +4897,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t._ip_proto13"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto20"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport21"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport22"],
               "mask" : null
             },
             {
@@ -5157,7 +4933,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "target" : ["scalars", "fabric_metadata_t._last_eth_type0"],
               "mask" : null
             },
             {
@@ -5191,62 +4967,18 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [26, 27, 28, 29, 30],
+          "action_ids" : [25, 26, 27, 28, 29],
           "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_41",
+          "base_default_next" : "node_27",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_41",
-            "FabricIngress.acl.punt_to_cpu" : "node_41",
-            "FabricIngress.acl.set_clone_session_id" : "node_41",
-            "FabricIngress.acl.drop" : "node_41",
-            "FabricIngress.acl.nop_acl" : "node_41"
+            "FabricIngress.acl.set_next_id_acl" : "node_27",
+            "FabricIngress.acl.punt_to_cpu" : "node_27",
+            "FabricIngress.acl.set_clone_session_id" : "node_27",
+            "FabricIngress.acl.drop" : "node_27",
+            "FabricIngress.acl.nop_acl" : "node_27"
           },
           "default_entry" : {
-            "action_id" : 30,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.next.xconnect",
-          "id" : 24,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 104,
-            "column" : 10,
-            "source_fragment" : "xconnect"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "ig_port",
-              "target" : ["standard_metadata", "ingress_port"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : true,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [32, 33, 7],
-          "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
-          "base_default_next" : "FabricIngress.next.hashed",
-          "next_tables" : {
-            "FabricIngress.next.output_xconnect" : "FabricIngress.next.hashed",
-            "FabricIngress.next.set_next_id_xconnect" : "FabricIngress.next.hashed",
-            "nop" : "FabricIngress.next.hashed"
-          },
-          "default_entry" : {
-            "action_id" : 7,
+            "action_id" : 29,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5254,10 +4986,10 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 25,
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 184,
+            "line" : 196,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -5265,7 +4997,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -5276,7 +5008,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [34, 35, 36, 8],
+          "action_ids" : [32, 33, 34, 7],
           "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
           "base_default_next" : "FabricIngress.next.multicast",
           "next_tables" : {
@@ -5288,10 +5020,10 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 26,
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 218,
+            "line" : 230,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -5299,7 +5031,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -5309,7 +5041,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [37, 9],
+          "action_ids" : [35, 8],
           "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
           "base_default_next" : "FabricIngress.next.next_vlan",
           "next_tables" : {
@@ -5317,7 +5049,7 @@
             "nop" : "FabricIngress.next.next_vlan"
           },
           "default_entry" : {
-            "action_id" : 9,
+            "action_id" : 8,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5325,10 +5057,10 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 27,
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 74,
+            "line" : 82,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -5336,7 +5068,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -5346,12 +5078,13 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [31, 6],
-          "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_46",
+          "action_ids" : [30, 31, 6],
+          "actions" : ["FabricIngress.next.set_vlan", "FabricIngress.next.set_double_vlan", "nop"],
+          "base_default_next" : "node_31",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_46",
-            "nop" : "node_46"
+            "FabricIngress.next.set_vlan" : "node_31",
+            "FabricIngress.next.set_double_vlan" : "node_31",
+            "nop" : "node_31"
           },
           "default_entry" : {
             "action_id" : 6,
@@ -5361,8 +5094,8 @@
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 28,
+          "name" : "tbl_act_7",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -5376,22 +5109,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_48",
+          "action_ids" : [44],
+          "actions" : ["act_7"],
+          "base_default_next" : "node_33",
           "next_tables" : {
-            "act_12" : "node_48"
+            "act_7" : "node_33"
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 44,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 29,
+          "name" : "tbl_act_8",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -5405,11 +5138,337 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
+          "action_ids" : [45],
+          "actions" : ["act_8"],
+          "base_default_next" : "node_35",
+          "next_tables" : {
+            "act_8" : "node_35"
+          },
+          "default_entry" : {
+            "action_id" : 45,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_9",
+          "id" : 19,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 339,
+            "column" : 22,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [46],
+          "actions" : ["act_9"],
+          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
+          "next_tables" : {
+            "act_9" : "FabricIngress.bng_ingress.t_line_map"
+          },
+          "default_entry" : {
+            "action_id" : 46,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_10",
+          "id" : 20,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 344,
+            "column" : 22,
+            "source_fragment" : "= fmeta.vlan_id; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [47],
+          "actions" : ["act_10"],
+          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
+          "next_tables" : {
+            "act_10" : "FabricIngress.bng_ingress.t_line_map"
+          },
+          "default_entry" : {
+            "action_id" : 47,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.t_line_map",
+          "id" : 21,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 324,
+            "column" : 14,
+            "source_fragment" : "t_line_map"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "s_tag",
+              "target" : ["scalars", "bng_ingress_s_tag"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "c_tag",
+              "target" : ["scalars", "bng_ingress_c_tag"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 8192,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [2, 16],
+          "actions" : ["nop", "FabricIngress.bng_ingress.set_line"],
+          "base_default_next" : "node_39",
+          "next_tables" : {
+            "nop" : "node_39",
+            "FabricIngress.bng_ingress.set_line" : "node_39"
+          },
+          "default_entry" : {
+            "action_id" : 2,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_11",
+          "id" : 22,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 353,
+            "column" : 31,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [50],
           "actions" : ["act_13"],
+          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
+          "next_tables" : {
+            "act_13" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
+          },
+          "default_entry" : {
+            "action_id" : 50,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
+          "id" : 23,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 48,
+            "column" : 10,
+            "source_fragment" : "t_pppoe_cp"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "pppoe_code",
+              "target" : ["pppoe", "code"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "pppoe_protocol",
+              "target" : ["pppoe", "protocol"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "ternary",
+          "type" : "simple",
+          "max_size" : 16,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [9, 0],
+          "actions" : ["FabricIngress.bng_ingress.upstream.punt_to_cpu", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_13" : null
+            "__HIT__" : "tbl_act_12",
+            "__MISS__" : "tbl_act_13"
+          },
+          "default_entry" : {
+            "action_id" : 0,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_12",
+          "id" : 24,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [48],
+          "actions" : ["act_11"],
+          "base_default_next" : "node_44",
+          "next_tables" : {
+            "act_11" : "node_44"
+          },
+          "default_entry" : {
+            "action_id" : 48,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_13",
+          "id" : 25,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [49],
+          "actions" : ["act_12"],
+          "base_default_next" : "node_44",
+          "next_tables" : {
+            "act_12" : "node_44"
+          },
+          "default_entry" : {
+            "action_id" : 49,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_14",
+          "id" : 26,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 124,
+            "column" : 12,
+            "source_fragment" : "return"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [51],
+          "actions" : ["act_14"],
+          "base_default_next" : "node_46",
+          "next_tables" : {
+            "act_14" : "node_46"
+          },
+          "default_entry" : {
+            "action_id" : 51,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
+          "id" : 27,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 85,
+            "column" : 10,
+            "source_fragment" : "t_pppoe_term_v4"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id24"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "ipv4_src",
+              "target" : ["ipv4", "src_addr"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "pppoe_session_id",
+              "target" : ["pppoe", "session_id"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 32768,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [11, 10],
+          "actions" : ["FabricIngress.bng_ingress.upstream.term_enabled_v4", "FabricIngress.bng_ingress.upstream.term_disabled"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "FabricIngress.bng_ingress.upstream.term_disabled" : "tbl_act_15",
+            "FabricIngress.bng_ingress.upstream.term_enabled_v4" : null
+          },
+          "default_entry" : {
+            "action_id" : 10,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_15",
+          "id" : 28,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 129,
+            "column" : 20,
+            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [52],
+          "actions" : ["act_15"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_15" : null
           },
           "default_entry" : {
             "action_id" : 52,
@@ -5417,6 +5476,202 @@
             "action_data" : [],
             "action_entry_const" : true
           }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.downstream.t_line_session_map",
+          "id" : 29,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 167,
+            "column" : 10,
+            "source_fragment" : "t_line_session_map"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id24"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 8192,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [1, 12, 13],
+          "actions" : ["nop", "FabricIngress.bng_ingress.downstream.set_session", "FabricIngress.bng_ingress.downstream.drop"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "__HIT__" : "tbl_act_16",
+            "__MISS__" : "tbl_act_17"
+          },
+          "default_entry" : {
+            "action_id" : 1,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_16",
+          "id" : 30,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [53],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_53",
+          "next_tables" : {
+            "act_16" : "node_53"
+          },
+          "default_entry" : {
+            "action_id" : 53,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_17",
+          "id" : 31,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [54],
+          "actions" : ["act_17"],
+          "base_default_next" : "node_53",
+          "next_tables" : {
+            "act_17" : "node_53"
+          },
+          "default_entry" : {
+            "action_id" : 54,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
+          "id" : 32,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 192,
+            "column" : 10,
+            "source_fragment" : "t_qos_v4"
+          },
+          "key" : [
+            {
+              "match_type" : "ternary",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id24"],
+              "mask" : null
+            },
+            {
+              "match_type" : "lpm",
+              "name" : "ipv4_src",
+              "target" : ["ipv4", "src_addr"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ipv4_dscp",
+              "target" : ["ipv4", "dscp"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ipv4_ecn",
+              "target" : ["ipv4", "ecn"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "ternary",
+          "type" : "simple",
+          "max_size" : 256,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [14, 15],
+          "actions" : ["FabricIngress.bng_ingress.downstream.qos_prio", "FabricIngress.bng_ingress.downstream.qos_besteff"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "FabricIngress.bng_ingress.downstream.qos_prio" : "tbl_act_18",
+            "FabricIngress.bng_ingress.downstream.qos_besteff" : "tbl_act_19"
+          },
+          "default_entry" : {
+            "action_id" : 15,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_18",
+          "id" : 33,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 236,
+            "column" : 24,
+            "source_fragment" : "m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [55],
+          "actions" : ["act_18"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_18" : null
+          },
+          "default_entry" : {
+            "action_id" : 55,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_19",
+          "id" : 34,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 239,
+            "column" : 24,
+            "source_fragment" : "m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [56],
+          "actions" : ["act_19"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_19" : null
+          },
+          "default_entry" : {
+            "action_id" : 56,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
         }
       ],
       "action_profiles" : [
@@ -5425,7 +5680,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 165,
+            "line" : 177,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -5443,15 +5698,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto20"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
               }
             ]
           }
@@ -5486,7 +5741,7 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 104,
+            "line" : 109,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -5509,7 +5764,30 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 115,
+            "column" : 12,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_1",
+          "false_next" : "node_8"
+        },
+        {
+          "name" : "node_8",
+          "id" : 3,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 121,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -5531,35 +5809,18 @@
               }
             }
           },
-          "true_next" : "tbl_act_1",
-          "false_next" : "FabricIngress.filtering.ingress_port_vlan"
+          "true_next" : "tbl_act_2",
+          "false_next" : "node_10"
         },
         {
           "name" : "node_10",
-          "id" : 3,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 385,
-            "column" : 12,
-            "source_fragment" : "hdr.pppoe.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["pppoe", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "tbl_act_2",
-          "false_next" : "tbl_act_7"
-        },
-        {
-          "name" : "node_16",
           "id" : 4,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 130,
+            "column" : 12,
+            "source_fragment" : "hdr.mpls.isValid()"
+          },
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -5567,172 +5828,65 @@
               "left" : null,
               "right" : {
                 "type" : "field",
-                "value" : ["scalars", "bng_ingress_upstream_tmp"]
+                "value" : ["mpls", "$valid$"]
               }
             }
           },
-          "true_next" : "tbl_act_5",
-          "false_next" : "node_18"
+          "true_next" : "tbl_act_3",
+          "false_next" : "node_12"
         },
         {
-          "name" : "node_18",
+          "name" : "node_12",
           "id" : 5,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 133,
+            "column" : 16,
+            "source_fragment" : "hdr.vlan_tag.isValid()"
+          },
           "expression" : {
             "type" : "expression",
             "value" : {
-              "op" : "not",
+              "op" : "d2b",
               "left" : null,
               "right" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
-                  }
-                }
+                "type" : "field",
+                "value" : ["vlan_tag", "$valid$"]
               }
             }
           },
-          "true_next" : "node_19",
-          "false_next" : "node_33"
+          "true_next" : "node_13",
+          "false_next" : "tbl_act_6"
+        },
+        {
+          "name" : "node_13",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 135,
+            "column" : 19,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_4",
+          "false_next" : "tbl_act_5"
         },
         {
           "name" : "node_19",
-          "id" : 6,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 160,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv4.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["ipv4", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "false_next" : "node_33"
-        },
-        {
-          "name" : "node_21",
           "id" : 7,
           "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 162,
-            "column" : 15,
-            "source_fragment" : "drop == true"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "==",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_upstream_drop"]
-                  }
-                }
-              },
-              "right" : {
-                "type" : "bool",
-                "value" : true
-              }
-            }
-          },
-          "true_next" : "tbl_act_6",
-          "false_next" : "node_33"
-        },
-        {
-          "name" : "node_24",
-          "id" : 8,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 285,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv4.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["ipv4", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.downstream.t_line_map_v4",
-          "false_next" : "node_33"
-        },
-        {
-          "name" : "node_28",
-          "id" : 9,
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["scalars", "bng_ingress_downstream_tmp"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "false_next" : "node_33"
-        },
-        {
-          "name" : "node_30",
-          "id" : 10,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 292,
-            "column" : 20,
-            "source_fragment" : "prio==true"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "==",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_downstream_prio"]
-                  }
-                }
-              },
-              "right" : {
-                "type" : "bool",
-                "value" : true
-              }
-            }
-          },
-          "true_next" : "tbl_act_10",
-          "false_next" : "tbl_act_11"
-        },
-        {
-          "name" : "node_33",
-          "id" : 11,
-          "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 74,
+            "line" : 71,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -5747,7 +5901,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding14"]
                   }
                 }
               },
@@ -5757,12 +5911,12 @@
               }
             }
           },
-          "true_next" : "node_34",
+          "true_next" : "node_20",
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_34",
-          "id" : 12,
+          "name" : "node_20",
+          "id" : 8,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 141,
@@ -5775,7 +5929,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5784,11 +5938,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_36"
+          "false_next" : "node_22"
         },
         {
-          "name" : "node_36",
-          "id" : 13,
+          "name" : "node_22",
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 142,
@@ -5801,7 +5955,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5810,11 +5964,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_38"
+          "false_next" : "node_24"
         },
         {
-          "name" : "node_38",
-          "id" : 14,
+          "name" : "node_24",
+          "id" : 10,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 143,
@@ -5827,7 +5981,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5839,11 +5993,11 @@
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_41",
-          "id" : 15,
+          "name" : "node_27",
+          "id" : 11,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 78,
+            "line" : 75,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -5858,7 +6012,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_next15"]
                   }
                 }
               },
@@ -5868,12 +6022,12 @@
               }
             }
           },
-          "false_next" : null,
-          "true_next" : "FabricIngress.next.xconnect"
+          "true_next" : "FabricIngress.next.hashed",
+          "false_next" : "node_35"
         },
         {
-          "name" : "node_46",
-          "id" : 16,
+          "name" : "node_31",
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -5894,12 +6048,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_12",
-          "false_next" : "node_48"
+          "true_next" : "tbl_act_7",
+          "false_next" : "node_33"
         },
         {
-          "name" : "node_48",
-          "id" : 17,
+          "name" : "node_33",
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -5920,8 +6074,158 @@
               }
             }
           },
+          "true_next" : "tbl_act_8",
+          "false_next" : "node_35"
+        },
+        {
+          "name" : "node_35",
+          "id" : 14,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 338,
+            "column" : 15,
+            "source_fragment" : "hdr.pppoe.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["pppoe", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_9",
+          "false_next" : "tbl_act_10"
+        },
+        {
+          "name" : "node_39",
+          "id" : 15,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 352,
+            "column" : 16,
+            "source_fragment" : "hdr.pppoe.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["pppoe", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_11",
+          "false_next" : "FabricIngress.bng_ingress.downstream.t_line_session_map"
+        },
+        {
+          "name" : "node_44",
+          "id" : 16,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["scalars", "bng_ingress_upstream_tmp"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_14",
+          "false_next" : "node_46"
+        },
+        {
+          "name" : "node_46",
+          "id" : 17,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "not",
+              "left" : null,
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
+                  }
+                }
+              }
+            }
+          },
           "false_next" : null,
-          "true_next" : "tbl_act_13"
+          "true_next" : "node_47"
+        },
+        {
+          "name" : "node_47",
+          "id" : 18,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 126,
+            "column" : 12,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4"
+        },
+        {
+          "name" : "node_53",
+          "id" : 19,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["scalars", "bng_ingress_downstream_tmp"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "node_54"
+        },
+        {
+          "name" : "node_54",
+          "id" : 20,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 233,
+            "column" : 16,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v4"
         }
       ]
     },
@@ -5930,15 +6234,15 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 92,
+        "line" : 93,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_52",
+      "init_table" : "node_60",
       "tables" : [
         {
-          "name" : "tbl_act_14",
-          "id" : 30,
+          "name" : "tbl_act_20",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -5952,22 +6256,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60],
-          "actions" : ["act_14"],
-          "base_default_next" : "node_54",
+          "action_ids" : [65],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_62",
           "next_tables" : {
-            "act_14" : "node_54"
+            "act_20" : "node_62"
           },
           "default_entry" : {
-            "action_id" : 60,
+            "action_id" : 65,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 31,
+          "name" : "tbl_act_21",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -5981,25 +6285,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
-          "actions" : ["act_15"],
-          "base_default_next" : "node_56",
+          "action_ids" : [66],
+          "actions" : ["act_21"],
+          "base_default_next" : "node_64",
           "next_tables" : {
-            "act_15" : "node_56"
+            "act_21" : "node_64"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 66,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 32,
+          "name" : "tbl_act_22",
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -6010,14 +6314,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_58",
+          "action_ids" : [67],
+          "actions" : ["act_22"],
+          "base_default_next" : "node_66",
           "next_tables" : {
-            "act_16" : "node_58"
+            "act_22" : "node_66"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 67,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6025,10 +6329,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 33,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -6039,14 +6343,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56],
+          "action_ids" : [59],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
-          "base_default_next" : "FabricEgress.egress_next.egress_vlan",
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
+            "FabricEgress.egress_next.pop_mpls_if_present" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6054,10 +6358,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 34,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 314,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -6068,14 +6372,101 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [57],
+          "action_ids" : [60],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
-          "base_default_next" : "FabricEgress.egress_next.egress_vlan",
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
+            "FabricEgress.egress_next.set_mpls" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 60,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_egress_next_push_vlan",
+          "id" : 40,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 346,
+            "column" : 12,
+            "source_fragment" : "push_vlan()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [61],
+          "actions" : ["FabricEgress.egress_next.push_vlan"],
+          "base_default_next" : "tbl_egress_next_push_inner_vlan",
+          "next_tables" : {
+            "FabricEgress.egress_next.push_vlan" : "tbl_egress_next_push_inner_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 61,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_egress_next_push_inner_vlan",
+          "id" : 41,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 347,
+            "column" : 12,
+            "source_fragment" : "push_inner_vlan()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [63],
+          "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
+          "base_default_next" : "node_80",
+          "next_tables" : {
+            "FabricEgress.egress_next.push_inner_vlan" : "node_80"
+          },
+          "default_entry" : {
+            "action_id" : 63,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_23",
+          "id" : 42,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 350,
+            "column" : 12,
+            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [70],
+          "actions" : ["act_25"],
+          "base_default_next" : "FabricEgress.egress_next.egress_vlan",
+          "next_tables" : {
+            "act_25" : "FabricEgress.egress_next.egress_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 70,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6083,10 +6474,10 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 35,
+          "id" : 43,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 291,
+            "line" : 317,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -6094,7 +6485,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -6110,23 +6501,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59, 54],
+          "action_ids" : [64, 57],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_17",
-            "__MISS__" : "tbl_act_18"
+            "__HIT__" : "tbl_act_24",
+            "__MISS__" : "tbl_act_25"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 36,
+          "name" : "tbl_act_24",
+          "id" : 44,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6134,22 +6525,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_65",
+          "action_ids" : [68],
+          "actions" : ["act_23"],
+          "base_default_next" : "node_77",
           "next_tables" : {
-            "act_17" : "node_65"
+            "act_23" : "node_77"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 68,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 37,
+          "name" : "tbl_act_25",
+          "id" : 45,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6157,26 +6548,26 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
-          "actions" : ["act_18"],
-          "base_default_next" : "node_65",
+          "action_ids" : [69],
+          "actions" : ["act_24"],
+          "base_default_next" : "node_77",
           "next_tables" : {
-            "act_18" : "node_65"
+            "act_24" : "node_77"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 69,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_egress_next_push_vlan",
-          "id" : 38,
+          "name" : "tbl_egress_next_push_vlan_0",
+          "id" : 46,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 320,
-            "column" : 16,
+            "line" : 357,
+            "column" : 20,
             "source_fragment" : "push_vlan()"
           },
           "key" : [],
@@ -6186,25 +6577,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
+          "action_ids" : [62],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_68",
+          "base_default_next" : "node_80",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_68"
+            "FabricEgress.egress_next.push_vlan" : "node_80"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_19",
-          "id" : 39,
+          "name" : "tbl_act_26",
+          "id" : 47,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 25,
             "source_fragment" : "="
           },
@@ -6215,25 +6606,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [66],
-          "actions" : ["act_20"],
-          "base_default_next" : "node_70",
+          "action_ids" : [72],
+          "actions" : ["act_27"],
+          "base_default_next" : "node_82",
           "next_tables" : {
-            "act_20" : "node_70"
+            "act_27" : "node_82"
           },
           "default_entry" : {
-            "action_id" : 66,
+            "action_id" : 72,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_20",
-          "id" : 40,
+          "name" : "tbl_act_27",
+          "id" : 48,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -6244,25 +6635,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_76",
+          "action_ids" : [71],
+          "actions" : ["act_26"],
+          "base_default_next" : "node_88",
           "next_tables" : {
-            "act_19" : "node_76"
+            "act_26" : "node_88"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 71,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_21",
-          "id" : 41,
+          "name" : "tbl_act_28",
+          "id" : 49,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 29,
             "source_fragment" : "="
           },
@@ -6273,25 +6664,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [68],
-          "actions" : ["act_22"],
-          "base_default_next" : "node_74",
+          "action_ids" : [74],
+          "actions" : ["act_29"],
+          "base_default_next" : "node_86",
           "next_tables" : {
-            "act_22" : "node_74"
+            "act_29" : "node_86"
           },
           "default_entry" : {
-            "action_id" : 68,
+            "action_id" : 74,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_22",
-          "id" : 42,
+          "name" : "tbl_act_29",
+          "id" : 50,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -6302,51 +6693,43 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [67],
-          "actions" : ["act_21"],
-          "base_default_next" : "node_76",
+          "action_ids" : [73],
+          "actions" : ["act_28"],
+          "base_default_next" : "node_88",
           "next_tables" : {
-            "act_21" : "node_76"
+            "act_28" : "node_88"
           },
           "default_entry" : {
-            "action_id" : 67,
+            "action_id" : 73,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "FabricEgress.bng_egress.downstream.t_session_encap",
-          "id" : 43,
+          "name" : "tbl_bng_egress_downstream_encap_v4",
+          "id" : 51,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 356,
-            "column" : 10,
-            "source_fragment" : "t_session_encap"
+            "line" : 295,
+            "column" : 12,
+            "source_fragment" : "encap_v4()"
           },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id17"],
-              "mask" : null
-            }
-          ],
+          "key" : [],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 8192,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53, 55],
-          "actions" : ["nop", "FabricEgress.bng_egress.downstream.encap_v4"],
+          "action_ids" : [58],
+          "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
           "base_default_next" : null,
           "next_tables" : {
-            "nop" : null,
             "FabricEgress.bng_egress.downstream.encap_v4" : null
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6356,8 +6739,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_52",
-          "id" : 18,
+          "name" : "node_60",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -6375,7 +6758,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out19"]
                   }
                 }
               },
@@ -6385,12 +6768,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_14",
-          "false_next" : "node_54"
+          "true_next" : "tbl_act_20",
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_54",
-          "id" : 19,
+          "name" : "node_62",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -6411,15 +6794,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_15",
-          "false_next" : "node_56"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_64"
         },
         {
-          "name" : "node_56",
-          "id" : 20,
+          "name" : "node_64",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 306,
+            "line" : 332,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -6438,7 +6821,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast18"]
                       }
                     }
                   },
@@ -6464,15 +6847,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_58"
+          "true_next" : "tbl_act_22",
+          "false_next" : "node_66"
         },
         {
-          "name" : "node_58",
-          "id" : 21,
+          "name" : "node_66",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 311,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -6482,7 +6865,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6490,15 +6873,15 @@
               }
             }
           },
-          "true_next" : "node_59",
+          "true_next" : "node_67",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_59",
-          "id" : 22,
+          "name" : "node_67",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6514,15 +6897,48 @@
             }
           },
           "true_next" : "tbl_egress_next_pop_mpls_if_present",
-          "false_next" : "FabricEgress.egress_next.egress_vlan"
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_65",
-          "id" : 23,
+          "name" : "node_70",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 317,
+            "line" : 344,
             "column" : 12,
+            "source_fragment" : "fabric_metadata.push_double_vlan == true"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "==",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["scalars", "fabric_metadata_t._push_double_vlan8"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "bool",
+                "value" : true
+              }
+            }
+          },
+          "true_next" : "tbl_egress_next_push_vlan",
+          "false_next" : "tbl_act_23"
+        },
+        {
+          "name" : "node_77",
+          "id" : 27,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 354,
+            "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
           "expression" : {
@@ -6543,16 +6959,16 @@
               }
             }
           },
-          "true_next" : "node_66",
-          "false_next" : "node_68"
+          "true_next" : "node_78",
+          "false_next" : "node_80"
         },
         {
-          "name" : "node_66",
-          "id" : 24,
+          "name" : "node_78",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 319,
-            "column" : 16,
+            "line" : 356,
+            "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
           "expression" : {
@@ -6561,7 +6977,7 @@
               "op" : "!=",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6569,15 +6985,15 @@
               }
             }
           },
-          "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_68"
+          "true_next" : "tbl_egress_next_push_vlan_0",
+          "false_next" : "node_80"
         },
         {
-          "name" : "node_68",
-          "id" : 25,
+          "name" : "node_80",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 325,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6592,15 +7008,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_19",
-          "false_next" : "node_72"
+          "true_next" : "tbl_act_26",
+          "false_next" : "node_84"
         },
         {
-          "name" : "node_70",
-          "id" : 26,
+          "name" : "node_82",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -6618,15 +7034,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_20",
-          "false_next" : "node_76"
+          "true_next" : "tbl_act_27",
+          "false_next" : "node_88"
         },
         {
-          "name" : "node_72",
-          "id" : 27,
+          "name" : "node_84",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 329,
+            "line" : 369,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -6641,15 +7057,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_21",
-          "false_next" : "node_76"
+          "true_next" : "tbl_act_28",
+          "false_next" : "node_88"
         },
         {
-          "name" : "node_74",
-          "id" : 28,
+          "name" : "node_86",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -6667,15 +7083,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_22",
-          "false_next" : "node_76"
+          "true_next" : "tbl_act_29",
+          "false_next" : "node_88"
         },
         {
-          "name" : "node_76",
-          "id" : 29,
+          "name" : "node_88",
+          "id" : 33,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 405,
+            "line" : 369,
             "column" : 12,
             "source_fragment" : "fmeta.bng.type == BNG_TYPE_DOWNSTREAM"
           },
@@ -6685,7 +7101,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._bng_type16"]
+                "value" : ["scalars", "fabric_metadata_t._bng_type23"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6694,7 +7110,30 @@
             }
           },
           "false_next" : null,
-          "true_next" : "FabricEgress.bng_egress.downstream.t_session_encap"
+          "true_next" : "node_89"
+        },
+        {
+          "name" : "node_89",
+          "id" : 34,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 294,
+            "column" : 12,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "tbl_bng_egress_downstream_encap_v4"
         }
       ]
     }
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
index e6f3866..98b6cac 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
@@ -3,35 +3,6 @@
 }
 tables {
   preamble {
-    id: 33584710
-    name: "FabricIngress.bng_ingress.upstream.t_line_map"
-    alias: "t_line_map"
-  }
-  match_fields {
-    id: 1
-    name: "s_tag"
-    bitwidth: 12
-    match_type: EXACT
-  }
-  match_fields {
-    id: 2
-    name: "c_tag"
-    bitwidth: 12
-    match_type: EXACT
-  }
-  action_refs {
-    id: 16819938
-    annotations: "@defaultonly"
-    scope: DEFAULT_ONLY
-  }
-  action_refs {
-    id: 16829434
-  }
-  const_default_action_id: 16819938
-  size: 8192
-}
-tables {
-  preamble {
     id: 33603300
     name: "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
     alias: "t_pppoe_cp"
@@ -96,13 +67,13 @@
 }
 tables {
   preamble {
-    id: 33555367
-    name: "FabricIngress.bng_ingress.downstream.t_line_map_v4"
-    alias: "t_line_map_v4"
+    id: 33594775
+    name: "FabricIngress.bng_ingress.downstream.t_line_session_map"
+    alias: "t_line_session_map"
   }
   match_fields {
     id: 1
-    name: "ipv4_dst"
+    name: "line_id"
     bitwidth: 32
     match_type: EXACT
   }
@@ -112,13 +83,13 @@
     scope: DEFAULT_ONLY
   }
   action_refs {
-    id: 16798636
+    id: 16795395
   }
   action_refs {
-    id: 16842299
+    id: 16822844
   }
   const_default_action_id: 16819938
-  size: 32768
+  size: 8192
 }
 tables {
   preamble {
@@ -161,6 +132,35 @@
 }
 tables {
   preamble {
+    id: 33592041
+    name: "FabricIngress.bng_ingress.t_line_map"
+    alias: "t_line_map"
+  }
+  match_fields {
+    id: 1
+    name: "s_tag"
+    bitwidth: 12
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "c_tag"
+    bitwidth: 12
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  action_refs {
+    id: 16829385
+  }
+  const_default_action_id: 16819938
+  size: 8192
+}
+tables {
+  preamble {
     id: 33611649
     name: "FabricIngress.filtering.ingress_port_vlan"
     alias: "ingress_port_vlan"
@@ -183,6 +183,12 @@
     bitwidth: 12
     match_type: TERNARY
   }
+  match_fields {
+    id: 4
+    name: "inner_vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
   action_refs {
     id: 16836487
   }
@@ -194,7 +200,7 @@
   }
   const_default_action_id: 16836487
   direct_resource_ids: 318815501
-  size: 1024
+  size: 8192
 }
 tables {
   preamble {
@@ -216,8 +222,20 @@
   }
   match_fields {
     id: 3
-    name: "eth_type"
-    bitwidth: 16
+    name: "is_ipv4"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 4
+    name: "is_ipv6"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 5
+    name: "is_mpls"
+    bitwidth: 1
     match_type: EXACT
   }
   action_refs {
@@ -421,6 +439,9 @@
     id: 16790685
   }
   action_refs {
+    id: 16803337
+  }
+  action_refs {
     id: 16819938
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -431,39 +452,6 @@
 }
 tables {
   preamble {
-    id: 33596977
-    name: "FabricIngress.next.xconnect"
-    alias: "xconnect"
-  }
-  match_fields {
-    id: 1
-    name: "ig_port"
-    bitwidth: 9
-    match_type: EXACT
-  }
-  match_fields {
-    id: 2
-    name: "next_id"
-    bitwidth: 32
-    match_type: EXACT
-  }
-  action_refs {
-    id: 16842190
-  }
-  action_refs {
-    id: 16837052
-  }
-  action_refs {
-    id: 16819938
-    annotations: "@defaultonly"
-    scope: DEFAULT_ONLY
-  }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318778156
-  size: 1024
-}
-tables {
-  preamble {
     id: 33608588
     name: "FabricIngress.next.hashed"
     alias: "hashed"
@@ -519,29 +507,6 @@
 }
 tables {
   preamble {
-    id: 33576241
-    name: "FabricEgress.bng_egress.downstream.t_session_encap"
-    alias: "t_session_encap"
-  }
-  match_fields {
-    id: 1
-    name: "line_id"
-    bitwidth: 32
-    match_type: EXACT
-  }
-  action_refs {
-    id: 16819938
-    annotations: "@defaultonly"
-    scope: DEFAULT_ONLY
-  }
-  action_refs {
-    id: 16784000
-  }
-  const_default_action_id: 16819938
-  size: 8192
-}
-tables {
-  preamble {
     id: 33599342
     name: "FabricEgress.egress_next.egress_vlan"
     alias: "egress_vlan"
@@ -579,18 +544,6 @@
 }
 actions {
   preamble {
-    id: 16829434
-    name: "FabricIngress.bng_ingress.upstream.set_line"
-    alias: "set_line"
-  }
-  params {
-    id: 1
-    name: "line_id"
-    bitwidth: 32
-  }
-}
-actions {
-  preamble {
     id: 16830893
     name: "FabricIngress.bng_ingress.upstream.punt_to_cpu"
     alias: "upstream.punt_to_cpu"
@@ -612,31 +565,21 @@
 }
 actions {
   preamble {
-    id: 16798636
-    name: "FabricIngress.bng_ingress.downstream.set_line_next"
-    alias: "set_line_next"
+    id: 16795395
+    name: "FabricIngress.bng_ingress.downstream.set_session"
+    alias: "set_session"
   }
   params {
     id: 1
-    name: "line_id"
-    bitwidth: 32
-  }
-  params {
-    id: 2
-    name: "next_id"
-    bitwidth: 32
+    name: "pppoe_session_id"
+    bitwidth: 16
   }
 }
 actions {
   preamble {
-    id: 16842299
-    name: "FabricIngress.bng_ingress.downstream.set_line_drop"
-    alias: "set_line_drop"
-  }
-  params {
-    id: 1
-    name: "line_id"
-    bitwidth: 32
+    id: 16822844
+    name: "FabricIngress.bng_ingress.downstream.drop"
+    alias: "downstream.drop"
   }
 }
 actions {
@@ -655,6 +598,18 @@
 }
 actions {
   preamble {
+    id: 16829385
+    name: "FabricIngress.bng_ingress.set_line"
+    alias: "set_line"
+  }
+  params {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
     id: 16836487
     name: "FabricIngress.filtering.deny"
     alias: "deny"
@@ -769,7 +724,7 @@
   preamble {
     id: 16820765
     name: "FabricIngress.acl.drop"
-    alias: "drop"
+    alias: "acl.drop"
   }
 }
 actions {
@@ -793,26 +748,19 @@
 }
 actions {
   preamble {
-    id: 16842190
-    name: "FabricIngress.next.output_xconnect"
-    alias: "output_xconnect"
+    id: 16803337
+    name: "FabricIngress.next.set_double_vlan"
+    alias: "set_double_vlan"
   }
   params {
     id: 1
-    name: "port_num"
-    bitwidth: 9
-  }
-}
-actions {
-  preamble {
-    id: 16837052
-    name: "FabricIngress.next.set_next_id_xconnect"
-    alias: "set_next_id_xconnect"
+    name: "outer_vlan_id"
+    bitwidth: 12
   }
   params {
-    id: 1
-    name: "next_id"
-    bitwidth: 32
+    id: 2
+    name: "inner_vlan_id"
+    bitwidth: 12
   }
 }
 actions {
@@ -894,16 +842,6 @@
     name: "FabricEgress.bng_egress.downstream.encap_v4"
     alias: "encap_v4"
   }
-  params {
-    id: 1
-    name: "c_tag"
-    bitwidth: 12
-  }
-  params {
-    id: 2
-    name: "pppoe_session_id"
-    bitwidth: 16
-  }
 }
 actions {
   preamble {
@@ -1079,17 +1017,6 @@
 }
 direct_counters {
   preamble {
-    id: 318778156
-    name: "FabricIngress.next.xconnect_counter"
-    alias: "xconnect_counter"
-  }
-  spec {
-    unit: BOTH
-  }
-  direct_table_id: 33596977
-}
-direct_counters {
-  preamble {
     id: 318800532
     name: "FabricIngress.next.hashed_counter"
     alias: "hashed_counter"
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
index 37c1144..10538ac 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
@@ -12,50 +12,57 @@
         ["tmp_3", 32, false],
         ["spgw_ingress_tmp", 1, false],
         ["spgw_ingress_tmp_0", 1, false],
-        ["bng_ingress_upstream_drop", 1, false],
+        ["bng_ingress_s_tag", 12, false],
+        ["bng_ingress_c_tag", 12, false],
         ["bng_ingress_upstream_tmp", 1, false],
-        ["bng_ingress_downstream_prio", 1, false],
         ["bng_ingress_downstream_tmp", 1, false],
-        ["bng_ingress_downstream_tmp_0", 1, false],
         ["spgw_normalizer_hasReturned", 1, false],
         ["spgw_ingress_hasReturned", 1, false],
         ["bng_ingress_upstream_hasReturned", 1, false],
         ["key_0", 64, false],
-        ["key_1", 64, false],
         ["egress_next_tmp", 1, false],
         ["process_int_main_process_int_transit_hasReturned", 1, false],
-        ["fabric_metadata_t._eth_type0", 16, false],
-        ["fabric_metadata_t._ip_eth_type1", 16, false],
-        ["fabric_metadata_t._vlan_id2", 12, false],
-        ["fabric_metadata_t._vlan_pri3", 3, false],
-        ["fabric_metadata_t._vlan_cfi4", 1, false],
-        ["fabric_metadata_t._mpls_label5", 20, false],
-        ["fabric_metadata_t._mpls_ttl6", 8, false],
-        ["fabric_metadata_t._skip_forwarding7", 1, false],
-        ["fabric_metadata_t._skip_next8", 1, false],
-        ["fabric_metadata_t._fwd_type9", 3, false],
-        ["fabric_metadata_t._next_id10", 32, false],
-        ["fabric_metadata_t._is_multicast11", 1, false],
-        ["fabric_metadata_t._is_controller_packet_out12", 1, false],
-        ["fabric_metadata_t._ip_proto13", 8, false],
-        ["fabric_metadata_t._l4_sport14", 16, false],
-        ["fabric_metadata_t._l4_dport15", 16, false],
-        ["fabric_metadata_t._spgw_direction16", 2, false],
-        ["fabric_metadata_t._spgw_ipv4_len17", 16, false],
-        ["fabric_metadata_t._spgw_teid18", 32, false],
-        ["fabric_metadata_t._spgw_s1u_enb_addr19", 32, false],
-        ["fabric_metadata_t._spgw_s1u_sgw_addr20", 32, false],
-        ["fabric_metadata_t._bng_type21", 2, false],
-        ["fabric_metadata_t._bng_line_id22", 32, false],
-        ["fabric_metadata_t._bng_ds_meter_result23", 32, false],
-        ["fabric_metadata_t._int_meta_source24", 1, false],
-        ["fabric_metadata_t._int_meta_transit25", 1, false],
-        ["fabric_metadata_t._int_meta_sink26", 1, false],
-        ["fabric_metadata_t._int_meta_switch_id27", 32, false],
-        ["fabric_metadata_t._int_meta_new_words28", 8, false],
-        ["fabric_metadata_t._int_meta_new_bytes29", 16, false],
-        ["fabric_metadata_t._int_meta_ig_tstamp30", 32, false],
-        ["fabric_metadata_t._int_meta_eg_tstamp31", 32, false]
+        ["fabric_metadata_t._last_eth_type0", 16, false],
+        ["fabric_metadata_t._is_ipv41", 1, false],
+        ["fabric_metadata_t._is_ipv62", 1, false],
+        ["fabric_metadata_t._is_mpls3", 1, false],
+        ["fabric_metadata_t._ip_eth_type4", 16, false],
+        ["fabric_metadata_t._vlan_id5", 12, false],
+        ["fabric_metadata_t._vlan_pri6", 3, false],
+        ["fabric_metadata_t._vlan_cfi7", 1, false],
+        ["fabric_metadata_t._push_double_vlan8", 1, false],
+        ["fabric_metadata_t._inner_vlan_id9", 12, false],
+        ["fabric_metadata_t._inner_vlan_pri10", 3, false],
+        ["fabric_metadata_t._inner_vlan_cfi11", 1, false],
+        ["fabric_metadata_t._mpls_label12", 20, false],
+        ["fabric_metadata_t._mpls_ttl13", 8, false],
+        ["fabric_metadata_t._skip_forwarding14", 1, false],
+        ["fabric_metadata_t._skip_next15", 1, false],
+        ["fabric_metadata_t._fwd_type16", 3, false],
+        ["fabric_metadata_t._next_id17", 32, false],
+        ["fabric_metadata_t._is_multicast18", 1, false],
+        ["fabric_metadata_t._is_controller_packet_out19", 1, false],
+        ["fabric_metadata_t._ip_proto20", 8, false],
+        ["fabric_metadata_t._l4_sport21", 16, false],
+        ["fabric_metadata_t._l4_dport22", 16, false],
+        ["fabric_metadata_t._spgw_direction23", 2, false],
+        ["fabric_metadata_t._spgw_ipv4_len24", 16, false],
+        ["fabric_metadata_t._spgw_teid25", 32, false],
+        ["fabric_metadata_t._spgw_s1u_enb_addr26", 32, false],
+        ["fabric_metadata_t._spgw_s1u_sgw_addr27", 32, false],
+        ["fabric_metadata_t._bng_type28", 2, false],
+        ["fabric_metadata_t._bng_line_id29", 32, false],
+        ["fabric_metadata_t._bng_pppoe_session_id30", 16, false],
+        ["fabric_metadata_t._bng_ds_meter_result31", 32, false],
+        ["fabric_metadata_t._int_meta_source32", 1, false],
+        ["fabric_metadata_t._int_meta_transit33", 1, false],
+        ["fabric_metadata_t._int_meta_sink34", 1, false],
+        ["fabric_metadata_t._int_meta_switch_id35", 32, false],
+        ["fabric_metadata_t._int_meta_new_words36", 8, false],
+        ["fabric_metadata_t._int_meta_new_bytes37", 16, false],
+        ["fabric_metadata_t._int_meta_ig_tstamp38", 32, false],
+        ["fabric_metadata_t._int_meta_eg_tstamp39", 32, false],
+        ["_padding_0", 7, false]
       ]
     },
     {
@@ -721,7 +728,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+                  "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
                 },
                 {
                   "type" : "field",
@@ -734,7 +741,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                  "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
                 },
                 {
                   "type" : "hexstr",
@@ -761,13 +768,13 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
               "value" : "0x86dd",
               "mask" : null,
-              "next_state" : "parse_ipv6"
+              "next_state" : "pre_parse_ipv6"
             },
             {
               "value" : "default",
@@ -801,13 +808,13 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
               "value" : "0x86dd",
               "mask" : null,
-              "next_state" : "parse_ipv6"
+              "next_state" : "pre_parse_ipv6"
             },
             {
               "type" : "hexstr",
@@ -822,6 +829,18 @@
               "next_state" : "parse_inner_vlan_tag"
             },
             {
+              "type" : "hexstr",
+              "value" : "0x88a8",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x9100",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
               "value" : "default",
               "mask" : null,
               "next_state" : null
@@ -853,13 +872,13 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
               "value" : "0x86dd",
               "mask" : null,
-              "next_state" : "parse_ipv6"
+              "next_state" : "pre_parse_ipv6"
             },
             {
               "type" : "hexstr",
@@ -917,13 +936,13 @@
               "type" : "hexstr",
               "value" : "0x0021",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
               "value" : "0x0057",
               "mask" : null,
-              "next_state" : "parse_ipv6"
+              "next_state" : "pre_parse_ipv6"
             },
             {
               "value" : "default",
@@ -955,7 +974,30 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                  "value" : ["scalars", "fabric_metadata_t._is_mpls3"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
                 },
                 {
                   "type" : "field",
@@ -968,7 +1010,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl13"]
                 },
                 {
                   "type" : "field",
@@ -1018,12 +1060,49 @@
           ]
         },
         {
-          "name" : "parse_ipv4",
+          "name" : "pre_parse_ipv4",
           "id" : 7,
           "parser_ops" : [
             {
               "parameters" : [
                 {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._is_ipv41"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv4"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_ipv4",
+          "id" : 8,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
                   "type" : "regular",
                   "value" : "ipv4"
                 }
@@ -1034,7 +1113,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto20"]
                 },
                 {
                   "type" : "field",
@@ -1047,7 +1126,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
                 },
                 {
                   "type" : "hexstr",
@@ -1103,8 +1182,45 @@
           ]
         },
         {
+          "name" : "pre_parse_ipv6",
+          "id" : 9,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._is_ipv62"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv6"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
           "name" : "parse_ipv6",
-          "id" : 8,
+          "id" : 10,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1119,7 +1235,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto20"]
                 },
                 {
                   "type" : "field",
@@ -1132,7 +1248,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
                 },
                 {
                   "type" : "hexstr",
@@ -1176,7 +1292,7 @@
         },
         {
           "name" : "parse_tcp",
-          "id" : 9,
+          "id" : 11,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1191,7 +1307,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
                 },
                 {
                   "type" : "field",
@@ -1204,7 +1320,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
                 },
                 {
                   "type" : "field",
@@ -1225,7 +1341,7 @@
         },
         {
           "name" : "parse_udp",
-          "id" : 10,
+          "id" : 12,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1240,7 +1356,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
                 },
                 {
                   "type" : "field",
@@ -1253,7 +1369,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
                 },
                 {
                   "type" : "field",
@@ -1285,7 +1401,7 @@
         },
         {
           "name" : "parse_icmp",
-          "id" : 11,
+          "id" : 13,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1308,7 +1424,7 @@
         },
         {
           "name" : "parse_gtpu",
-          "id" : 12,
+          "id" : 14,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1379,7 +1495,7 @@
         },
         {
           "name" : "do_parse_gtpu",
-          "id" : 13,
+          "id" : 15,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1447,7 +1563,7 @@
         },
         {
           "name" : "parse_inner_udp",
-          "id" : 14,
+          "id" : 16,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1462,7 +1578,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
                 },
                 {
                   "type" : "field",
@@ -1475,7 +1591,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
                 },
                 {
                   "type" : "field",
@@ -1496,7 +1612,7 @@
         },
         {
           "name" : "parse_int",
-          "id" : 15,
+          "id" : 17,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -1520,7 +1636,7 @@
         },
         {
           "name" : "parse_intl4_shim",
-          "id" : 16,
+          "id" : 18,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1563,7 +1679,7 @@
         },
         {
           "name" : "parse_int_data",
-          "id" : 17,
+          "id" : 19,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1659,7 +1775,7 @@
         },
         {
           "name" : "parse_intl4_tail",
-          "id" : 18,
+          "id" : 20,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1690,7 +1806,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 261,
+        "line" : 276,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -1703,7 +1819,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 184,
+        "line" : 152,
         "column" : 33,
         "source_fragment" : "m_besteff"
       },
@@ -1717,7 +1833,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 185,
+        "line" : 153,
         "column" : 33,
         "source_fragment" : "m_prio"
       },
@@ -1741,56 +1857,8 @@
       }
     },
     {
-      "name" : "FabricIngress.bng_ingress.upstream.c_terminated",
-      "id" : 1,
-      "source_info" : {
-        "filename" : "include/bng.p4",
-        "line" : 40,
-        "column" : 39,
-        "source_fragment" : "c_terminated"
-      },
-      "size" : 8192,
-      "is_direct" : false
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.c_dropped",
-      "id" : 2,
-      "source_info" : {
-        "filename" : "include/bng.p4",
-        "line" : 41,
-        "column" : 39,
-        "source_fragment" : "c_dropped"
-      },
-      "size" : 8192,
-      "is_direct" : false
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.c_control",
-      "id" : 3,
-      "source_info" : {
-        "filename" : "include/bng.p4",
-        "line" : 42,
-        "column" : 39,
-        "source_fragment" : "c_control"
-      },
-      "size" : 8192,
-      "is_direct" : false
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.c_line_rx",
-      "id" : 4,
-      "source_info" : {
-        "filename" : "include/bng.p4",
-        "line" : 182,
-        "column" : 49,
-        "source_fragment" : "c_line_rx"
-      },
-      "size" : 8192,
-      "is_direct" : false
-    },
-    {
       "name" : "FabricIngress.process_set_source_sink.counter_set_source",
-      "id" : 5,
+      "id" : 1,
       "is_direct" : true,
       "binding" : "FabricIngress.process_set_source_sink.tb_set_source",
       "source_info" : {
@@ -1802,7 +1870,7 @@
     },
     {
       "name" : "FabricIngress.process_set_source_sink.counter_set_sink",
-      "id" : 6,
+      "id" : 2,
       "is_direct" : true,
       "binding" : "FabricIngress.process_set_source_sink.tb_set_sink",
       "source_info" : {
@@ -1813,6 +1881,54 @@
       }
     },
     {
+      "name" : "FabricIngress.bng_ingress.upstream.c_terminated",
+      "id" : 3,
+      "source_info" : {
+        "filename" : "include/bng.p4",
+        "line" : 36,
+        "column" : 39,
+        "source_fragment" : "c_terminated"
+      },
+      "size" : 8192,
+      "is_direct" : false
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.upstream.c_dropped",
+      "id" : 4,
+      "source_info" : {
+        "filename" : "include/bng.p4",
+        "line" : 37,
+        "column" : 39,
+        "source_fragment" : "c_dropped"
+      },
+      "size" : 8192,
+      "is_direct" : false
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.upstream.c_control",
+      "id" : 5,
+      "source_info" : {
+        "filename" : "include/bng.p4",
+        "line" : 38,
+        "column" : 39,
+        "source_fragment" : "c_control"
+      },
+      "size" : 8192,
+      "is_direct" : false
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.c_line_rx",
+      "id" : 6,
+      "source_info" : {
+        "filename" : "include/bng.p4",
+        "line" : 150,
+        "column" : 49,
+        "source_fragment" : "c_line_rx"
+      },
+      "size" : 8192,
+      "is_direct" : false
+    },
+    {
       "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
       "id" : 7,
       "is_direct" : true,
@@ -1831,7 +1947,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 80,
+        "line" : 83,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -1915,7 +2031,7 @@
       "binding" : "FabricIngress.next.xconnect",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 92,
+        "line" : 103,
         "column" : 50,
         "source_fragment" : "xconnect_counter"
       }
@@ -1927,7 +2043,7 @@
       "binding" : "FabricIngress.next.simple",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 125,
+        "line" : 137,
         "column" : 50,
         "source_fragment" : "simple_counter"
       }
@@ -1939,7 +2055,7 @@
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 166,
+        "line" : 178,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
@@ -1951,7 +2067,7 @@
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 210,
+        "line" : 222,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
@@ -1985,7 +2101,7 @@
       "id" : 21,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 324,
+        "line" : 265,
         "column" : 49,
         "source_fragment" : "c_line_tx"
       },
@@ -2011,7 +2127,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 283,
+        "line" : 309,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -2302,14 +2418,8 @@
       "primitives" : []
     },
     {
-      "name" : "nop",
-      "id" : 16,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
       "name" : "FabricIngress.spgw_ingress.gtpu_decap",
-      "id" : 17,
+      "id" : 16,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2361,7 +2471,7 @@
     },
     {
       "name" : "FabricIngress.spgw_ingress.set_dl_sess_info",
-      "id" : 18,
+      "id" : 17,
       "runtime_data" : [
         {
           "name" : "teid",
@@ -2382,7 +2492,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid18"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid25"]
             },
             {
               "type" : "runtime_data",
@@ -2401,7 +2511,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr19"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr26"]
             },
             {
               "type" : "runtime_data",
@@ -2420,7 +2530,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr20"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr27"]
             },
             {
               "type" : "runtime_data",
@@ -2437,1226 +2547,8 @@
       ]
     },
     {
-      "name" : "FabricIngress.bng_ingress.upstream.set_line",
-      "id" : 19,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 53,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.punt_to_cpu",
-      "id" : 20,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "egress_spec"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00ff"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 73,
-            "column" : 8,
-            "source_fragment" : "smeta.egress_spec = 255"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 74,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 75,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.upstream.c_control"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 76,
-            "column" : 8,
-            "source_fragment" : "c_control.count(fmeta.bng.line_id)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.term_disabled",
-      "id" : 21,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 155,
-            "column" : 36,
-            "source_fragment" : "2w0x0; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 108,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 109,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "mark_to_drop",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "standard_metadata"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 110,
-            "column" : 8,
-            "source_fragment" : "mark_to_drop(smeta)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_drop"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 111,
-            "column" : 8,
-            "source_fragment" : "drop=true"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.term_disabled",
-      "id" : 22,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 155,
-            "column" : 36,
-            "source_fragment" : "2w0x0; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 108,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 109,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "mark_to_drop",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "standard_metadata"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 110,
-            "column" : 8,
-            "source_fragment" : "mark_to_drop(smeta)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_drop"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 111,
-            "column" : 8,
-            "source_fragment" : "drop=true"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.term_enabled_v4",
-      "id" : 23,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["ethernet", "eth_type"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x0800"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 110,
-            "column" : 31,
-            "source_fragment" : "0x0800; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x0800"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 110,
-            "column" : 31,
-            "source_fragment" : "0x0800; ..."
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "pppoe"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 100,
-            "column" : 8,
-            "source_fragment" : "hdr.pppoe.setInvalid()"
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 101,
-            "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.setInvalid()"
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "inner_vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 102,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.upstream.c_terminated"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 103,
-            "column" : 8,
-            "source_fragment" : "c_terminated.count(fmeta.bng.line_id)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.upstream.term_enabled_v6",
-      "id" : 24,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["ethernet", "eth_type"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x86dd"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 111,
-            "column" : 31,
-            "source_fragment" : "0x86dd; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x86dd"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 111,
-            "column" : 31,
-            "source_fragment" : "0x86dd; ..."
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "pppoe"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 100,
-            "column" : 8,
-            "source_fragment" : "hdr.pppoe.setInvalid()"
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 101,
-            "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.setInvalid()"
-          }
-        },
-        {
-          "op" : "remove_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "inner_vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 102,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.upstream.c_terminated"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 103,
-            "column" : 8,
-            "source_fragment" : "c_terminated.count(fmeta.bng.line_id)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.set_line_next",
-      "id" : 25,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "next_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x02"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 157,
-            "column" : 39,
-            "source_fragment" : "2w0x2;; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 195,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 196,
-            "column" : 8,
-            "source_fragment" : "c_line_rx.count(line_id)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 1
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 201,
-            "column" : 22,
-            "source_fragment" : "= next_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 202,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.set_line_next",
-      "id" : 26,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "next_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x02"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 157,
-            "column" : 39,
-            "source_fragment" : "2w0x2;; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 195,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 196,
-            "column" : 8,
-            "source_fragment" : "c_line_rx.count(line_id)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 1
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 201,
-            "column" : 22,
-            "source_fragment" : "= next_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 202,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.set_line_drop",
-      "id" : 27,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x02"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 157,
-            "column" : 39,
-            "source_fragment" : "2w0x2;; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 195,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 196,
-            "column" : 8,
-            "source_fragment" : "c_line_rx.count(line_id)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 207,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 208,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "mark_to_drop",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "standard_metadata"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 209,
-            "column" : 8,
-            "source_fragment" : "mark_to_drop(smeta)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.set_line_drop",
-      "id" : 28,
-      "runtime_data" : [
-        {
-          "name" : "line_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x02"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 157,
-            "column" : 39,
-            "source_fragment" : "2w0x2;; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 195,
-            "column" : 26,
-            "source_fragment" : "= line_id; ..."
-          }
-        },
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 196,
-            "column" : 8,
-            "source_fragment" : "c_line_rx.count(line_id)"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 207,
-            "column" : 30,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 208,
-            "column" : 24,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "mark_to_drop",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "standard_metadata"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 209,
-            "column" : 8,
-            "source_fragment" : "mark_to_drop(smeta)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.qos_prio",
-      "id" : 29,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_prio"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 245,
-            "column" : 8,
-            "source_fragment" : "prio=true"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.qos_prio",
-      "id" : 30,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_prio"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 245,
-            "column" : 8,
-            "source_fragment" : "prio=true"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.qos_besteff",
-      "id" : 31,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "FabricIngress.bng_ingress.downstream.qos_besteff",
-      "id" : 32,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
       "name" : "FabricIngress.process_set_source_sink.int_set_source",
-      "id" : 33,
+      "id" : 18,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3664,7 +2556,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_source24"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_source32"]
             },
             {
               "type" : "expression",
@@ -3692,7 +2584,7 @@
     },
     {
       "name" : "FabricIngress.process_set_source_sink.int_set_sink",
-      "id" : 34,
+      "id" : 19,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3700,7 +2592,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_sink26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_sink34"]
             },
             {
               "type" : "expression",
@@ -3727,8 +2619,8 @@
       ]
     },
     {
-      "name" : "FabricIngress.filtering.deny",
-      "id" : 35,
+      "name" : "FabricIngress.bng_ingress.upstream.punt_to_cpu",
+      "id" : 20,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3736,7 +2628,476 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+              "value" : ["standard_metadata", "egress_spec"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00ff"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 44,
+            "column" : 8,
+            "source_fragment" : "smeta.egress_spec = 255"
+          }
+        },
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.upstream.c_control"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 45,
+            "column" : 8,
+            "source_fragment" : "c_control.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.upstream.term_disabled",
+      "id" : 21,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_type28"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../header.p4",
+            "line" : 155,
+            "column" : 36,
+            "source_fragment" : "2w0x0; ..."
+          }
+        },
+        {
+          "op" : "mark_to_drop",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "standard_metadata"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "mark_to_drop(smeta)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.upstream.term_disabled",
+      "id" : 22,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_type28"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../header.p4",
+            "line" : 155,
+            "column" : 36,
+            "source_fragment" : "2w0x0; ..."
+          }
+        },
+        {
+          "op" : "mark_to_drop",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "standard_metadata"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "mark_to_drop(smeta)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.upstream.term_enabled_v4",
+      "id" : 23,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0800"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 110,
+            "column" : 31,
+            "source_fragment" : "0x0800; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0800"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 110,
+            "column" : 31,
+            "source_fragment" : "0x0800; ..."
+          }
+        },
+        {
+          "op" : "remove_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "pppoe"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.pppoe.setInvalid()"
+          }
+        },
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.upstream.c_terminated"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 70,
+            "column" : 8,
+            "source_fragment" : "c_terminated.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.upstream.term_enabled_v6",
+      "id" : 24,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x86dd"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 111,
+            "column" : 31,
+            "source_fragment" : "0x86dd; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x86dd"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 111,
+            "column" : 31,
+            "source_fragment" : "0x86dd; ..."
+          }
+        },
+        {
+          "op" : "remove_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "pppoe"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.pppoe.setInvalid()"
+          }
+        },
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.upstream.c_terminated"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 70,
+            "column" : 8,
+            "source_fragment" : "c_terminated.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.set_session",
+      "id" : 25,
+      "runtime_data" : [
+        {
+          "name" : "pppoe_session_id",
+          "bitwidth" : 16
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_type28"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x02"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../header.p4",
+            "line" : 157,
+            "column" : 39,
+            "source_fragment" : "2w0x2;; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_pppoe_session_id30"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 157,
+            "column" : 35,
+            "source_fragment" : "= pppoe_session_id; ..."
+          }
+        },
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 158,
+            "column" : 8,
+            "source_fragment" : "c_line_rx.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.drop",
+      "id" : 26,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_type28"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x02"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../header.p4",
+            "line" : 157,
+            "column" : 39,
+            "source_fragment" : "2w0x2;; ..."
+          }
+        },
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.c_line_rx"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 163,
+            "column" : 8,
+            "source_fragment" : "c_line_rx.count(fmeta.bng.line_id)"
+          }
+        },
+        {
+          "op" : "mark_to_drop",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "standard_metadata"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 164,
+            "column" : 8,
+            "source_fragment" : "mark_to_drop(smeta)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.qos_prio",
+      "id" : 27,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.qos_prio",
+      "id" : 28,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.qos_besteff",
+      "id" : 29,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.downstream.qos_besteff",
+      "id" : 30,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricIngress.bng_ingress.set_line",
+      "id" : 31,
+      "runtime_data" : [
+        {
+          "name" : "line_id",
+          "bitwidth" : 32
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 321,
+            "column" : 30,
+            "source_fragment" : "= line_id; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.filtering.deny",
+      "id" : 32,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding14"]
             },
             {
               "type" : "expression",
@@ -3765,7 +3126,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next15"]
             },
             {
               "type" : "expression",
@@ -3793,13 +3154,13 @@
     },
     {
       "name" : "FabricIngress.filtering.permit",
-      "id" : 36,
+      "id" : 33,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricIngress.filtering.permit_with_internal_vlan",
-      "id" : 37,
+      "id" : 34,
       "runtime_data" : [
         {
           "name" : "vlan_id",
@@ -3812,7 +3173,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -3830,7 +3191,7 @@
     },
     {
       "name" : "FabricIngress.filtering.set_forwarding_type",
-      "id" : 38,
+      "id" : 35,
       "runtime_data" : [
         {
           "name" : "fwd_type",
@@ -3843,7 +3204,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+              "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
             },
             {
               "type" : "runtime_data",
@@ -3852,7 +3213,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 83,
+            "line" : 86,
             "column" : 33,
             "source_fragment" : "= fwd_type; ..."
           }
@@ -3861,7 +3222,7 @@
     },
     {
       "name" : "FabricIngress.forwarding.set_next_id_bridging",
-      "id" : 39,
+      "id" : 36,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -3874,7 +3235,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -3892,7 +3253,7 @@
     },
     {
       "name" : "FabricIngress.forwarding.pop_mpls_and_next",
-      "id" : 40,
+      "id" : 37,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -3905,7 +3266,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             },
             {
               "type" : "hexstr",
@@ -3924,7 +3285,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -3942,7 +3303,7 @@
     },
     {
       "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
-      "id" : 41,
+      "id" : 38,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -3955,7 +3316,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -3973,13 +3334,13 @@
     },
     {
       "name" : "FabricIngress.forwarding.nop_routing_v4",
-      "id" : 42,
+      "id" : 39,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricIngress.forwarding.set_next_id_routing_v6",
-      "id" : 43,
+      "id" : 40,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -3992,7 +3353,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -4010,7 +3371,7 @@
     },
     {
       "name" : "FabricIngress.acl.set_next_id_acl",
-      "id" : 44,
+      "id" : 41,
       "runtime_data" : [
         {
           "name" : "next_id",
@@ -4023,7 +3384,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
             },
             {
               "type" : "runtime_data",
@@ -4041,7 +3402,7 @@
     },
     {
       "name" : "FabricIngress.acl.punt_to_cpu",
-      "id" : 45,
+      "id" : 42,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4068,7 +3429,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next15"]
             },
             {
               "type" : "expression",
@@ -4096,7 +3457,7 @@
     },
     {
       "name" : "FabricIngress.acl.set_clone_session_id",
-      "id" : 46,
+      "id" : 43,
       "runtime_data" : [
         {
           "name" : "clone_id",
@@ -4127,7 +3488,7 @@
     },
     {
       "name" : "FabricIngress.acl.drop",
-      "id" : 47,
+      "id" : 44,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4150,7 +3511,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next15"]
             },
             {
               "type" : "expression",
@@ -4178,13 +3539,13 @@
     },
     {
       "name" : "FabricIngress.acl.nop_acl",
-      "id" : 48,
+      "id" : 45,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricIngress.next.set_vlan",
-      "id" : 49,
+      "id" : 46,
       "runtime_data" : [
         {
           "name" : "vlan_id",
@@ -4197,7 +3558,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -4214,7 +3575,171 @@
       ]
     },
     {
+      "name" : "FabricIngress.next.set_double_vlan",
+      "id" : 47,
+      "runtime_data" : [
+        {
+          "name" : "outer_vlan_id",
+          "bitwidth" : 12
+        },
+        {
+          "name" : "inner_vlan_id",
+          "bitwidth" : 12
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 70,
+            "column" : 32,
+            "source_fragment" : "= vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._push_double_vlan8"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 77,
+            "column" : 41,
+            "source_fragment" : "= true; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 1
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 78,
+            "column" : 38,
+            "source_fragment" : "= inner_vlan_id; ..."
+          }
+        }
+      ]
+    },
+    {
       "name" : "FabricIngress.next.output_xconnect",
+      "id" : 48,
+      "runtime_data" : [
+        {
+          "name" : "port_num",
+          "bitwidth" : 9
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "egress_spec"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 31,
+            "column" : 5,
+            "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.next.set_next_id_xconnect",
+      "id" : 49,
+      "runtime_data" : [
+        {
+          "name" : "next_id",
+          "bitwidth" : 32
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._next_id17"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 112,
+            "column" : 32,
+            "source_fragment" : "= next_id; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.next.output_simple",
       "id" : 50,
       "runtime_data" : [
         {
@@ -4245,70 +3770,8 @@
       ]
     },
     {
-      "name" : "FabricIngress.next.set_next_id_xconnect",
-      "id" : 51,
-      "runtime_data" : [
-        {
-          "name" : "next_id",
-          "bitwidth" : 32
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 100,
-            "column" : 32,
-            "source_fragment" : "= next_id; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricIngress.next.output_simple",
-      "id" : 52,
-      "runtime_data" : [
-        {
-          "name" : "port_num",
-          "bitwidth" : 9
-        }
-      ],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "egress_spec"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 31,
-            "column" : 5,
-            "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
-          }
-        }
-      ]
-    },
-    {
       "name" : "FabricIngress.next.routing_simple",
-      "id" : 53,
+      "id" : 51,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -4385,7 +3848,7 @@
     },
     {
       "name" : "FabricIngress.next.mpls_routing_simple",
-      "id" : 54,
+      "id" : 52,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -4410,7 +3873,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             },
             {
               "type" : "runtime_data",
@@ -4485,7 +3948,7 @@
     },
     {
       "name" : "FabricIngress.next.output_hashed",
-      "id" : 55,
+      "id" : 53,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -4516,7 +3979,7 @@
     },
     {
       "name" : "FabricIngress.next.routing_hashed",
-      "id" : 56,
+      "id" : 54,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -4593,7 +4056,7 @@
     },
     {
       "name" : "FabricIngress.next.mpls_routing_hashed",
-      "id" : 57,
+      "id" : 55,
       "runtime_data" : [
         {
           "name" : "port_num",
@@ -4618,7 +4081,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             },
             {
               "type" : "runtime_data",
@@ -4693,7 +4156,7 @@
     },
     {
       "name" : "FabricIngress.next.set_mcast_group_id",
-      "id" : 58,
+      "id" : 56,
       "runtime_data" : [
         {
           "name" : "group_id",
@@ -4715,7 +4178,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 213,
+            "line" : 225,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -4725,7 +4188,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+              "value" : ["scalars", "fabric_metadata_t._is_multicast18"]
             },
             {
               "type" : "expression",
@@ -4744,7 +4207,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 214,
+            "line" : 226,
             "column" : 37,
             "source_fragment" : "= true; ..."
           }
@@ -4753,7 +4216,7 @@
     },
     {
       "name" : "act",
-      "id" : 59,
+      "id" : 57,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4789,7 +4252,7 @@
     },
     {
       "name" : "act_0",
-      "id" : 60,
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4849,7 +4312,7 @@
     },
     {
       "name" : "act_1",
-      "id" : 61,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4875,7 +4338,7 @@
     },
     {
       "name" : "act_2",
-      "id" : 62,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4897,7 +4360,7 @@
     },
     {
       "name" : "act_3",
-      "id" : 63,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4961,7 +4424,7 @@
     },
     {
       "name" : "act_4",
-      "id" : 64,
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5003,7 +4466,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out19"]
             },
             {
               "type" : "expression",
@@ -5041,7 +4504,7 @@
     },
     {
       "name" : "act_5",
-      "id" : 65,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5049,26 +4512,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "field",
@@ -5077,7 +4521,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 106,
+            "line" : 110,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
@@ -5087,7 +4531,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             },
             {
               "type" : "field",
@@ -5096,7 +4540,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 107,
+            "line" : 111,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
@@ -5106,7 +4550,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             },
             {
               "type" : "field",
@@ -5115,7 +4559,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 112,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
@@ -5124,7 +4568,7 @@
     },
     {
       "name" : "act_6",
-      "id" : 66,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5132,7 +4576,71 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "vlan_id"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 116,
+            "column" : 42,
+            "source_fragment" : "= hdr.inner_vlan_tag.vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_pri10"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "pri"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 117,
+            "column" : 43,
+            "source_fragment" : "= hdr.inner_vlan_tag.pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_cfi11"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "cfi"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 118,
+            "column" : 43,
+            "source_fragment" : "= hdr.inner_vlan_tag.cfi; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_7",
+      "id" : 65,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl13"]
             },
             {
               "type" : "hexstr",
@@ -5141,7 +4649,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
@@ -5149,7 +4657,33 @@
       ]
     },
     {
-      "name" : "act_7",
+      "name" : "act_8",
+      "id" : 66,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8847"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 108,
+            "column" : 31,
+            "source_fragment" : "0x8847; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_9",
       "id" : 67,
       "runtime_data" : [],
       "primitives" : [
@@ -5158,6 +4692,84 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "= hdr.inner_vlan_tag.eth_type; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_10",
+      "id" : 68,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_11",
+      "id" : 69,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "= hdr.ethernet.eth_type; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_12",
+      "id" : 70,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "spgw_ingress_tmp"]
             },
             {
@@ -5179,8 +4791,8 @@
       ]
     },
     {
-      "name" : "act_8",
-      "id" : 68,
+      "name" : "act_13",
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5209,8 +4821,8 @@
       ]
     },
     {
-      "name" : "act_9",
-      "id" : 69,
+      "name" : "act_14",
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5231,8 +4843,8 @@
       ]
     },
     {
-      "name" : "act_10",
-      "id" : 70,
+      "name" : "act_15",
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5240,7 +4852,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction23"]
             },
             {
               "type" : "hexstr",
@@ -5257,8 +4869,8 @@
       ]
     },
     {
-      "name" : "act_11",
-      "id" : 71,
+      "name" : "act_16",
+      "id" : 74,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5287,8 +4899,8 @@
       ]
     },
     {
-      "name" : "act_12",
-      "id" : 72,
+      "name" : "act_17",
+      "id" : 75,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5317,8 +4929,8 @@
       ]
     },
     {
-      "name" : "act_13",
-      "id" : 73,
+      "name" : "act_18",
+      "id" : 76,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5326,7 +4938,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction23"]
             },
             {
               "type" : "hexstr",
@@ -5343,8 +4955,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 74,
+      "name" : "act_19",
+      "id" : 77,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5352,7 +4964,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction23"]
             },
             {
               "type" : "hexstr",
@@ -5398,8 +5010,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 75,
+      "name" : "act_20",
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5428,8 +5040,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 76,
+      "name" : "act_21",
+      "id" : 79,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5437,7 +5049,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len24"]
             },
             {
               "type" : "field",
@@ -5454,628 +5066,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 77,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type21"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x01"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../header.p4",
-            "line" : 156,
-            "column" : 37,
-            "source_fragment" : "2w0x1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_drop"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 47,
-            "column" : 4,
-            "source_fragment" : "bool drop = false;"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_18",
-      "id" : 78,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_19",
-      "id" : 79,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_20",
-      "id" : 80,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 157,
-            "column" : 12,
-            "source_fragment" : "return"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_21",
-      "id" : 81,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.upstream.c_dropped"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 163,
-            "column" : 16,
-            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
-          }
-        }
-      ]
-    },
-    {
       "name" : "act_22",
-      "id" : 82,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "key_0"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "&",
-                      "left" : {
-                        "type" : "expression",
-                        "value" : {
-                          "op" : ">>",
-                          "left" : {
-                            "type" : "field",
-                            "value" : ["ipv6", "src_addr"]
-                          },
-                          "right" : {
-                            "type" : "hexstr",
-                            "value" : "0x40"
-                          }
-                        }
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0xffffffffffffffffffffffffffffffff"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffffffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 140,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv6.src_addr[127:64]"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_23",
-      "id" : 83,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "count",
-          "parameters" : [
-            {
-              "type" : "counter_array",
-              "value" : "FabricIngress.bng_ingress.upstream.c_dropped"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 170,
-            "column" : 16,
-            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_24",
-      "id" : 84,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_25",
-      "id" : 85,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_26",
-      "id" : 86,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "execute_meter",
-          "parameters" : [
-            {
-              "type" : "meter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.m_prio"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result23"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 293,
-            "column" : 20,
-            "source_fragment" : "m_prio.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_27",
-      "id" : 87,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "execute_meter",
-          "parameters" : [
-            {
-              "type" : "meter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.m_besteff"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result23"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 296,
-            "column" : 20,
-            "source_fragment" : "m_besteff.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_28",
-      "id" : 88,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_tmp_0"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_29",
-      "id" : 89,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_tmp_0"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_30",
-      "id" : 90,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "key_1"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "&",
-                      "left" : {
-                        "type" : "expression",
-                        "value" : {
-                          "op" : ">>",
-                          "left" : {
-                            "type" : "field",
-                            "value" : ["ipv6", "dst_addr"]
-                          },
-                          "right" : {
-                            "type" : "hexstr",
-                            "value" : "0x40"
-                          }
-                        }
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0xffffffffffffffffffffffffffffffff"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffffffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 228,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv6.dst_addr[127:64]"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_31",
-      "id" : 91,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "execute_meter",
-          "parameters" : [
-            {
-              "type" : "meter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.m_prio"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result23"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 307,
-            "column" : 20,
-            "source_fragment" : "m_prio.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_32",
-      "id" : 92,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "execute_meter",
-          "parameters" : [
-            {
-              "type" : "meter_array",
-              "value" : "FabricIngress.bng_ingress.downstream.m_besteff"
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result23"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 310,
-            "column" : 20,
-            "source_fragment" : "m_besteff.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_33",
-      "id" : 93,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_downstream_prio"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 190,
-            "column" : 4,
-            "source_fragment" : "bool prio = false;"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_34",
-      "id" : 94,
+      "id" : 80,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6132,8 +5124,8 @@
       ]
     },
     {
-      "name" : "act_35",
-      "id" : 95,
+      "name" : "act_23",
+      "id" : 81,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6190,8 +5182,8 @@
       ]
     },
     {
-      "name" : "act_36",
-      "id" : 96,
+      "name" : "act_24",
+      "id" : 82,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6216,10 +5208,530 @@
       ]
     },
     {
-      "name" : "nop",
+      "name" : "act_25",
+      "id" : 83,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_s_tag"]
+            },
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "vlan_id"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 339,
+            "column" : 16,
+            "source_fragment" : "s_tag = hdr.vlan_tag.vlan_id"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_c_tag"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "vlan_id"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 340,
+            "column" : 16,
+            "source_fragment" : "c_tag = hdr.inner_vlan_tag.vlan_id"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_26",
+      "id" : 84,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_s_tag"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 344,
+            "column" : 16,
+            "source_fragment" : "s_tag = fmeta.vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_c_tag"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 345,
+            "column" : 16,
+            "source_fragment" : "c_tag = fmeta.inner_vlan_id; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_27",
+      "id" : 85,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_28",
+      "id" : 86,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_29",
+      "id" : 87,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_type28"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../header.p4",
+            "line" : 156,
+            "column" : 37,
+            "source_fragment" : "2w0x1; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_30",
+      "id" : 88,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 124,
+            "column" : 12,
+            "source_fragment" : "return"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_31",
+      "id" : 89,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.upstream.c_dropped"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 129,
+            "column" : 20,
+            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_32",
+      "id" : 90,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "count",
+          "parameters" : [
+            {
+              "type" : "counter_array",
+              "value" : "FabricIngress.bng_ingress.upstream.c_dropped"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 137,
+            "column" : 19,
+            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_33",
+      "id" : 91,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "key_0"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "&",
+                      "left" : {
+                        "type" : "expression",
+                        "value" : {
+                          "op" : ">>",
+                          "left" : {
+                            "type" : "field",
+                            "value" : ["ipv6", "src_addr"]
+                          },
+                          "right" : {
+                            "type" : "hexstr",
+                            "value" : "0x40"
+                          }
+                        }
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0xffffffffffffffffffffffffffffffff"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffffffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "hdr.ipv6.src_addr[127:64]"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_34",
+      "id" : 92,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_downstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_35",
+      "id" : 93,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "bng_ingress_downstream_tmp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_36",
+      "id" : 94,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "execute_meter",
+          "parameters" : [
+            {
+              "type" : "meter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.m_prio"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result31"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 236,
+            "column" : 24,
+            "source_fragment" : "m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_37",
+      "id" : 95,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "execute_meter",
+          "parameters" : [
+            {
+              "type" : "meter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.m_besteff"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result31"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 239,
+            "column" : 24,
+            "source_fragment" : "m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_38",
+      "id" : 96,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "execute_meter",
+          "parameters" : [
+            {
+              "type" : "meter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.m_prio"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result31"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 248,
+            "column" : 24,
+            "source_fragment" : "m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_39",
       "id" : 97,
       "runtime_data" : [],
-      "primitives" : []
+      "primitives" : [
+        {
+          "op" : "execute_meter",
+          "parameters" : [
+            {
+              "type" : "meter_array",
+              "value" : "FabricIngress.bng_ingress.downstream.m_besteff"
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result31"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 251,
+            "column" : 24,
+            "source_fragment" : "m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          }
+        }
+      ]
     },
     {
       "name" : "nop",
@@ -6499,7 +6011,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr19"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr26"]
             }
           ],
           "source_info" : {
@@ -6518,7 +6030,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr20"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr27"]
             }
           ],
           "source_info" : {
@@ -6619,7 +6131,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6818,7 +6330,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len24"]
             }
           ],
           "source_info" : {
@@ -6837,7 +6349,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid18"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid25"]
             }
           ],
           "source_info" : {
@@ -6852,75 +6364,13 @@
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v4",
       "id" : 105,
-      "runtime_data" : [
-        {
-          "name" : "c_tag",
-          "bitwidth" : 12
-        },
-        {
-          "name" : "pppoe_session_id",
-          "bitwidth" : 16
-        }
-      ],
+      "runtime_data" : [],
       "primitives" : [
         {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x8100"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 107,
-            "column" : 31,
-            "source_fragment" : "0x8100; ..."
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "inner_vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 331,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["inner_vlan_tag", "vlan_id"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 332,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.vlan_id = c_tag; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
               "value" : ["inner_vlan_tag", "eth_type"]
             },
             {
@@ -6945,7 +6395,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 334,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.setValid()"
           }
@@ -6964,7 +6414,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 335,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.version = 4w1"
           }
@@ -6983,7 +6433,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 336,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.type_id = 4w1"
           }
@@ -7002,7 +6452,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 337,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.code = 8w0"
           }
@@ -7015,15 +6465,15 @@
               "value" : ["pppoe", "session_id"]
             },
             {
-              "type" : "runtime_data",
-              "value" : 1
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_pppoe_session_id30"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 338,
+            "line" : 275,
             "column" : 8,
-            "source_fragment" : "hdr.pppoe.session_id = pppoe_session_id; ..."
+            "source_fragment" : "hdr.pppoe.session_id = fmeta.bng.pppoe_session_id; ..."
           }
         },
         {
@@ -7035,12 +6485,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 339,
+            "line" : 276,
             "column" : 8,
             "source_fragment" : "c_line_tx.count(fmeta.bng.line_id)"
           }
@@ -7082,7 +6532,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 344,
+            "line" : 281,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.length = hdr.ipv4.total_len + 16w2"
           }
@@ -7111,75 +6561,13 @@
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v6",
       "id" : 106,
-      "runtime_data" : [
-        {
-          "name" : "c_tag",
-          "bitwidth" : 12
-        },
-        {
-          "name" : "pppoe_session_id",
-          "bitwidth" : 16
-        }
-      ],
+      "runtime_data" : [],
       "primitives" : [
         {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x8100"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 107,
-            "column" : 31,
-            "source_fragment" : "0x8100; ..."
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "inner_vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 331,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["inner_vlan_tag", "vlan_id"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 0
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 332,
-            "column" : 8,
-            "source_fragment" : "hdr.inner_vlan_tag.vlan_id = c_tag; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
               "value" : ["inner_vlan_tag", "eth_type"]
             },
             {
@@ -7204,7 +6592,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 334,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.setValid()"
           }
@@ -7223,7 +6611,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 335,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.version = 4w1"
           }
@@ -7242,7 +6630,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 336,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.type_id = 4w1"
           }
@@ -7261,7 +6649,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 337,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.code = 8w0"
           }
@@ -7274,15 +6662,15 @@
               "value" : ["pppoe", "session_id"]
             },
             {
-              "type" : "runtime_data",
-              "value" : 1
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_pppoe_session_id30"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 338,
+            "line" : 275,
             "column" : 8,
-            "source_fragment" : "hdr.pppoe.session_id = pppoe_session_id; ..."
+            "source_fragment" : "hdr.pppoe.session_id = fmeta.bng.pppoe_session_id; ..."
           }
         },
         {
@@ -7294,12 +6682,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id22"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id29"]
             }
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 339,
+            "line" : 276,
             "column" : 8,
             "source_fragment" : "c_line_tx.count(fmeta.bng.line_id)"
           }
@@ -7341,7 +6729,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 351,
+            "line" : 288,
             "column" : 8,
             "source_fragment" : "hdr.pppoe.length = hdr.ipv6.payload_len + 16w42"
           }
@@ -7728,7 +7116,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+              "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
             }
           ],
           "source_info" : {
@@ -7877,7 +7265,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_transit25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_transit33"]
             },
             {
               "type" : "expression",
@@ -7906,7 +7294,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             },
             {
               "type" : "runtime_data",
@@ -8004,7 +7392,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -8018,7 +7406,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8046,7 +7434,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -8060,7 +7448,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8129,7 +7517,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -8143,7 +7531,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8171,7 +7559,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -8185,7 +7573,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8320,7 +7708,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -8334,7 +7722,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8362,7 +7750,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -8376,7 +7764,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8490,7 +7878,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -8504,7 +7892,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8532,7 +7920,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -8546,7 +7934,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8726,7 +8114,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -8740,7 +8128,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8768,7 +8156,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -8782,7 +8170,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8930,7 +8318,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -8944,7 +8332,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8972,7 +8360,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -8986,7 +8374,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9200,7 +8588,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -9214,7 +8602,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9242,7 +8630,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -9256,7 +8644,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9310,7 +8698,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -9325,7 +8713,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -9339,7 +8727,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9367,7 +8755,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -9381,7 +8769,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9501,7 +8889,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -9516,7 +8904,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -9530,7 +8918,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9558,7 +8946,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -9572,7 +8960,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9660,7 +9048,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -9675,7 +9063,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -9689,7 +9077,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9717,7 +9105,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -9731,7 +9119,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9885,7 +9273,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -9900,7 +9288,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -9914,7 +9302,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9942,7 +9330,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -9956,7 +9344,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10089,7 +9477,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -10104,7 +9492,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -10118,7 +9506,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10146,7 +9534,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -10160,7 +9548,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10359,7 +9747,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -10374,7 +9762,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -10388,7 +9776,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10416,7 +9804,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -10430,7 +9818,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10597,7 +9985,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -10612,7 +10000,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -10626,7 +10014,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10654,7 +10042,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -10668,7 +10056,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10901,7 +10289,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id35"]
             }
           ],
           "source_info" : {
@@ -10916,7 +10304,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -10930,7 +10318,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10958,7 +10346,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -10972,7 +10360,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11047,7 +10435,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -11061,7 +10449,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11089,7 +10477,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -11103,7 +10491,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11191,7 +10579,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -11205,7 +10593,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11233,7 +10621,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -11247,7 +10635,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11369,7 +10757,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -11383,7 +10771,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11411,7 +10799,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -11425,7 +10813,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11517,7 +10905,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -11531,7 +10919,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11559,7 +10947,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -11573,7 +10961,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11699,7 +11087,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -11713,7 +11101,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11741,7 +11129,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -11755,7 +11143,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11900,7 +11288,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -11914,7 +11302,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -11942,7 +11330,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -11956,7 +11344,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12135,7 +11523,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -12149,7 +11537,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12177,7 +11565,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -12191,7 +11579,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12260,7 +11648,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -12274,7 +11662,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12302,7 +11690,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -12316,7 +11704,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12419,7 +11807,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -12433,7 +11821,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12461,7 +11849,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -12475,7 +11863,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12597,7 +11985,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -12611,7 +11999,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12639,7 +12027,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -12653,7 +12041,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12809,7 +12197,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -12823,7 +12211,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12851,7 +12239,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -12865,7 +12253,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -12991,7 +12379,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -13005,7 +12393,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13033,7 +12421,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -13047,7 +12435,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13207,7 +12595,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -13221,7 +12609,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13249,7 +12637,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -13263,7 +12651,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13442,7 +12830,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -13456,7 +12844,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13484,7 +12872,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -13498,7 +12886,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13711,7 +13099,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
             },
             {
               "type" : "expression",
@@ -13725,7 +13113,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -13753,7 +13141,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
             },
             {
               "type" : "expression",
@@ -13767,7 +13155,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -14830,7 +14218,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 252,
+            "line" : 264,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -14840,17 +14228,17 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+              "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 254,
-            "column" : 33,
+            "line" : 266,
+            "column" : 38,
             "source_fragment" : "= fabric_metadata.ip_eth_type; ..."
           }
         }
@@ -14871,7 +14259,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 259,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -14885,12 +14273,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 260,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
@@ -14909,7 +14297,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 261,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -14928,7 +14316,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 262,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -14942,12 +14330,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl13"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 263,
+            "line" : 275,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
@@ -14957,7 +14345,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -14988,7 +14376,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 271,
+            "line" : 283,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -15002,12 +14390,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 272,
+            "line" : 284,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -15021,12 +14409,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 285,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -15040,14 +14428,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 286,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -15059,12 +14447,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 287,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -15091,11 +14479,245 @@
       ]
     },
     {
-      "name" : "FabricEgress.egress_next.pop_vlan",
+      "name" : "FabricEgress.egress_next.push_vlan",
       "id" : 147,
       "runtime_data" : [],
       "primitives" : [
         {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 283,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "cfi"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 284,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "pri"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 285,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 286,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "vlan_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 287,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.egress_next.push_inner_vlan",
+      "id" : 148,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "inner_vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 296,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "cfi"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_cfi11"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 297,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.cfi = fabric_metadata.inner_vlan_cfi; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "pri"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_pri10"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 298,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.pri = fabric_metadata.inner_vlan_pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "vlan_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._inner_vlan_id9"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 299,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.vlan_id = fabric_metadata.inner_vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 300,
+            "column" : 8,
+            "source_fragment" : "hdr.inner_vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.egress_next.pop_vlan",
+      "id" : 149,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "assign",
           "parameters" : [
             {
@@ -15104,14 +14726,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 312,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -15124,7 +14746,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -15132,8 +14754,8 @@
       ]
     },
     {
-      "name" : "act_37",
-      "id" : 148,
+      "name" : "act_40",
+      "id" : 150,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15149,8 +14771,8 @@
       ]
     },
     {
-      "name" : "act_38",
-      "id" : 149,
+      "name" : "act_41",
+      "id" : 151,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15200,8 +14822,8 @@
       ]
     },
     {
-      "name" : "act_39",
-      "id" : 150,
+      "name" : "act_42",
+      "id" : 152,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15214,7 +14836,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -15222,8 +14844,8 @@
       ]
     },
     {
-      "name" : "act_40",
-      "id" : 151,
+      "name" : "act_43",
+      "id" : 153,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15252,8 +14874,8 @@
       ]
     },
     {
-      "name" : "act_41",
-      "id" : 152,
+      "name" : "act_44",
+      "id" : 154,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15282,8 +14904,30 @@
       ]
     },
     {
-      "name" : "act_42",
-      "id" : 153,
+      "name" : "act_45",
+      "id" : 155,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "remove_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "inner_vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 350,
+            "column" : 12,
+            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_46",
+      "id" : 156,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15296,7 +14940,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -15304,8 +14948,8 @@
       ]
     },
     {
-      "name" : "act_43",
-      "id" : 154,
+      "name" : "act_47",
+      "id" : 157,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15345,7 +14989,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -15353,8 +14997,8 @@
       ]
     },
     {
-      "name" : "act_44",
-      "id" : 155,
+      "name" : "act_48",
+      "id" : 158,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15367,7 +15011,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -15375,8 +15019,8 @@
       ]
     },
     {
-      "name" : "act_45",
-      "id" : 156,
+      "name" : "act_49",
+      "id" : 159,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15416,7 +15060,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -15424,8 +15068,8 @@
       ]
     },
     {
-      "name" : "act_46",
-      "id" : 157,
+      "name" : "act_50",
+      "id" : 160,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15438,7 +15082,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 336,
+            "line" : 376,
             "column" : 45,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -15446,8 +15090,8 @@
       ]
     },
     {
-      "name" : "act_47",
-      "id" : 158,
+      "name" : "act_51",
+      "id" : 161,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15487,7 +15131,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 335,
+            "line" : 375,
             "column" : 16,
             "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1"
           }
@@ -15495,8 +15139,8 @@
       ]
     },
     {
-      "name" : "act_48",
-      "id" : 159,
+      "name" : "act_52",
+      "id" : 162,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15525,8 +15169,8 @@
       ]
     },
     {
-      "name" : "act_49",
-      "id" : 160,
+      "name" : "act_53",
+      "id" : 163,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15561,8 +15205,8 @@
       ]
     },
     {
-      "name" : "act_50",
-      "id" : 161,
+      "name" : "act_54",
+      "id" : 164,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15588,7 +15232,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       }
                     }
                   },
@@ -15610,8 +15254,8 @@
       ]
     },
     {
-      "name" : "act_51",
-      "id" : 162,
+      "name" : "act_55",
+      "id" : 165,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15659,8 +15303,8 @@
       ]
     },
     {
-      "name" : "act_52",
-      "id" : 163,
+      "name" : "act_56",
+      "id" : 166,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15686,7 +15330,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes37"]
                       }
                     }
                   },
@@ -15708,8 +15352,8 @@
       ]
     },
     {
-      "name" : "act_53",
-      "id" : 164,
+      "name" : "act_57",
+      "id" : 167,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15735,7 +15379,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words36"]
                       }
                     }
                   },
@@ -15785,14 +15429,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60],
+          "action_ids" : [58],
           "actions" : ["act_0"],
           "base_default_next" : "node_3",
           "next_tables" : {
             "act_0" : "node_3"
           },
           "default_entry" : {
-            "action_id" : 60,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15814,14 +15458,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59],
+          "action_ids" : [57],
           "actions" : ["act"],
           "base_default_next" : "node_5",
           "next_tables" : {
             "act" : "node_5"
           },
           "default_entry" : {
-            "action_id" : 59,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15843,14 +15487,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
+          "action_ids" : [61],
           "actions" : ["act_3"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_3" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15872,14 +15516,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
+          "action_ids" : [59],
           "actions" : ["act_1"],
           "base_default_next" : "node_10",
           "next_tables" : {
             "act_1" : "node_10"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15901,14 +15545,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
+          "action_ids" : [60],
           "actions" : ["act_2"],
           "base_default_next" : "node_10",
           "next_tables" : {
             "act_2" : "node_10"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 60,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15930,14 +15574,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
+          "action_ids" : [62],
           "actions" : ["act_4"],
           "base_default_next" : "node_12",
           "next_tables" : {
             "act_4" : "node_12"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15948,9 +15592,9 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+            "line" : 110,
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -15959,14 +15603,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
+          "action_ids" : [63],
           "actions" : ["act_5"],
           "base_default_next" : "node_14",
           "next_tables" : {
             "act_5" : "node_14"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15977,7 +15621,36 @@
           "id" : 7,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 116,
+            "column" : 42,
+            "source_fragment" : "= hdr.inner_vlan_tag.vlan_id; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [64],
+          "actions" : ["act_6"],
+          "base_default_next" : "node_16",
+          "next_tables" : {
+            "act_6" : "node_16"
+          },
+          "default_entry" : {
+            "action_id" : 64,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_7",
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -15988,11 +15661,40 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
+          "action_ids" : [65],
+          "actions" : ["act_7"],
+          "base_default_next" : "node_18",
+          "next_tables" : {
+            "act_7" : "node_18"
+          },
+          "default_entry" : {
+            "action_id" : 65,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_8",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 131,
+            "column" : 42,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
           "action_ids" : [66],
-          "actions" : ["act_6"],
+          "actions" : ["act_8"],
           "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
           "next_tables" : {
-            "act_6" : "FabricIngress.filtering.ingress_port_vlan"
+            "act_8" : "FabricIngress.filtering.ingress_port_vlan"
           },
           "default_entry" : {
             "action_id" : 66,
@@ -16002,11 +15704,98 @@
           }
         },
         {
-          "name" : "FabricIngress.filtering.ingress_port_vlan",
-          "id" : 8,
+          "name" : "tbl_act_9",
+          "id" : 10,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 51,
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [67],
+          "actions" : ["act_9"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_9" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 67,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_10",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [68],
+          "actions" : ["act_10"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_10" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 68,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_11",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [69],
+          "actions" : ["act_11"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_11" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 69,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "id" : 13,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 53,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -16028,15 +15817,21 @@
               "name" : "vlan_id",
               "target" : ["vlan_tag", "vlan_id"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "inner_vlan_id",
+              "target" : ["inner_vlan_tag", "vlan_id"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
           "type" : "simple",
-          "max_size" : 1024,
+          "max_size" : 8192,
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [35, 36, 37],
+          "action_ids" : [32, 33, 34],
           "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"],
           "base_default_next" : "FabricIngress.filtering.fwd_classifier",
           "next_tables" : {
@@ -16045,7 +15840,7 @@
             "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier"
           },
           "default_entry" : {
-            "action_id" : 35,
+            "action_id" : 32,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16053,10 +15848,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 9,
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 87,
+            "line" : 90,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -16075,8 +15870,20 @@
             },
             {
               "match_type" : "exact",
-              "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "name" : "is_ipv4",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv41"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_ipv6",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv62"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_mpls",
+              "target" : ["scalars", "fabric_metadata_t._is_mpls3"],
               "mask" : null
             }
           ],
@@ -16086,22 +15893,22 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [38],
+          "action_ids" : [35],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "tbl_act_7",
+          "base_default_next" : "tbl_act_12",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "tbl_act_7"
+            "FabricIngress.filtering.set_forwarding_type" : "tbl_act_12"
           },
           "default_entry" : {
-            "action_id" : 38,
+            "action_id" : 35,
             "action_const" : true,
             "action_data" : ["0x0"],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_7",
-          "id" : 10,
+          "name" : "tbl_act_12",
+          "id" : 15,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -16109,14 +15916,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [75],
-          "actions" : ["act_15"],
-          "base_default_next" : "node_19",
+          "action_ids" : [78],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_28",
           "next_tables" : {
-            "act_15" : "node_19"
+            "act_20" : "node_28"
           },
           "default_entry" : {
-            "action_id" : 75,
+            "action_id" : 78,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16124,7 +15931,7 @@
         },
         {
           "name" : "FabricIngress.spgw_ingress.s1u_filter_table",
-          "id" : 11,
+          "id" : 16,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 83,
@@ -16149,8 +15956,8 @@
           "actions" : ["nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_8",
-            "__MISS__" : "tbl_act_9"
+            "__HIT__" : "tbl_act_13",
+            "__MISS__" : "tbl_act_14"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -16160,8 +15967,8 @@
           }
         },
         {
-          "name" : "tbl_act_8",
-          "id" : 12,
+          "name" : "tbl_act_13",
+          "id" : 17,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -16169,22 +15976,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [67],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_23",
+          "action_ids" : [70],
+          "actions" : ["act_12"],
+          "base_default_next" : "node_32",
           "next_tables" : {
-            "act_7" : "node_23"
+            "act_12" : "node_32"
           },
           "default_entry" : {
-            "action_id" : 67,
+            "action_id" : 70,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_9",
-          "id" : 13,
+          "name" : "tbl_act_14",
+          "id" : 18,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -16192,22 +15999,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [68],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_23",
+          "action_ids" : [71],
+          "actions" : ["act_13"],
+          "base_default_next" : "node_32",
           "next_tables" : {
-            "act_8" : "node_23"
+            "act_13" : "node_32"
           },
           "default_entry" : {
-            "action_id" : 68,
+            "action_id" : 71,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_10",
-          "id" : 14,
+          "name" : "tbl_act_15",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 149,
@@ -16221,22 +16028,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [69],
-          "actions" : ["act_9"],
-          "base_default_next" : "tbl_act_11",
+          "action_ids" : [72],
+          "actions" : ["act_14"],
+          "base_default_next" : "tbl_act_16",
           "next_tables" : {
-            "act_9" : "tbl_act_11"
+            "act_14" : "tbl_act_16"
           },
           "default_entry" : {
-            "action_id" : 69,
+            "action_id" : 72,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_11",
-          "id" : 15,
+          "name" : "tbl_act_16",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 151,
@@ -16250,14 +16057,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [70],
-          "actions" : ["act_10"],
+          "action_ids" : [73],
+          "actions" : ["act_15"],
           "base_default_next" : "tbl_spgw_ingress_gtpu_decap",
           "next_tables" : {
-            "act_10" : "tbl_spgw_ingress_gtpu_decap"
+            "act_15" : "tbl_spgw_ingress_gtpu_decap"
           },
           "default_entry" : {
-            "action_id" : 70,
+            "action_id" : 73,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16265,7 +16072,7 @@
         },
         {
           "name" : "tbl_spgw_ingress_gtpu_decap",
-          "id" : 16,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 152,
@@ -16279,14 +16086,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [17],
+          "action_ids" : [16],
           "actions" : ["FabricIngress.spgw_ingress.gtpu_decap"],
-          "base_default_next" : "node_33",
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "FabricIngress.spgw_ingress.gtpu_decap" : "node_33"
+            "FabricIngress.spgw_ingress.gtpu_decap" : "node_42"
           },
           "default_entry" : {
-            "action_id" : 17,
+            "action_id" : 16,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16294,7 +16101,7 @@
         },
         {
           "name" : "FabricIngress.spgw_ingress.dl_sess_lookup",
-          "id" : 17,
+          "id" : 22,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 70,
@@ -16315,12 +16122,12 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [18, 0],
+          "action_ids" : [17, 0],
           "actions" : ["FabricIngress.spgw_ingress.set_dl_sess_info", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_12",
-            "__MISS__" : "tbl_act_13"
+            "__HIT__" : "tbl_act_17",
+            "__MISS__" : "tbl_act_18"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -16330,8 +16137,8 @@
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 18,
+          "name" : "tbl_act_17",
+          "id" : 23,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -16339,22 +16146,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [71],
-          "actions" : ["act_11"],
-          "base_default_next" : "node_30",
+          "action_ids" : [74],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_39",
           "next_tables" : {
-            "act_11" : "node_30"
+            "act_16" : "node_39"
           },
           "default_entry" : {
-            "action_id" : 71,
+            "action_id" : 74,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 19,
+          "name" : "tbl_act_18",
+          "id" : 24,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -16362,22 +16169,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [72],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_30",
+          "action_ids" : [75],
+          "actions" : ["act_17"],
+          "base_default_next" : "node_39",
           "next_tables" : {
-            "act_12" : "node_30"
+            "act_17" : "node_39"
           },
           "default_entry" : {
-            "action_id" : 72,
+            "action_id" : 75,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_14",
-          "id" : 20,
+          "name" : "tbl_act_19",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 154,
@@ -16391,22 +16198,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [73],
-          "actions" : ["act_13"],
-          "base_default_next" : "node_33",
+          "action_ids" : [76],
+          "actions" : ["act_18"],
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "act_13" : "node_33"
+            "act_18" : "node_42"
           },
           "default_entry" : {
-            "action_id" : 73,
+            "action_id" : 76,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 21,
+          "name" : "tbl_act_20",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 156,
@@ -16420,22 +16227,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [74],
-          "actions" : ["act_14"],
-          "base_default_next" : "node_33",
+          "action_ids" : [77],
+          "actions" : ["act_19"],
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "act_14" : "node_33"
+            "act_19" : "node_42"
           },
           "default_entry" : {
-            "action_id" : 74,
+            "action_id" : 77,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 22,
+          "name" : "tbl_act_21",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 175,
@@ -16449,172 +16256,11 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [76],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_35",
-          "next_tables" : {
-            "act_16" : "node_35"
-          },
-          "default_entry" : {
-            "action_id" : 76,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_17",
-          "id" : 23,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 47,
-            "column" : 4,
-            "source_fragment" : "bool drop = false; ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [77],
-          "actions" : ["act_17"],
-          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_line_map",
-          "next_tables" : {
-            "act_17" : "FabricIngress.bng_ingress.upstream.t_line_map"
-          },
-          "default_entry" : {
-            "action_id" : 77,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_line_map",
-          "id" : 24,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 56,
-            "column" : 10,
-            "source_fragment" : "t_line_map"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "s_tag",
-              "target" : ["vlan_tag", "vlan_id"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "c_tag",
-              "target" : ["inner_vlan_tag", "vlan_id"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 8192,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [2, 19],
-          "actions" : ["nop", "FabricIngress.bng_ingress.upstream.set_line"],
-          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "next_tables" : {
-            "nop" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-            "FabricIngress.bng_ingress.upstream.set_line" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
-          },
-          "default_entry" : {
-            "action_id" : 2,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "id" : 25,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 79,
-            "column" : 10,
-            "source_fragment" : "t_pppoe_cp"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "pppoe_code",
-              "target" : ["pppoe", "code"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "pppoe_protocol",
-              "target" : ["pppoe", "protocol"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "ternary",
-          "type" : "simple",
-          "max_size" : 16,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [20, 3],
-          "actions" : ["FabricIngress.bng_ingress.upstream.punt_to_cpu", "nop"],
-          "base_default_next" : null,
-          "next_tables" : {
-            "__HIT__" : "tbl_act_18",
-            "__MISS__" : "tbl_act_19"
-          },
-          "default_entry" : {
-            "action_id" : 3,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_18",
-          "id" : 26,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [78],
-          "actions" : ["act_18"],
-          "base_default_next" : "node_41",
-          "next_tables" : {
-            "act_18" : "node_41"
-          },
-          "default_entry" : {
-            "action_id" : 78,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_19",
-          "id" : 27,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
           "action_ids" : [79],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_41",
+          "actions" : ["act_21"],
+          "base_default_next" : "node_44",
           "next_tables" : {
-            "act_19" : "node_41"
+            "act_21" : "node_44"
           },
           "default_entry" : {
             "action_id" : 79,
@@ -16624,666 +16270,8 @@
           }
         },
         {
-          "name" : "tbl_act_20",
-          "id" : 28,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 157,
-            "column" : 12,
-            "source_fragment" : "return"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [80],
-          "actions" : ["act_20"],
-          "base_default_next" : "node_43",
-          "next_tables" : {
-            "act_20" : "node_43"
-          },
-          "default_entry" : {
-            "action_id" : 80,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "id" : 29,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 118,
-            "column" : 10,
-            "source_fragment" : "t_pppoe_term_v4"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id22"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "pppoe_session_id",
-              "target" : ["pppoe", "session_id"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 32768,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [23, 21],
-          "actions" : ["FabricIngress.bng_ingress.upstream.term_enabled_v4", "FabricIngress.bng_ingress.upstream.term_disabled"],
-          "base_default_next" : "node_46",
-          "next_tables" : {
-            "FabricIngress.bng_ingress.upstream.term_enabled_v4" : "node_46",
-            "FabricIngress.bng_ingress.upstream.term_disabled" : "node_46"
-          },
-          "default_entry" : {
-            "action_id" : 21,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_21",
-          "id" : 30,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 163,
-            "column" : 16,
-            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [81],
-          "actions" : ["act_21"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_21" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 81,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_22",
-          "id" : 31,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 140,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv6.src_addr[127:64]"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [82],
-          "actions" : ["act_22"],
-          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
-          "next_tables" : {
-            "act_22" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6"
-          },
-          "default_entry" : {
-            "action_id" : 82,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
-          "id" : 32,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 137,
-            "column" : 10,
-            "source_fragment" : "t_pppoe_term_v6"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id22"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "ipv6_src_net_id",
-              "target" : ["scalars", "key_0"],
-              "mask" : null
-            },
-            {
-              "match_type" : "exact",
-              "name" : "pppoe_session_id",
-              "target" : ["pppoe", "session_id"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 32768,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [24, 22],
-          "actions" : ["FabricIngress.bng_ingress.upstream.term_enabled_v6", "FabricIngress.bng_ingress.upstream.term_disabled"],
-          "base_default_next" : "node_51",
-          "next_tables" : {
-            "FabricIngress.bng_ingress.upstream.term_enabled_v6" : "node_51",
-            "FabricIngress.bng_ingress.upstream.term_disabled" : "node_51"
-          },
-          "default_entry" : {
-            "action_id" : 22,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_23",
-          "id" : 33,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 170,
-            "column" : 16,
-            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [83],
-          "actions" : ["act_23"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_23" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 83,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_24",
-          "id" : 34,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 190,
-            "column" : 4,
-            "source_fragment" : "bool prio = false;"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [93],
-          "actions" : ["act_33"],
-          "base_default_next" : "node_54",
-          "next_tables" : {
-            "act_33" : "node_54"
-          },
-          "default_entry" : {
-            "action_id" : 93,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.downstream.t_line_map_v4",
-          "id" : 35,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 212,
-            "column" : 10,
-            "source_fragment" : "t_line_map_v4"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "ipv4_dst",
-              "target" : ["ipv4", "dst_addr"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 32768,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [4, 25, 27],
-          "actions" : ["nop", "FabricIngress.bng_ingress.downstream.set_line_next", "FabricIngress.bng_ingress.downstream.set_line_drop"],
-          "base_default_next" : null,
-          "next_tables" : {
-            "__HIT__" : "tbl_act_25",
-            "__MISS__" : "tbl_act_26"
-          },
-          "default_entry" : {
-            "action_id" : 4,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_25",
-          "id" : 36,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [84],
-          "actions" : ["act_24"],
-          "base_default_next" : "node_58",
-          "next_tables" : {
-            "act_24" : "node_58"
-          },
-          "default_entry" : {
-            "action_id" : 84,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_26",
-          "id" : 37,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [85],
-          "actions" : ["act_25"],
-          "base_default_next" : "node_58",
-          "next_tables" : {
-            "act_25" : "node_58"
-          },
-          "default_entry" : {
-            "action_id" : 85,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "id" : 38,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 252,
-            "column" : 10,
-            "source_fragment" : "t_qos_v4"
-          },
-          "key" : [
-            {
-              "match_type" : "ternary",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id22"],
-              "mask" : null
-            },
-            {
-              "match_type" : "lpm",
-              "name" : "ipv4_src",
-              "target" : ["ipv4", "src_addr"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "ipv4_dscp",
-              "target" : ["ipv4", "dscp"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "ipv4_ecn",
-              "target" : ["ipv4", "ecn"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "ternary",
-          "type" : "simple",
-          "max_size" : 256,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [29, 31],
-          "actions" : ["FabricIngress.bng_ingress.downstream.qos_prio", "FabricIngress.bng_ingress.downstream.qos_besteff"],
-          "base_default_next" : "node_60",
-          "next_tables" : {
-            "FabricIngress.bng_ingress.downstream.qos_prio" : "node_60",
-            "FabricIngress.bng_ingress.downstream.qos_besteff" : "node_60"
-          },
-          "default_entry" : {
-            "action_id" : 31,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_27",
-          "id" : 39,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 293,
-            "column" : 20,
-            "source_fragment" : "m_prio.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [86],
-          "actions" : ["act_26"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_26" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 86,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_28",
-          "id" : 40,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 296,
-            "column" : 20,
-            "source_fragment" : "m_besteff.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [87],
-          "actions" : ["act_27"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_27" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 87,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_29",
-          "id" : 41,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 228,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv6.dst_addr[127:64]"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [90],
-          "actions" : ["act_30"],
-          "base_default_next" : "FabricIngress.bng_ingress.downstream.t_line_map_v6",
-          "next_tables" : {
-            "act_30" : "FabricIngress.bng_ingress.downstream.t_line_map_v6"
-          },
-          "default_entry" : {
-            "action_id" : 90,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.downstream.t_line_map_v6",
-          "id" : 42,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 226,
-            "column" : 10,
-            "source_fragment" : "t_line_map_v6"
-          },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "ipv6_dst_net_id",
-              "target" : ["scalars", "key_1"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 32768,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [5, 26, 28],
-          "actions" : ["nop", "FabricIngress.bng_ingress.downstream.set_line_next", "FabricIngress.bng_ingress.downstream.set_line_drop"],
-          "base_default_next" : null,
-          "next_tables" : {
-            "__HIT__" : "tbl_act_30",
-            "__MISS__" : "tbl_act_31"
-          },
-          "default_entry" : {
-            "action_id" : 5,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_30",
-          "id" : 43,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [88],
-          "actions" : ["act_28"],
-          "base_default_next" : "node_68",
-          "next_tables" : {
-            "act_28" : "node_68"
-          },
-          "default_entry" : {
-            "action_id" : 88,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_31",
-          "id" : 44,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [89],
-          "actions" : ["act_29"],
-          "base_default_next" : "node_68",
-          "next_tables" : {
-            "act_29" : "node_68"
-          },
-          "default_entry" : {
-            "action_id" : 89,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.downstream.t_qos_v6",
-          "id" : 45,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 268,
-            "column" : 10,
-            "source_fragment" : "t_qos_v6"
-          },
-          "key" : [
-            {
-              "match_type" : "ternary",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id22"],
-              "mask" : null
-            },
-            {
-              "match_type" : "lpm",
-              "name" : "ipv6_src",
-              "target" : ["ipv6", "src_addr"],
-              "mask" : null
-            },
-            {
-              "match_type" : "ternary",
-              "name" : "ipv6_traffic_class",
-              "target" : ["ipv6", "traffic_class"],
-              "mask" : null
-            }
-          ],
-          "match_type" : "ternary",
-          "type" : "simple",
-          "max_size" : 256,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [30, 32],
-          "actions" : ["FabricIngress.bng_ingress.downstream.qos_prio", "FabricIngress.bng_ingress.downstream.qos_besteff"],
-          "base_default_next" : "node_70",
-          "next_tables" : {
-            "FabricIngress.bng_ingress.downstream.qos_prio" : "node_70",
-            "FabricIngress.bng_ingress.downstream.qos_besteff" : "node_70"
-          },
-          "default_entry" : {
-            "action_id" : 32,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_32",
-          "id" : 46,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 307,
-            "column" : 20,
-            "source_fragment" : "m_prio.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [91],
-          "actions" : ["act_31"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_31" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 91,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_33",
-          "id" : 47,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 310,
-            "column" : 20,
-            "source_fragment" : "m_besteff.execute_meter((bit<32>)fmeta.bng.line_id, ..."
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [92],
-          "actions" : ["act_32"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_32" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 92,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 48,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 46,
@@ -17294,7 +16282,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -17310,7 +16298,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39, 8],
+          "action_ids" : [36, 7],
           "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -17318,7 +16306,7 @@
             "nop" : "FabricIngress.acl.acl"
           },
           "default_entry" : {
-            "action_id" : 8,
+            "action_id" : 7,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17326,7 +16314,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 49,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 71,
@@ -17337,7 +16325,7 @@
             {
               "match_type" : "exact",
               "name" : "mpls_label",
-              "target" : ["scalars", "fabric_metadata_t._mpls_label5"],
+              "target" : ["scalars", "fabric_metadata_t._mpls_label12"],
               "mask" : null
             }
           ],
@@ -17347,7 +16335,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40, 9],
+          "action_ids" : [37, 8],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -17355,7 +16343,7 @@
             "nop" : "FabricIngress.acl.acl"
           },
           "default_entry" : {
-            "action_id" : 9,
+            "action_id" : 8,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17363,7 +16351,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v4",
-          "id" : 50,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 101,
@@ -17384,7 +16372,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41, 42, 10],
+          "action_ids" : [38, 39, 9],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -17393,7 +16381,7 @@
             "nop" : "FabricIngress.acl.acl"
           },
           "default_entry" : {
-            "action_id" : 10,
+            "action_id" : 9,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17401,7 +16389,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v6",
-          "id" : 51,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 126,
@@ -17422,7 +16410,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43, 11],
+          "action_ids" : [40, 10],
           "actions" : ["FabricIngress.forwarding.set_next_id_routing_v6", "nop"],
           "base_default_next" : "FabricIngress.acl.acl",
           "next_tables" : {
@@ -17430,7 +16418,7 @@
             "nop" : "FabricIngress.acl.acl"
           },
           "default_entry" : {
-            "action_id" : 11,
+            "action_id" : 10,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17438,7 +16426,7 @@
         },
         {
           "name" : "FabricIngress.acl.acl",
-          "id" : 52,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 60,
@@ -17455,19 +16443,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t._ip_proto13"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto20"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport21"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport22"],
               "mask" : null
             },
             {
@@ -17491,7 +16479,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "target" : ["scalars", "fabric_metadata_t._last_eth_type0"],
               "mask" : null
             },
             {
@@ -17525,18 +16513,18 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [44, 45, 46, 47, 48],
+          "action_ids" : [41, 42, 43, 44, 45],
           "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_83",
+          "base_default_next" : "node_54",
           "next_tables" : {
-            "FabricIngress.acl.set_next_id_acl" : "node_83",
-            "FabricIngress.acl.punt_to_cpu" : "node_83",
-            "FabricIngress.acl.set_clone_session_id" : "node_83",
-            "FabricIngress.acl.drop" : "node_83",
-            "FabricIngress.acl.nop_acl" : "node_83"
+            "FabricIngress.acl.set_next_id_acl" : "node_54",
+            "FabricIngress.acl.punt_to_cpu" : "node_54",
+            "FabricIngress.acl.set_clone_session_id" : "node_54",
+            "FabricIngress.acl.drop" : "node_54",
+            "FabricIngress.acl.nop_acl" : "node_54"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17544,10 +16532,10 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 53,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 104,
+            "line" : 116,
             "column" : 10,
             "source_fragment" : "xconnect"
           },
@@ -17561,7 +16549,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -17571,7 +16559,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50, 51, 13],
+          "action_ids" : [48, 49, 12],
           "actions" : ["FabricIngress.next.output_xconnect", "FabricIngress.next.set_next_id_xconnect", "nop"],
           "base_default_next" : "FabricIngress.next.simple",
           "next_tables" : {
@@ -17580,7 +16568,7 @@
             "nop" : "FabricIngress.next.simple"
           },
           "default_entry" : {
-            "action_id" : 13,
+            "action_id" : 12,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17588,10 +16576,10 @@
         },
         {
           "name" : "FabricIngress.next.simple",
-          "id" : 54,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 143,
+            "line" : 155,
             "column" : 10,
             "source_fragment" : "simple"
           },
@@ -17599,7 +16587,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -17609,7 +16597,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52, 53, 54, 14],
+          "action_ids" : [50, 51, 52, 13],
           "actions" : ["FabricIngress.next.output_simple", "FabricIngress.next.routing_simple", "FabricIngress.next.mpls_routing_simple", "nop"],
           "base_default_next" : "FabricIngress.next.hashed",
           "next_tables" : {
@@ -17619,7 +16607,7 @@
             "nop" : "FabricIngress.next.hashed"
           },
           "default_entry" : {
-            "action_id" : 14,
+            "action_id" : 13,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17627,10 +16615,10 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 55,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 184,
+            "line" : 196,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -17638,7 +16626,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -17649,7 +16637,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [55, 56, 57, 15],
+          "action_ids" : [53, 54, 55, 14],
           "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "FabricIngress.next.mpls_routing_hashed", "nop"],
           "base_default_next" : "FabricIngress.next.multicast",
           "next_tables" : {
@@ -17661,10 +16649,10 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 56,
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 218,
+            "line" : 230,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -17672,7 +16660,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -17682,7 +16670,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58, 16],
+          "action_ids" : [56, 15],
           "actions" : ["FabricIngress.next.set_mcast_group_id", "nop"],
           "base_default_next" : "FabricIngress.next.next_vlan",
           "next_tables" : {
@@ -17690,7 +16678,7 @@
             "nop" : "FabricIngress.next.next_vlan"
           },
           "default_entry" : {
-            "action_id" : 16,
+            "action_id" : 15,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17698,10 +16686,10 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 57,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 74,
+            "line" : 82,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -17709,7 +16697,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id17"],
               "mask" : null
             }
           ],
@@ -17719,23 +16707,24 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49, 12],
-          "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_89",
+          "action_ids" : [46, 47, 11],
+          "actions" : ["FabricIngress.next.set_vlan", "FabricIngress.next.set_double_vlan", "nop"],
+          "base_default_next" : "node_60",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_89",
-            "nop" : "node_89"
+            "FabricIngress.next.set_vlan" : "node_60",
+            "FabricIngress.next.set_double_vlan" : "node_60",
+            "nop" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 12,
+            "action_id" : 11,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_34",
-          "id" : 58,
+          "name" : "tbl_act_22",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -17749,22 +16738,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [94],
-          "actions" : ["act_34"],
-          "base_default_next" : "node_91",
+          "action_ids" : [80],
+          "actions" : ["act_22"],
+          "base_default_next" : "node_62",
           "next_tables" : {
-            "act_34" : "node_91"
+            "act_22" : "node_62"
           },
           "default_entry" : {
-            "action_id" : 94,
+            "action_id" : 80,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_35",
-          "id" : 59,
+          "name" : "tbl_act_23",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -17778,14 +16767,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [95],
-          "actions" : ["act_35"],
+          "action_ids" : [81],
+          "actions" : ["act_23"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
-            "act_35" : "FabricIngress.process_set_source_sink.tb_set_source"
+            "act_23" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 95,
+            "action_id" : 81,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17793,7 +16782,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_source",
-          "id" : 60,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 46,
@@ -17814,7 +16803,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [33, 6],
+          "action_ids" : [18, 2],
           "actions" : ["FabricIngress.process_set_source_sink.int_set_source", "nop"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_sink",
           "next_tables" : {
@@ -17822,7 +16811,7 @@
             "nop" : "FabricIngress.process_set_source_sink.tb_set_sink"
           },
           "default_entry" : {
-            "action_id" : 6,
+            "action_id" : 2,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17830,7 +16819,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_sink",
-          "id" : 61,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 67,
@@ -17851,23 +16840,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [34, 7],
+          "action_ids" : [19, 3],
           "actions" : ["FabricIngress.process_set_source_sink.int_set_sink", "nop"],
-          "base_default_next" : "node_95",
+          "base_default_next" : "node_66",
           "next_tables" : {
-            "FabricIngress.process_set_source_sink.int_set_sink" : "node_95",
-            "nop" : "node_95"
+            "FabricIngress.process_set_source_sink.int_set_sink" : "node_66",
+            "nop" : "node_66"
           },
           "default_entry" : {
-            "action_id" : 7,
+            "action_id" : 3,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_36",
-          "id" : 62,
+          "name" : "tbl_act_24",
+          "id" : 42,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 89,
@@ -17881,18 +16870,754 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [96],
+          "action_ids" : [82],
+          "actions" : ["act_24"],
+          "base_default_next" : "node_68",
+          "next_tables" : {
+            "act_24" : "node_68"
+          },
+          "default_entry" : {
+            "action_id" : 82,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_25",
+          "id" : 43,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 339,
+            "column" : 22,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [83],
+          "actions" : ["act_25"],
+          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
+          "next_tables" : {
+            "act_25" : "FabricIngress.bng_ingress.t_line_map"
+          },
+          "default_entry" : {
+            "action_id" : 83,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_26",
+          "id" : 44,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 344,
+            "column" : 22,
+            "source_fragment" : "= fmeta.vlan_id; ..."
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [84],
+          "actions" : ["act_26"],
+          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
+          "next_tables" : {
+            "act_26" : "FabricIngress.bng_ingress.t_line_map"
+          },
+          "default_entry" : {
+            "action_id" : 84,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.t_line_map",
+          "id" : 45,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 324,
+            "column" : 14,
+            "source_fragment" : "t_line_map"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "s_tag",
+              "target" : ["scalars", "bng_ingress_s_tag"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "c_tag",
+              "target" : ["scalars", "bng_ingress_c_tag"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 8192,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [6, 31],
+          "actions" : ["nop", "FabricIngress.bng_ingress.set_line"],
+          "base_default_next" : "node_72",
+          "next_tables" : {
+            "nop" : "node_72",
+            "FabricIngress.bng_ingress.set_line" : "node_72"
+          },
+          "default_entry" : {
+            "action_id" : 6,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_27",
+          "id" : 46,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 353,
+            "column" : 31,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [87],
+          "actions" : ["act_29"],
+          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
+          "next_tables" : {
+            "act_29" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
+          },
+          "default_entry" : {
+            "action_id" : 87,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
+          "id" : 47,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 48,
+            "column" : 10,
+            "source_fragment" : "t_pppoe_cp"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "pppoe_code",
+              "target" : ["pppoe", "code"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "pppoe_protocol",
+              "target" : ["pppoe", "protocol"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "ternary",
+          "type" : "simple",
+          "max_size" : 16,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [20, 4],
+          "actions" : ["FabricIngress.bng_ingress.upstream.punt_to_cpu", "nop"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "__HIT__" : "tbl_act_28",
+            "__MISS__" : "tbl_act_29"
+          },
+          "default_entry" : {
+            "action_id" : 4,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_28",
+          "id" : 48,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [85],
+          "actions" : ["act_27"],
+          "base_default_next" : "node_77",
+          "next_tables" : {
+            "act_27" : "node_77"
+          },
+          "default_entry" : {
+            "action_id" : 85,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_29",
+          "id" : 49,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [86],
+          "actions" : ["act_28"],
+          "base_default_next" : "node_77",
+          "next_tables" : {
+            "act_28" : "node_77"
+          },
+          "default_entry" : {
+            "action_id" : 86,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_30",
+          "id" : 50,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 124,
+            "column" : 12,
+            "source_fragment" : "return"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [88],
+          "actions" : ["act_30"],
+          "base_default_next" : "node_79",
+          "next_tables" : {
+            "act_30" : "node_79"
+          },
+          "default_entry" : {
+            "action_id" : 88,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
+          "id" : 51,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 85,
+            "column" : 10,
+            "source_fragment" : "t_pppoe_term_v4"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id29"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "ipv4_src",
+              "target" : ["ipv4", "src_addr"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "pppoe_session_id",
+              "target" : ["pppoe", "session_id"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 32768,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [23, 21],
+          "actions" : ["FabricIngress.bng_ingress.upstream.term_enabled_v4", "FabricIngress.bng_ingress.upstream.term_disabled"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "FabricIngress.bng_ingress.upstream.term_disabled" : "tbl_act_31",
+            "FabricIngress.bng_ingress.upstream.term_enabled_v4" : null
+          },
+          "default_entry" : {
+            "action_id" : 21,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_31",
+          "id" : 52,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 129,
+            "column" : 20,
+            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [89],
+          "actions" : ["act_31"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_31" : null
+          },
+          "default_entry" : {
+            "action_id" : 89,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_32",
+          "id" : 53,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 110,
+            "column" : 12,
+            "source_fragment" : "hdr.ipv6.src_addr[127:64]"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [91],
+          "actions" : ["act_33"],
+          "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
+          "next_tables" : {
+            "act_33" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6"
+          },
+          "default_entry" : {
+            "action_id" : 91,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
+          "id" : 54,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 107,
+            "column" : 10,
+            "source_fragment" : "t_pppoe_term_v6"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id29"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "ipv6_src_net_id",
+              "target" : ["scalars", "key_0"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "pppoe_session_id",
+              "target" : ["pppoe", "session_id"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 32768,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [24, 22],
+          "actions" : ["FabricIngress.bng_ingress.upstream.term_enabled_v6", "FabricIngress.bng_ingress.upstream.term_disabled"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "FabricIngress.bng_ingress.upstream.term_disabled" : "tbl_act_33",
+            "FabricIngress.bng_ingress.upstream.term_enabled_v6" : null
+          },
+          "default_entry" : {
+            "action_id" : 22,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_33",
+          "id" : 55,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 137,
+            "column" : 19,
+            "source_fragment" : "c_dropped.count(fmeta.bng.line_id)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [90],
+          "actions" : ["act_32"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_32" : null
+          },
+          "default_entry" : {
+            "action_id" : 90,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.downstream.t_line_session_map",
+          "id" : 56,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 167,
+            "column" : 10,
+            "source_fragment" : "t_line_session_map"
+          },
+          "key" : [
+            {
+              "match_type" : "exact",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id29"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 8192,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [5, 25, 26],
+          "actions" : ["nop", "FabricIngress.bng_ingress.downstream.set_session", "FabricIngress.bng_ingress.downstream.drop"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "__HIT__" : "tbl_act_34",
+            "__MISS__" : "tbl_act_35"
+          },
+          "default_entry" : {
+            "action_id" : 5,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_34",
+          "id" : 57,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [92],
+          "actions" : ["act_34"],
+          "base_default_next" : "node_90",
+          "next_tables" : {
+            "act_34" : "node_90"
+          },
+          "default_entry" : {
+            "action_id" : 92,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_35",
+          "id" : 58,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [93],
+          "actions" : ["act_35"],
+          "base_default_next" : "node_90",
+          "next_tables" : {
+            "act_35" : "node_90"
+          },
+          "default_entry" : {
+            "action_id" : 93,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
+          "id" : 59,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 192,
+            "column" : 10,
+            "source_fragment" : "t_qos_v4"
+          },
+          "key" : [
+            {
+              "match_type" : "ternary",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id29"],
+              "mask" : null
+            },
+            {
+              "match_type" : "lpm",
+              "name" : "ipv4_src",
+              "target" : ["ipv4", "src_addr"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ipv4_dscp",
+              "target" : ["ipv4", "dscp"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ipv4_ecn",
+              "target" : ["ipv4", "ecn"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "ternary",
+          "type" : "simple",
+          "max_size" : 256,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [27, 29],
+          "actions" : ["FabricIngress.bng_ingress.downstream.qos_prio", "FabricIngress.bng_ingress.downstream.qos_besteff"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "FabricIngress.bng_ingress.downstream.qos_prio" : "tbl_act_36",
+            "FabricIngress.bng_ingress.downstream.qos_besteff" : "tbl_act_37"
+          },
+          "default_entry" : {
+            "action_id" : 29,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_36",
+          "id" : 60,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 236,
+            "column" : 24,
+            "source_fragment" : "m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [94],
           "actions" : ["act_36"],
           "base_default_next" : null,
           "next_tables" : {
             "act_36" : null
           },
           "default_entry" : {
+            "action_id" : 94,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_37",
+          "id" : 61,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 239,
+            "column" : 24,
+            "source_fragment" : "m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [95],
+          "actions" : ["act_37"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_37" : null
+          },
+          "default_entry" : {
+            "action_id" : 95,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.bng_ingress.downstream.t_qos_v6",
+          "id" : 62,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 208,
+            "column" : 10,
+            "source_fragment" : "t_qos_v6"
+          },
+          "key" : [
+            {
+              "match_type" : "ternary",
+              "name" : "line_id",
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id29"],
+              "mask" : null
+            },
+            {
+              "match_type" : "lpm",
+              "name" : "ipv6_src",
+              "target" : ["ipv6", "src_addr"],
+              "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "ipv6_traffic_class",
+              "target" : ["ipv6", "traffic_class"],
+              "mask" : null
+            }
+          ],
+          "match_type" : "ternary",
+          "type" : "simple",
+          "max_size" : 256,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [28, 30],
+          "actions" : ["FabricIngress.bng_ingress.downstream.qos_prio", "FabricIngress.bng_ingress.downstream.qos_besteff"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "FabricIngress.bng_ingress.downstream.qos_prio" : "tbl_act_38",
+            "FabricIngress.bng_ingress.downstream.qos_besteff" : "tbl_act_39"
+          },
+          "default_entry" : {
+            "action_id" : 30,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_38",
+          "id" : 63,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 248,
+            "column" : 24,
+            "source_fragment" : "m_prio.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [96],
+          "actions" : ["act_38"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_38" : null
+          },
+          "default_entry" : {
             "action_id" : 96,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
+        },
+        {
+          "name" : "tbl_act_39",
+          "id" : 64,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 251,
+            "column" : 24,
+            "source_fragment" : "m_besteff.execute_meter(fmeta.bng.line_id, fmeta.bng.ds_meter_result)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [97],
+          "actions" : ["act_39"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_39" : null
+          },
+          "default_entry" : {
+            "action_id" : 97,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
         }
       ],
       "action_profiles" : [
@@ -17901,7 +17626,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 165,
+            "line" : 177,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -17919,15 +17644,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto20"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport21"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport22"]
               }
             ]
           }
@@ -18039,7 +17764,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 104,
+            "line" : 109,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -18062,7 +17787,30 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 115,
+            "column" : 12,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_6",
+          "false_next" : "node_16"
+        },
+        {
+          "name" : "node_16",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 121,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -18084,12 +17832,81 @@
               }
             }
           },
-          "true_next" : "tbl_act_6",
-          "false_next" : "FabricIngress.filtering.ingress_port_vlan"
+          "true_next" : "tbl_act_7",
+          "false_next" : "node_18"
         },
         {
-          "name" : "node_19",
-          "id" : 6,
+          "name" : "node_18",
+          "id" : 7,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 130,
+            "column" : 12,
+            "source_fragment" : "hdr.mpls.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["mpls", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_8",
+          "false_next" : "node_20"
+        },
+        {
+          "name" : "node_20",
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 133,
+            "column" : 16,
+            "source_fragment" : "hdr.vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "node_21",
+          "false_next" : "tbl_act_11"
+        },
+        {
+          "name" : "node_21",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 135,
+            "column" : 19,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_9",
+          "false_next" : "tbl_act_10"
+        },
+        {
+          "name" : "node_28",
+          "id" : 10,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 144,
@@ -18111,8 +17928,8 @@
           "false_next" : "FabricIngress.spgw_ingress.dl_sess_lookup"
         },
         {
-          "name" : "node_23",
-          "id" : 7,
+          "name" : "node_32",
+          "id" : 11,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 148,
@@ -18137,12 +17954,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_10",
-          "false_next" : "tbl_act_11"
+          "true_next" : "tbl_act_15",
+          "false_next" : "tbl_act_16"
         },
         {
-          "name" : "node_30",
-          "id" : 8,
+          "name" : "node_39",
+          "id" : 12,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -18154,12 +17971,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_14",
-          "false_next" : "tbl_act_15"
+          "true_next" : "tbl_act_19",
+          "false_next" : "tbl_act_20"
         },
         {
-          "name" : "node_33",
-          "id" : 9,
+          "name" : "node_42",
+          "id" : 13,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -18178,337 +17995,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_35"
-        },
-        {
-          "name" : "node_35",
-          "id" : 10,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 385,
-            "column" : 12,
-            "source_fragment" : "hdr.pppoe.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["pppoe", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "tbl_act_17",
-          "false_next" : "tbl_act_24"
-        },
-        {
-          "name" : "node_41",
-          "id" : 11,
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["scalars", "bng_ingress_upstream_tmp"]
-              }
-            }
-          },
-          "true_next" : "tbl_act_20",
-          "false_next" : "node_43"
-        },
-        {
-          "name" : "node_43",
-          "id" : 12,
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "not",
-              "left" : null,
-              "right" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
-                  }
-                }
-              }
-            }
-          },
-          "true_next" : "node_44",
-          "false_next" : "node_73"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_44"
         },
         {
           "name" : "node_44",
-          "id" : 13,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 160,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv4.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["ipv4", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "false_next" : "node_48"
-        },
-        {
-          "name" : "node_46",
           "id" : 14,
           "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 162,
-            "column" : 15,
-            "source_fragment" : "drop == true"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "==",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_upstream_drop"]
-                  }
-                }
-              },
-              "right" : {
-                "type" : "bool",
-                "value" : true
-              }
-            }
-          },
-          "true_next" : "tbl_act_21",
-          "false_next" : "node_73"
-        },
-        {
-          "name" : "node_48",
-          "id" : 15,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 167,
-            "column" : 17,
-            "source_fragment" : "hdr.ipv6.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["ipv6", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "tbl_act_22",
-          "false_next" : "node_73"
-        },
-        {
-          "name" : "node_51",
-          "id" : 16,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 169,
-            "column" : 15,
-            "source_fragment" : "drop == true"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "==",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_upstream_drop"]
-                  }
-                }
-              },
-              "right" : {
-                "type" : "bool",
-                "value" : true
-              }
-            }
-          },
-          "true_next" : "tbl_act_23",
-          "false_next" : "node_73"
-        },
-        {
-          "name" : "node_54",
-          "id" : 17,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 285,
-            "column" : 12,
-            "source_fragment" : "hdr.ipv4.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["ipv4", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.downstream.t_line_map_v4",
-          "false_next" : "node_63"
-        },
-        {
-          "name" : "node_58",
-          "id" : 18,
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["scalars", "bng_ingress_downstream_tmp"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "false_next" : "node_73"
-        },
-        {
-          "name" : "node_60",
-          "id" : 19,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 292,
-            "column" : 20,
-            "source_fragment" : "prio==true"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "==",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_downstream_prio"]
-                  }
-                }
-              },
-              "right" : {
-                "type" : "bool",
-                "value" : true
-              }
-            }
-          },
-          "true_next" : "tbl_act_27",
-          "false_next" : "tbl_act_28"
-        },
-        {
-          "name" : "node_63",
-          "id" : 20,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 303,
-            "column" : 17,
-            "source_fragment" : "hdr.ipv6.isValid()"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["ipv6", "$valid$"]
-              }
-            }
-          },
-          "true_next" : "tbl_act_29",
-          "false_next" : "node_73"
-        },
-        {
-          "name" : "node_68",
-          "id" : 21,
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "d2b",
-              "left" : null,
-              "right" : {
-                "type" : "field",
-                "value" : ["scalars", "bng_ingress_downstream_tmp_0"]
-              }
-            }
-          },
-          "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v6",
-          "false_next" : "node_73"
-        },
-        {
-          "name" : "node_70",
-          "id" : 22,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 306,
-            "column" : 20,
-            "source_fragment" : "prio==true"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "==",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "bng_ingress_downstream_prio"]
-                  }
-                }
-              },
-              "right" : {
-                "type" : "bool",
-                "value" : true
-              }
-            }
-          },
-          "true_next" : "tbl_act_32",
-          "false_next" : "tbl_act_33"
-        },
-        {
-          "name" : "node_73",
-          "id" : 23,
-          "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 74,
+            "line" : 71,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -18523,7 +18018,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding14"]
                   }
                 }
               },
@@ -18533,12 +18028,12 @@
               }
             }
           },
-          "true_next" : "node_74",
+          "true_next" : "node_45",
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_74",
-          "id" : 24,
+          "name" : "node_45",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 141,
@@ -18551,7 +18046,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -18560,11 +18055,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_76"
+          "false_next" : "node_47"
         },
         {
-          "name" : "node_76",
-          "id" : 25,
+          "name" : "node_47",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 142,
@@ -18577,7 +18072,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -18586,11 +18081,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_78"
+          "false_next" : "node_49"
         },
         {
-          "name" : "node_78",
-          "id" : 26,
+          "name" : "node_49",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 143,
@@ -18603,7 +18098,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -18612,11 +18107,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.routing_v4",
-          "false_next" : "node_80"
+          "false_next" : "node_51"
         },
         {
-          "name" : "node_80",
-          "id" : 27,
+          "name" : "node_51",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 145,
@@ -18629,7 +18124,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type16"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -18641,11 +18136,11 @@
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_83",
-          "id" : 28,
+          "name" : "node_54",
+          "id" : 19,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 78,
+            "line" : 75,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -18660,7 +18155,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_next15"]
                   }
                 }
               },
@@ -18670,12 +18165,12 @@
               }
             }
           },
-          "false_next" : null,
-          "true_next" : "FabricIngress.next.xconnect"
+          "true_next" : "FabricIngress.next.xconnect",
+          "false_next" : "node_68"
         },
         {
-          "name" : "node_89",
-          "id" : 29,
+          "name" : "node_60",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -18696,12 +18191,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_34",
-          "false_next" : "node_91"
+          "true_next" : "tbl_act_22",
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_91",
-          "id" : 30,
+          "name" : "node_62",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -18722,12 +18217,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_35",
+          "true_next" : "tbl_act_23",
           "false_next" : "FabricIngress.process_set_source_sink.tb_set_source"
         },
         {
-          "name" : "node_95",
-          "id" : 31,
+          "name" : "node_66",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 86,
@@ -18745,7 +18240,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_sink26"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_sink34"]
                   }
                 }
               },
@@ -18755,8 +18250,204 @@
               }
             }
           },
+          "true_next" : "tbl_act_24",
+          "false_next" : "node_68"
+        },
+        {
+          "name" : "node_68",
+          "id" : 23,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 338,
+            "column" : 15,
+            "source_fragment" : "hdr.pppoe.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["pppoe", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_25",
+          "false_next" : "tbl_act_26"
+        },
+        {
+          "name" : "node_72",
+          "id" : 24,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 352,
+            "column" : 16,
+            "source_fragment" : "hdr.pppoe.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["pppoe", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_27",
+          "false_next" : "FabricIngress.bng_ingress.downstream.t_line_session_map"
+        },
+        {
+          "name" : "node_77",
+          "id" : 25,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["scalars", "bng_ingress_upstream_tmp"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_30",
+          "false_next" : "node_79"
+        },
+        {
+          "name" : "node_79",
+          "id" : 26,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "not",
+              "left" : null,
+              "right" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["scalars", "bng_ingress_upstream_hasReturned"]
+                  }
+                }
+              }
+            }
+          },
           "false_next" : null,
-          "true_next" : "tbl_act_36"
+          "true_next" : "node_80"
+        },
+        {
+          "name" : "node_80",
+          "id" : 27,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 126,
+            "column" : 12,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
+          "false_next" : "node_83"
+        },
+        {
+          "name" : "node_83",
+          "id" : 28,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 134,
+            "column" : 17,
+            "source_fragment" : "hdr.ipv6.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv6", "$valid$"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "tbl_act_32"
+        },
+        {
+          "name" : "node_90",
+          "id" : 29,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["scalars", "bng_ingress_downstream_tmp"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "node_91"
+        },
+        {
+          "name" : "node_91",
+          "id" : 30,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 233,
+            "column" : 16,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
+          "false_next" : "node_95"
+        },
+        {
+          "name" : "node_95",
+          "id" : 31,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 245,
+            "column" : 21,
+            "source_fragment" : "hdr.ipv6.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv6", "$valid$"]
+              }
+            }
+          },
+          "false_next" : null,
+          "true_next" : "FabricIngress.bng_ingress.downstream.t_qos_v6"
         }
       ]
     },
@@ -18765,15 +18456,15 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 92,
+        "line" : 93,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_99",
+      "init_table" : "node_101",
       "tables" : [
         {
-          "name" : "tbl_act_37",
-          "id" : 63,
+          "name" : "tbl_act_40",
+          "id" : 65,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -18787,22 +18478,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [148],
-          "actions" : ["act_37"],
-          "base_default_next" : "node_101",
+          "action_ids" : [150],
+          "actions" : ["act_40"],
+          "base_default_next" : "node_103",
           "next_tables" : {
-            "act_37" : "node_101"
+            "act_40" : "node_103"
           },
           "default_entry" : {
-            "action_id" : 148,
+            "action_id" : 150,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_38",
-          "id" : 64,
+          "name" : "tbl_act_41",
+          "id" : 66,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -18816,25 +18507,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [149],
-          "actions" : ["act_38"],
-          "base_default_next" : "node_103",
+          "action_ids" : [151],
+          "actions" : ["act_41"],
+          "base_default_next" : "node_105",
           "next_tables" : {
-            "act_38" : "node_103"
+            "act_41" : "node_105"
           },
           "default_entry" : {
-            "action_id" : 149,
+            "action_id" : 151,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_39",
-          "id" : 65,
+          "name" : "tbl_act_42",
+          "id" : 67,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -18845,14 +18536,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [150],
-          "actions" : ["act_39"],
-          "base_default_next" : "node_105",
+          "action_ids" : [152],
+          "actions" : ["act_42"],
+          "base_default_next" : "node_107",
           "next_tables" : {
-            "act_39" : "node_105"
+            "act_42" : "node_107"
           },
           "default_entry" : {
-            "action_id" : 150,
+            "action_id" : 152,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18860,10 +18551,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 66,
+          "id" : 68,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -18876,9 +18567,9 @@
           "direct_meters" : null,
           "action_ids" : [144],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
-          "base_default_next" : "FabricEgress.egress_next.egress_vlan",
+          "base_default_next" : "node_111",
           "next_tables" : {
-            "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
+            "FabricEgress.egress_next.pop_mpls_if_present" : "node_111"
           },
           "default_entry" : {
             "action_id" : 144,
@@ -18889,10 +18580,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 67,
+          "id" : 69,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 314,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -18905,9 +18596,9 @@
           "direct_meters" : null,
           "action_ids" : [145],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
-          "base_default_next" : "FabricEgress.egress_next.egress_vlan",
+          "base_default_next" : "node_111",
           "next_tables" : {
-            "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
+            "FabricEgress.egress_next.set_mpls" : "node_111"
           },
           "default_entry" : {
             "action_id" : 145,
@@ -18917,11 +18608,98 @@
           }
         },
         {
-          "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 68,
+          "name" : "tbl_egress_next_push_vlan",
+          "id" : 70,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 291,
+            "line" : 346,
+            "column" : 12,
+            "source_fragment" : "push_vlan()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [146],
+          "actions" : ["FabricEgress.egress_next.push_vlan"],
+          "base_default_next" : "tbl_egress_next_push_inner_vlan",
+          "next_tables" : {
+            "FabricEgress.egress_next.push_vlan" : "tbl_egress_next_push_inner_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 146,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_egress_next_push_inner_vlan",
+          "id" : 71,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 347,
+            "column" : 12,
+            "source_fragment" : "push_inner_vlan()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [148],
+          "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
+          "base_default_next" : "node_121",
+          "next_tables" : {
+            "FabricEgress.egress_next.push_inner_vlan" : "node_121"
+          },
+          "default_entry" : {
+            "action_id" : 148,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_43",
+          "id" : 72,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 350,
+            "column" : 12,
+            "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [155],
+          "actions" : ["act_45"],
+          "base_default_next" : "FabricEgress.egress_next.egress_vlan",
+          "next_tables" : {
+            "act_45" : "FabricEgress.egress_next.egress_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 155,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricEgress.egress_next.egress_vlan",
+          "id" : 73,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 317,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -18929,7 +18707,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -18945,12 +18723,12 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [147, 101],
+          "action_ids" : [149, 101],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_40",
-            "__MISS__" : "tbl_act_41"
+            "__HIT__" : "tbl_act_44",
+            "__MISS__" : "tbl_act_45"
           },
           "default_entry" : {
             "action_id" : 101,
@@ -18960,8 +18738,8 @@
           }
         },
         {
-          "name" : "tbl_act_40",
-          "id" : 69,
+          "name" : "tbl_act_44",
+          "id" : 74,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -18969,22 +18747,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [151],
-          "actions" : ["act_40"],
-          "base_default_next" : "node_112",
+          "action_ids" : [153],
+          "actions" : ["act_43"],
+          "base_default_next" : "node_118",
           "next_tables" : {
-            "act_40" : "node_112"
+            "act_43" : "node_118"
           },
           "default_entry" : {
-            "action_id" : 151,
+            "action_id" : 153,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_41",
-          "id" : 70,
+          "name" : "tbl_act_45",
+          "id" : 75,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -18992,26 +18770,26 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [152],
-          "actions" : ["act_41"],
-          "base_default_next" : "node_112",
+          "action_ids" : [154],
+          "actions" : ["act_44"],
+          "base_default_next" : "node_118",
           "next_tables" : {
-            "act_41" : "node_112"
+            "act_44" : "node_118"
           },
           "default_entry" : {
-            "action_id" : 152,
+            "action_id" : 154,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_egress_next_push_vlan",
-          "id" : 71,
+          "name" : "tbl_egress_next_push_vlan_0",
+          "id" : 76,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 320,
-            "column" : 16,
+            "line" : 357,
+            "column" : 20,
             "source_fragment" : "push_vlan()"
           },
           "key" : [],
@@ -19021,25 +18799,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [146],
+          "action_ids" : [147],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_115",
+          "base_default_next" : "node_121",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_115"
+            "FabricEgress.egress_next.push_vlan" : "node_121"
           },
           "default_entry" : {
-            "action_id" : 146,
+            "action_id" : 147,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_42",
-          "id" : 72,
+          "name" : "tbl_act_46",
+          "id" : 77,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 25,
             "source_fragment" : "="
           },
@@ -19050,25 +18828,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [154],
-          "actions" : ["act_43"],
-          "base_default_next" : "node_117",
+          "action_ids" : [157],
+          "actions" : ["act_47"],
+          "base_default_next" : "node_123",
           "next_tables" : {
-            "act_43" : "node_117"
+            "act_47" : "node_123"
           },
           "default_entry" : {
-            "action_id" : 154,
+            "action_id" : 157,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_43",
-          "id" : 73,
+          "name" : "tbl_act_47",
+          "id" : 78,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -19079,25 +18857,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [153],
-          "actions" : ["act_42"],
-          "base_default_next" : "node_127",
+          "action_ids" : [156],
+          "actions" : ["act_46"],
+          "base_default_next" : "node_133",
           "next_tables" : {
-            "act_42" : "node_127"
+            "act_46" : "node_133"
           },
           "default_entry" : {
-            "action_id" : 153,
+            "action_id" : 156,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_44",
-          "id" : 74,
+          "name" : "tbl_act_48",
+          "id" : 79,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 29,
             "source_fragment" : "="
           },
@@ -19108,25 +18886,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [156],
-          "actions" : ["act_45"],
-          "base_default_next" : "node_121",
+          "action_ids" : [159],
+          "actions" : ["act_49"],
+          "base_default_next" : "node_127",
           "next_tables" : {
-            "act_45" : "node_121"
+            "act_49" : "node_127"
           },
           "default_entry" : {
-            "action_id" : 156,
+            "action_id" : 159,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_45",
-          "id" : 75,
+          "name" : "tbl_act_49",
+          "id" : 80,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -19137,25 +18915,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [155],
-          "actions" : ["act_44"],
-          "base_default_next" : "node_127",
+          "action_ids" : [158],
+          "actions" : ["act_48"],
+          "base_default_next" : "node_133",
           "next_tables" : {
-            "act_44" : "node_127"
+            "act_48" : "node_133"
           },
           "default_entry" : {
-            "action_id" : 155,
+            "action_id" : 158,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_46",
-          "id" : 76,
+          "name" : "tbl_act_50",
+          "id" : 81,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 335,
+            "line" : 375,
             "column" : 35,
             "source_fragment" : "="
           },
@@ -19166,25 +18944,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [158],
-          "actions" : ["act_47"],
-          "base_default_next" : "node_125",
+          "action_ids" : [161],
+          "actions" : ["act_51"],
+          "base_default_next" : "node_131",
           "next_tables" : {
-            "act_47" : "node_125"
+            "act_51" : "node_131"
           },
           "default_entry" : {
-            "action_id" : 158,
+            "action_id" : 161,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_47",
-          "id" : 77,
+          "name" : "tbl_act_51",
+          "id" : 82,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 336,
+            "line" : 376,
             "column" : 45,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -19195,14 +18973,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [157],
-          "actions" : ["act_46"],
-          "base_default_next" : "node_127",
+          "action_ids" : [160],
+          "actions" : ["act_50"],
+          "base_default_next" : "node_133",
           "next_tables" : {
-            "act_46" : "node_127"
+            "act_50" : "node_133"
           },
           "default_entry" : {
-            "action_id" : 157,
+            "action_id" : 160,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19210,7 +18988,7 @@
         },
         {
           "name" : "tbl_spgw_egress_gtpu_encap",
-          "id" : 78,
+          "id" : 83,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 228,
@@ -19226,9 +19004,9 @@
           "direct_meters" : null,
           "action_ids" : [104],
           "actions" : ["FabricEgress.spgw_egress.gtpu_encap"],
-          "base_default_next" : "node_129",
+          "base_default_next" : "node_135",
           "next_tables" : {
-            "FabricEgress.spgw_egress.gtpu_encap" : "node_129"
+            "FabricEgress.spgw_egress.gtpu_encap" : "node_135"
           },
           "default_entry" : {
             "action_id" : 104,
@@ -19238,38 +19016,58 @@
           }
         },
         {
-          "name" : "FabricEgress.bng_egress.downstream.t_session_encap",
-          "id" : 79,
+          "name" : "tbl_bng_egress_downstream_encap_v4",
+          "id" : 84,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 356,
-            "column" : 10,
-            "source_fragment" : "t_session_encap"
+            "line" : 295,
+            "column" : 12,
+            "source_fragment" : "encap_v4()"
           },
-          "key" : [
-            {
-              "match_type" : "exact",
-              "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id22"],
-              "mask" : null
-            }
-          ],
+          "key" : [],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 8192,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [97, 105, 106],
-          "actions" : ["nop", "FabricEgress.bng_egress.downstream.encap_v4", "FabricEgress.bng_egress.downstream.encap_v6"],
-          "base_default_next" : "node_131",
+          "action_ids" : [105],
+          "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
+          "base_default_next" : "node_140",
           "next_tables" : {
-            "nop" : "node_131",
-            "FabricEgress.bng_egress.downstream.encap_v4" : "node_131",
-            "FabricEgress.bng_egress.downstream.encap_v6" : "node_131"
+            "FabricEgress.bng_egress.downstream.encap_v4" : "node_140"
           },
           "default_entry" : {
-            "action_id" : 97,
+            "action_id" : 105,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_bng_egress_downstream_encap_v6",
+          "id" : 85,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 300,
+            "column" : 12,
+            "source_fragment" : "encap_v6()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [106],
+          "actions" : ["FabricEgress.bng_egress.downstream.encap_v6"],
+          "base_default_next" : "node_140",
+          "next_tables" : {
+            "FabricEgress.bng_egress.downstream.encap_v6" : "node_140"
+          },
+          "default_entry" : {
+            "action_id" : 106,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19277,7 +19075,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "id" : 80,
+          "id" : 86,
           "source_info" : {
             "filename" : "include/int/int_source.p4",
             "line" : 66,
@@ -19300,13 +19098,13 @@
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport21"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport22"],
               "mask" : null
             }
           ],
@@ -19318,10 +19116,10 @@
           "direct_meters" : null,
           "action_ids" : [107, 98],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
-          "base_default_next" : "node_134",
+          "base_default_next" : "node_143",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_134",
-            "nop" : "node_134"
+            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_143",
+            "nop" : "node_143"
           },
           "default_entry" : {
             "action_id" : 98,
@@ -19331,8 +19129,8 @@
           }
         },
         {
-          "name" : "tbl_act_48",
-          "id" : 81,
+          "name" : "tbl_act_52",
+          "id" : 87,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -19340,14 +19138,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [159],
-          "actions" : ["act_48"],
+          "action_ids" : [162],
+          "actions" : ["act_52"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
-            "act_48" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
+            "act_52" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 159,
+            "action_id" : 162,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19355,7 +19153,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
-          "id" : 82,
+          "id" : 88,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 315,
@@ -19378,10 +19176,10 @@
           "direct_meters" : null,
           "action_ids" : [108, 99],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
-          "base_default_next" : "node_137",
+          "base_default_next" : "node_146",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_137",
-            "nop" : "node_137"
+            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_146",
+            "nop" : "node_146"
           },
           "default_entry" : {
             "action_id" : 99,
@@ -19391,8 +19189,8 @@
           }
         },
         {
-          "name" : "tbl_act_49",
-          "id" : 83,
+          "name" : "tbl_act_53",
+          "id" : 89,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 420,
@@ -19406,14 +19204,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [160],
-          "actions" : ["act_49"],
-          "base_default_next" : "node_139",
+          "action_ids" : [163],
+          "actions" : ["act_53"],
+          "base_default_next" : "node_148",
           "next_tables" : {
-            "act_49" : "node_139"
+            "act_53" : "node_148"
           },
           "default_entry" : {
-            "action_id" : 160,
+            "action_id" : 163,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19421,7 +19219,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "id" : 84,
+          "id" : 90,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 331,
@@ -19779,7 +19577,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
-          "id" : 85,
+          "id" : 91,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 375,
@@ -19802,25 +19600,25 @@
           "direct_meters" : null,
           "action_ids" : [125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 103],
           "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_act_50",
+          "base_default_next" : "tbl_act_54",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14" : "tbl_act_50",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15" : "tbl_act_50",
-            "NoAction" : "tbl_act_50"
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14" : "tbl_act_54",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15" : "tbl_act_54",
+            "NoAction" : "tbl_act_54"
           },
           "default_entry" : {
             "action_id" : 103,
@@ -20136,8 +19934,8 @@
           ]
         },
         {
-          "name" : "tbl_act_50",
-          "id" : 86,
+          "name" : "tbl_act_54",
+          "id" : 92,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 425,
@@ -20151,22 +19949,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [162],
-          "actions" : ["act_51"],
-          "base_default_next" : "node_143",
+          "action_ids" : [165],
+          "actions" : ["act_55"],
+          "base_default_next" : "node_152",
           "next_tables" : {
-            "act_51" : "node_143"
+            "act_55" : "node_152"
           },
           "default_entry" : {
-            "action_id" : 162,
+            "action_id" : 165,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_51",
-          "id" : 87,
+          "name" : "tbl_act_55",
+          "id" : 93,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 428,
@@ -20180,22 +19978,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [161],
-          "actions" : ["act_50"],
-          "base_default_next" : "node_145",
+          "action_ids" : [164],
+          "actions" : ["act_54"],
+          "base_default_next" : "node_154",
           "next_tables" : {
-            "act_50" : "node_145"
+            "act_54" : "node_154"
           },
           "default_entry" : {
-            "action_id" : 161,
+            "action_id" : 164,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_52",
-          "id" : 88,
+          "name" : "tbl_act_56",
+          "id" : 94,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 431,
@@ -20209,22 +20007,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [163],
-          "actions" : ["act_52"],
-          "base_default_next" : "node_147",
+          "action_ids" : [166],
+          "actions" : ["act_56"],
+          "base_default_next" : "node_156",
           "next_tables" : {
-            "act_52" : "node_147"
+            "act_56" : "node_156"
           },
           "default_entry" : {
-            "action_id" : 163,
+            "action_id" : 166,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_53",
-          "id" : 89,
+          "name" : "tbl_act_57",
+          "id" : 95,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 434,
@@ -20238,14 +20036,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [164],
-          "actions" : ["act_53"],
-          "base_default_next" : "node_149",
+          "action_ids" : [167],
+          "actions" : ["act_57"],
+          "base_default_next" : "node_158",
           "next_tables" : {
-            "act_53" : "node_149"
+            "act_57" : "node_158"
           },
           "default_entry" : {
-            "action_id" : 164,
+            "action_id" : 167,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20253,7 +20051,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_report.tb_generate_report",
-          "id" : 90,
+          "id" : 96,
           "source_info" : {
             "filename" : "include/int/int_report.p4",
             "line" : 86,
@@ -20269,10 +20067,10 @@
           "direct_meters" : null,
           "action_ids" : [141, 100],
           "actions" : ["FabricEgress.process_int_main.process_int_report.do_report_encapsulation", "nop"],
-          "base_default_next" : "node_151",
+          "base_default_next" : "node_160",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_report.do_report_encapsulation" : "node_151",
-            "nop" : "node_151"
+            "FabricEgress.process_int_main.process_int_report.do_report_encapsulation" : "node_160",
+            "nop" : "node_160"
           },
           "default_entry" : {
             "action_id" : 100,
@@ -20283,7 +20081,7 @@
         },
         {
           "name" : "tbl_process_int_main_process_int_sink_restore_header",
-          "id" : 91,
+          "id" : 97,
           "source_info" : {
             "filename" : "include/int/int_sink.p4",
             "line" : 53,
@@ -20312,7 +20110,7 @@
         },
         {
           "name" : "tbl_process_int_main_process_int_sink_int_sink",
-          "id" : 92,
+          "id" : 98,
           "source_info" : {
             "filename" : "include/int/int_sink.p4",
             "line" : 54,
@@ -20343,7 +20141,7 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_99",
+          "name" : "node_101",
           "id" : 32,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
@@ -20362,7 +20160,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out19"]
                   }
                 }
               },
@@ -20372,11 +20170,11 @@
               }
             }
           },
-          "true_next" : "tbl_act_37",
-          "false_next" : "node_101"
+          "true_next" : "tbl_act_40",
+          "false_next" : "node_103"
         },
         {
-          "name" : "node_101",
+          "name" : "node_103",
           "id" : 33,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
@@ -20398,15 +20196,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_38",
-          "false_next" : "node_103"
+          "true_next" : "tbl_act_41",
+          "false_next" : "node_105"
         },
         {
-          "name" : "node_103",
+          "name" : "node_105",
           "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 306,
+            "line" : 332,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -20425,7 +20223,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast18"]
                       }
                     }
                   },
@@ -20451,15 +20249,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_39",
-          "false_next" : "node_105"
+          "true_next" : "tbl_act_42",
+          "false_next" : "node_107"
         },
         {
-          "name" : "node_105",
+          "name" : "node_107",
           "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 311,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -20469,7 +20267,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                "value" : ["scalars", "fabric_metadata_t._mpls_label12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -20477,15 +20275,15 @@
               }
             }
           },
-          "true_next" : "node_106",
+          "true_next" : "node_108",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_106",
+          "name" : "node_108",
           "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -20501,15 +20299,48 @@
             }
           },
           "true_next" : "tbl_egress_next_pop_mpls_if_present",
-          "false_next" : "FabricEgress.egress_next.egress_vlan"
+          "false_next" : "node_111"
         },
         {
-          "name" : "node_112",
+          "name" : "node_111",
           "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 317,
+            "line" : 344,
             "column" : 12,
+            "source_fragment" : "fabric_metadata.push_double_vlan == true"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "==",
+              "left" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "d2b",
+                  "left" : null,
+                  "right" : {
+                    "type" : "field",
+                    "value" : ["scalars", "fabric_metadata_t._push_double_vlan8"]
+                  }
+                }
+              },
+              "right" : {
+                "type" : "bool",
+                "value" : true
+              }
+            }
+          },
+          "true_next" : "tbl_egress_next_push_vlan",
+          "false_next" : "tbl_act_43"
+        },
+        {
+          "name" : "node_118",
+          "id" : 38,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 354,
+            "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
           "expression" : {
@@ -20530,16 +20361,16 @@
               }
             }
           },
-          "true_next" : "node_113",
-          "false_next" : "node_115"
+          "true_next" : "node_119",
+          "false_next" : "node_121"
         },
         {
-          "name" : "node_113",
-          "id" : 38,
+          "name" : "node_119",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 319,
-            "column" : 16,
+            "line" : 356,
+            "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
           "expression" : {
@@ -20548,7 +20379,7 @@
               "op" : "!=",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -20556,15 +20387,15 @@
               }
             }
           },
-          "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_115"
+          "true_next" : "tbl_egress_next_push_vlan_0",
+          "false_next" : "node_121"
         },
         {
-          "name" : "node_115",
-          "id" : 39,
+          "name" : "node_121",
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 325,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -20579,15 +20410,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_42",
-          "false_next" : "node_119"
+          "true_next" : "tbl_act_46",
+          "false_next" : "node_125"
         },
         {
-          "name" : "node_117",
-          "id" : 40,
+          "name" : "node_123",
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -20605,15 +20436,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_43",
-          "false_next" : "node_127"
+          "true_next" : "tbl_act_47",
+          "false_next" : "node_133"
         },
         {
-          "name" : "node_119",
-          "id" : 41,
+          "name" : "node_125",
+          "id" : 42,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 329,
+            "line" : 369,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -20628,15 +20459,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_44",
-          "false_next" : "node_123"
+          "true_next" : "tbl_act_48",
+          "false_next" : "node_129"
         },
         {
-          "name" : "node_121",
-          "id" : 42,
+          "name" : "node_127",
+          "id" : 43,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -20654,15 +20485,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_45",
-          "false_next" : "node_127"
+          "true_next" : "tbl_act_49",
+          "false_next" : "node_133"
         },
         {
-          "name" : "node_123",
-          "id" : 43,
+          "name" : "node_129",
+          "id" : 44,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 334,
+            "line" : 374,
             "column" : 21,
             "source_fragment" : "hdr.ipv6.isValid()"
           },
@@ -20677,15 +20508,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_46",
-          "false_next" : "node_127"
+          "true_next" : "tbl_act_50",
+          "false_next" : "node_133"
         },
         {
-          "name" : "node_125",
-          "id" : 44,
+          "name" : "node_131",
+          "id" : 45,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 336,
+            "line" : 376,
             "column" : 20,
             "source_fragment" : "hdr.ipv6.hop_limit == 0"
           },
@@ -20703,12 +20534,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_47",
-          "false_next" : "node_127"
+          "true_next" : "tbl_act_51",
+          "false_next" : "node_133"
         },
         {
-          "name" : "node_127",
-          "id" : 45,
+          "name" : "node_133",
+          "id" : 46,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 227,
@@ -20721,7 +20552,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+                "value" : ["scalars", "fabric_metadata_t._spgw_direction23"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -20730,14 +20561,14 @@
             }
           },
           "true_next" : "tbl_spgw_egress_gtpu_encap",
-          "false_next" : "node_129"
+          "false_next" : "node_135"
         },
         {
-          "name" : "node_129",
-          "id" : 46,
+          "name" : "node_135",
+          "id" : 47,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 405,
+            "line" : 369,
             "column" : 12,
             "source_fragment" : "fmeta.bng.type == BNG_TYPE_DOWNSTREAM"
           },
@@ -20747,7 +20578,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._bng_type21"]
+                "value" : ["scalars", "fabric_metadata_t._bng_type28"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -20755,12 +20586,58 @@
               }
             }
           },
-          "true_next" : "FabricEgress.bng_egress.downstream.t_session_encap",
-          "false_next" : "node_131"
+          "true_next" : "node_136",
+          "false_next" : "node_140"
         },
         {
-          "name" : "node_131",
-          "id" : 47,
+          "name" : "node_136",
+          "id" : 48,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 294,
+            "column" : 12,
+            "source_fragment" : "hdr.ipv4.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv4", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_bng_egress_downstream_encap_v4",
+          "false_next" : "node_138"
+        },
+        {
+          "name" : "node_138",
+          "id" : 49,
+          "source_info" : {
+            "filename" : "include/bng.p4",
+            "line" : 299,
+            "column" : 17,
+            "source_fragment" : "hdr.ipv6.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["ipv6", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_bng_egress_downstream_encap_v6",
+          "false_next" : "node_140"
+        },
+        {
+          "name" : "node_140",
+          "id" : 50,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 102,
@@ -20836,11 +20713,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_132"
+          "true_next" : "node_141"
         },
         {
-          "name" : "node_132",
-          "id" : 48,
+          "name" : "node_141",
+          "id" : 51,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 106,
@@ -20858,7 +20735,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_source24"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_source32"]
                   }
                 }
               },
@@ -20869,11 +20746,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "false_next" : "node_134"
+          "false_next" : "node_143"
         },
         {
-          "name" : "node_134",
-          "id" : 49,
+          "name" : "node_143",
+          "id" : 52,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 110,
@@ -20892,11 +20769,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_48"
+          "true_next" : "tbl_act_52"
         },
         {
-          "name" : "node_137",
-          "id" : 50,
+          "name" : "node_146",
+          "id" : 53,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 419,
@@ -20914,7 +20791,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_transit25"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_transit33"]
                   }
                 }
               },
@@ -20924,12 +20801,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_49",
-          "false_next" : "node_139"
+          "true_next" : "tbl_act_53",
+          "false_next" : "node_148"
         },
         {
-          "name" : "node_139",
-          "id" : 51,
+          "name" : "node_148",
+          "id" : 54,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -20949,11 +20826,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "false_next" : "node_149"
+          "false_next" : "node_158"
         },
         {
-          "name" : "node_143",
-          "id" : 52,
+          "name" : "node_152",
+          "id" : 55,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 427,
@@ -20971,12 +20848,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_51",
-          "false_next" : "node_145"
+          "true_next" : "tbl_act_55",
+          "false_next" : "node_154"
         },
         {
-          "name" : "node_145",
-          "id" : 53,
+          "name" : "node_154",
+          "id" : 56,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 430,
@@ -20994,12 +20871,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_52",
-          "false_next" : "node_147"
+          "true_next" : "tbl_act_56",
+          "false_next" : "node_156"
         },
         {
-          "name" : "node_147",
-          "id" : 54,
+          "name" : "node_156",
+          "id" : 57,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 433,
@@ -21017,12 +20894,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_53",
-          "false_next" : "node_149"
+          "true_next" : "tbl_act_57",
+          "false_next" : "node_158"
         },
         {
-          "name" : "node_149",
-          "id" : 55,
+          "name" : "node_158",
+          "id" : 58,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 115,
@@ -21044,11 +20921,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_report.tb_generate_report",
-          "false_next" : "node_151"
+          "false_next" : "node_160"
         },
         {
-          "name" : "node_151",
-          "id" : 56,
+          "name" : "node_160",
+          "id" : 59,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 119,
@@ -21066,7 +20943,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_sink26"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_sink34"]
                   }
                 }
               },
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index c3e7b90..2a1ca9e 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -45,32 +45,51 @@
 }
 tables {
   preamble {
-    id: 33584710
-    name: "FabricIngress.bng_ingress.upstream.t_line_map"
-    alias: "t_line_map"
+    id: 33581620
+    name: "FabricIngress.process_set_source_sink.tb_set_source"
+    alias: "tb_set_source"
   }
   match_fields {
     id: 1
-    name: "s_tag"
-    bitwidth: 12
+    name: "ig_port"
+    bitwidth: 9
     match_type: EXACT
   }
-  match_fields {
-    id: 2
-    name: "c_tag"
-    bitwidth: 12
-    match_type: EXACT
+  action_refs {
+    id: 16778827
   }
   action_refs {
     id: 16819938
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318787614
+  size: 511
+}
+tables {
+  preamble {
+    id: 33561619
+    name: "FabricIngress.process_set_source_sink.tb_set_sink"
+    alias: "tb_set_sink"
+  }
+  match_fields {
+    id: 1
+    name: "eg_spec"
+    bitwidth: 9
+    match_type: EXACT
+  }
   action_refs {
-    id: 16829434
+    id: 16788951
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
   }
   const_default_action_id: 16819938
-  size: 8192
+  direct_resource_ids: 318770551
+  size: 511
 }
 tables {
   preamble {
@@ -173,13 +192,13 @@
 }
 tables {
   preamble {
-    id: 33555367
-    name: "FabricIngress.bng_ingress.downstream.t_line_map_v4"
-    alias: "t_line_map_v4"
+    id: 33594775
+    name: "FabricIngress.bng_ingress.downstream.t_line_session_map"
+    alias: "t_line_session_map"
   }
   match_fields {
     id: 1
-    name: "ipv4_dst"
+    name: "line_id"
     bitwidth: 32
     match_type: EXACT
   }
@@ -189,39 +208,13 @@
     scope: DEFAULT_ONLY
   }
   action_refs {
-    id: 16798636
+    id: 16795395
   }
   action_refs {
-    id: 16842299
+    id: 16822844
   }
   const_default_action_id: 16819938
-  size: 32768
-}
-tables {
-  preamble {
-    id: 33572185
-    name: "FabricIngress.bng_ingress.downstream.t_line_map_v6"
-    alias: "t_line_map_v6"
-  }
-  match_fields {
-    id: 1
-    name: "ipv6_dst_net_id"
-    bitwidth: 64
-    match_type: EXACT
-  }
-  action_refs {
-    id: 16819938
-    annotations: "@defaultonly"
-    scope: DEFAULT_ONLY
-  }
-  action_refs {
-    id: 16798636
-  }
-  action_refs {
-    id: 16842299
-  }
-  const_default_action_id: 16819938
-  size: 32768
+  size: 8192
 }
 tables {
   preamble {
@@ -297,51 +290,32 @@
 }
 tables {
   preamble {
-    id: 33581620
-    name: "FabricIngress.process_set_source_sink.tb_set_source"
-    alias: "tb_set_source"
+    id: 33592041
+    name: "FabricIngress.bng_ingress.t_line_map"
+    alias: "t_line_map"
   }
   match_fields {
     id: 1
-    name: "ig_port"
-    bitwidth: 9
+    name: "s_tag"
+    bitwidth: 12
     match_type: EXACT
   }
-  action_refs {
-    id: 16778827
+  match_fields {
+    id: 2
+    name: "c_tag"
+    bitwidth: 12
+    match_type: EXACT
   }
   action_refs {
     id: 16819938
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318787614
-  size: 511
-}
-tables {
-  preamble {
-    id: 33561619
-    name: "FabricIngress.process_set_source_sink.tb_set_sink"
-    alias: "tb_set_sink"
-  }
-  match_fields {
-    id: 1
-    name: "eg_spec"
-    bitwidth: 9
-    match_type: EXACT
-  }
   action_refs {
-    id: 16788951
-  }
-  action_refs {
-    id: 16819938
-    annotations: "@defaultonly"
-    scope: DEFAULT_ONLY
+    id: 16829385
   }
   const_default_action_id: 16819938
-  direct_resource_ids: 318770551
-  size: 511
+  size: 8192
 }
 tables {
   preamble {
@@ -367,6 +341,12 @@
     bitwidth: 12
     match_type: TERNARY
   }
+  match_fields {
+    id: 4
+    name: "inner_vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
   action_refs {
     id: 16836487
   }
@@ -378,7 +358,7 @@
   }
   const_default_action_id: 16836487
   direct_resource_ids: 318815501
-  size: 1024
+  size: 8192
 }
 tables {
   preamble {
@@ -400,8 +380,20 @@
   }
   match_fields {
     id: 3
-    name: "eth_type"
-    bitwidth: 16
+    name: "is_ipv4"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 4
+    name: "is_ipv6"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 5
+    name: "is_mpls"
+    bitwidth: 1
     match_type: EXACT
   }
   action_refs {
@@ -629,6 +621,9 @@
     id: 16790685
   }
   action_refs {
+    id: 16803337
+  }
+  action_refs {
     id: 16819938
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -757,32 +752,6 @@
 }
 tables {
   preamble {
-    id: 33576241
-    name: "FabricEgress.bng_egress.downstream.t_session_encap"
-    alias: "t_session_encap"
-  }
-  match_fields {
-    id: 1
-    name: "line_id"
-    bitwidth: 32
-    match_type: EXACT
-  }
-  action_refs {
-    id: 16819938
-    annotations: "@defaultonly"
-    scope: DEFAULT_ONLY
-  }
-  action_refs {
-    id: 16784000
-  }
-  action_refs {
-    id: 16801306
-  }
-  const_default_action_id: 16819938
-  size: 8192
-}
-tables {
-  preamble {
     id: 33612258
     name: "FabricEgress.process_int_main.process_int_source.tb_int_source"
     alias: "tb_int_source"
@@ -923,14 +892,16 @@
 }
 actions {
   preamble {
-    id: 16829434
-    name: "FabricIngress.bng_ingress.upstream.set_line"
-    alias: "set_line"
+    id: 16778827
+    name: "FabricIngress.process_set_source_sink.int_set_source"
+    alias: "int_set_source"
   }
-  params {
-    id: 1
-    name: "line_id"
-    bitwidth: 32
+}
+actions {
+  preamble {
+    id: 16788951
+    name: "FabricIngress.process_set_source_sink.int_set_sink"
+    alias: "int_set_sink"
   }
 }
 actions {
@@ -963,31 +934,21 @@
 }
 actions {
   preamble {
-    id: 16798636
-    name: "FabricIngress.bng_ingress.downstream.set_line_next"
-    alias: "set_line_next"
+    id: 16795395
+    name: "FabricIngress.bng_ingress.downstream.set_session"
+    alias: "set_session"
   }
   params {
     id: 1
-    name: "line_id"
-    bitwidth: 32
-  }
-  params {
-    id: 2
-    name: "next_id"
-    bitwidth: 32
+    name: "pppoe_session_id"
+    bitwidth: 16
   }
 }
 actions {
   preamble {
-    id: 16842299
-    name: "FabricIngress.bng_ingress.downstream.set_line_drop"
-    alias: "set_line_drop"
-  }
-  params {
-    id: 1
-    name: "line_id"
-    bitwidth: 32
+    id: 16822844
+    name: "FabricIngress.bng_ingress.downstream.drop"
+    alias: "downstream.drop"
   }
 }
 actions {
@@ -1006,16 +967,14 @@
 }
 actions {
   preamble {
-    id: 16778827
-    name: "FabricIngress.process_set_source_sink.int_set_source"
-    alias: "int_set_source"
+    id: 16829385
+    name: "FabricIngress.bng_ingress.set_line"
+    alias: "set_line"
   }
-}
-actions {
-  preamble {
-    id: 16788951
-    name: "FabricIngress.process_set_source_sink.int_set_sink"
-    alias: "int_set_sink"
+  params {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
   }
 }
 actions {
@@ -1146,7 +1105,7 @@
   preamble {
     id: 16820765
     name: "FabricIngress.acl.drop"
-    alias: "drop"
+    alias: "acl.drop"
   }
 }
 actions {
@@ -1170,6 +1129,23 @@
 }
 actions {
   preamble {
+    id: 16803337
+    name: "FabricIngress.next.set_double_vlan"
+    alias: "set_double_vlan"
+  }
+  params {
+    id: 1
+    name: "outer_vlan_id"
+    bitwidth: 12
+  }
+  params {
+    id: 2
+    name: "inner_vlan_id"
+    bitwidth: 12
+  }
+}
+actions {
+  preamble {
     id: 16842190
     name: "FabricIngress.next.output_xconnect"
     alias: "output_xconnect"
@@ -1339,16 +1315,6 @@
     name: "FabricEgress.bng_egress.downstream.encap_v4"
     alias: "encap_v4"
   }
-  params {
-    id: 1
-    name: "c_tag"
-    bitwidth: 12
-  }
-  params {
-    id: 2
-    name: "pppoe_session_id"
-    bitwidth: 16
-  }
 }
 actions {
   preamble {
@@ -1356,16 +1322,6 @@
     name: "FabricEgress.bng_egress.downstream.encap_v6"
     alias: "encap_v6"
   }
-  params {
-    id: 1
-    name: "c_tag"
-    bitwidth: 12
-  }
-  params {
-    id: 2
-    name: "pppoe_session_id"
-    bitwidth: 16
-  }
 }
 actions {
   preamble {
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
index 7daaa2c..f8bab98 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
@@ -10,31 +10,34 @@
         ["tmp_1", 32, false],
         ["egress_next_tmp", 1, false],
         ["process_int_main_process_int_transit_hasReturned", 1, false],
-        ["fabric_metadata_t._eth_type0", 16, false],
-        ["fabric_metadata_t._ip_eth_type1", 16, false],
-        ["fabric_metadata_t._vlan_id2", 12, false],
-        ["fabric_metadata_t._vlan_pri3", 3, false],
-        ["fabric_metadata_t._vlan_cfi4", 1, false],
-        ["fabric_metadata_t._mpls_label5", 20, false],
-        ["fabric_metadata_t._mpls_ttl6", 8, false],
-        ["fabric_metadata_t._skip_forwarding7", 1, false],
-        ["fabric_metadata_t._skip_next8", 1, false],
-        ["fabric_metadata_t._fwd_type9", 3, false],
-        ["fabric_metadata_t._next_id10", 32, false],
-        ["fabric_metadata_t._is_multicast11", 1, false],
-        ["fabric_metadata_t._is_controller_packet_out12", 1, false],
-        ["fabric_metadata_t._ip_proto13", 8, false],
-        ["fabric_metadata_t._l4_sport14", 16, false],
-        ["fabric_metadata_t._l4_dport15", 16, false],
-        ["fabric_metadata_t._int_meta_source16", 1, false],
-        ["fabric_metadata_t._int_meta_transit17", 1, false],
-        ["fabric_metadata_t._int_meta_sink18", 1, false],
-        ["fabric_metadata_t._int_meta_switch_id19", 32, false],
-        ["fabric_metadata_t._int_meta_new_words20", 8, false],
-        ["fabric_metadata_t._int_meta_new_bytes21", 16, false],
-        ["fabric_metadata_t._int_meta_ig_tstamp22", 32, false],
-        ["fabric_metadata_t._int_meta_eg_tstamp23", 32, false],
-        ["_padding_0", 6, false]
+        ["fabric_metadata_t._last_eth_type0", 16, false],
+        ["fabric_metadata_t._is_ipv41", 1, false],
+        ["fabric_metadata_t._is_ipv62", 1, false],
+        ["fabric_metadata_t._is_mpls3", 1, false],
+        ["fabric_metadata_t._ip_eth_type4", 16, false],
+        ["fabric_metadata_t._vlan_id5", 12, false],
+        ["fabric_metadata_t._vlan_pri6", 3, false],
+        ["fabric_metadata_t._vlan_cfi7", 1, false],
+        ["fabric_metadata_t._mpls_label8", 20, false],
+        ["fabric_metadata_t._mpls_ttl9", 8, false],
+        ["fabric_metadata_t._skip_forwarding10", 1, false],
+        ["fabric_metadata_t._skip_next11", 1, false],
+        ["fabric_metadata_t._fwd_type12", 3, false],
+        ["fabric_metadata_t._next_id13", 32, false],
+        ["fabric_metadata_t._is_multicast14", 1, false],
+        ["fabric_metadata_t._is_controller_packet_out15", 1, false],
+        ["fabric_metadata_t._ip_proto16", 8, false],
+        ["fabric_metadata_t._l4_sport17", 16, false],
+        ["fabric_metadata_t._l4_dport18", 16, false],
+        ["fabric_metadata_t._int_meta_source19", 1, false],
+        ["fabric_metadata_t._int_meta_transit20", 1, false],
+        ["fabric_metadata_t._int_meta_sink21", 1, false],
+        ["fabric_metadata_t._int_meta_switch_id22", 32, false],
+        ["fabric_metadata_t._int_meta_new_words23", 8, false],
+        ["fabric_metadata_t._int_meta_new_bytes24", 16, false],
+        ["fabric_metadata_t._int_meta_ig_tstamp25", 32, false],
+        ["fabric_metadata_t._int_meta_eg_tstamp26", 32, false],
+        ["_padding_0", 3, false]
       ]
     },
     {
@@ -533,7 +536,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+                  "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
                 },
                 {
                   "type" : "field",
@@ -546,7 +549,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                  "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
                 },
                 {
                   "type" : "hexstr",
@@ -573,7 +576,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "value" : "default",
@@ -607,7 +610,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -622,6 +625,18 @@
               "next_state" : "parse_inner_vlan_tag"
             },
             {
+              "type" : "hexstr",
+              "value" : "0x88a8",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x9100",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
               "value" : "default",
               "mask" : null,
               "next_state" : null
@@ -653,7 +668,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -691,7 +706,30 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                  "value" : ["scalars", "fabric_metadata_t._is_mpls3"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
                 },
                 {
                   "type" : "field",
@@ -704,7 +742,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
                 },
                 {
                   "type" : "field",
@@ -748,12 +786,49 @@
           ]
         },
         {
-          "name" : "parse_ipv4",
+          "name" : "pre_parse_ipv4",
           "id" : 6,
           "parser_ops" : [
             {
               "parameters" : [
                 {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._is_ipv41"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv4"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_ipv4",
+          "id" : 7,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
                   "type" : "regular",
                   "value" : "ipv4"
                 }
@@ -764,7 +839,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto16"]
                 },
                 {
                   "type" : "field",
@@ -777,7 +852,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
                 },
                 {
                   "type" : "hexstr",
@@ -834,7 +909,7 @@
         },
         {
           "name" : "parse_tcp",
-          "id" : 7,
+          "id" : 8,
           "parser_ops" : [
             {
               "parameters" : [
@@ -849,7 +924,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -862,7 +937,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -883,7 +958,7 @@
         },
         {
           "name" : "parse_udp",
-          "id" : 8,
+          "id" : 9,
           "parser_ops" : [
             {
               "parameters" : [
@@ -898,7 +973,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -911,7 +986,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -937,7 +1012,7 @@
         },
         {
           "name" : "parse_icmp",
-          "id" : 9,
+          "id" : 10,
           "parser_ops" : [
             {
               "parameters" : [
@@ -960,7 +1035,7 @@
         },
         {
           "name" : "parse_int",
-          "id" : 10,
+          "id" : 11,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -984,7 +1059,7 @@
         },
         {
           "name" : "parse_intl4_shim",
-          "id" : 11,
+          "id" : 12,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1027,7 +1102,7 @@
         },
         {
           "name" : "parse_int_data",
-          "id" : 12,
+          "id" : 13,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -1040,7 +1115,7 @@
         },
         {
           "name" : "parse_intl4_tail",
-          "id" : 13,
+          "id" : 14,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1071,7 +1146,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 261,
+        "line" : 276,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -1111,7 +1186,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 80,
+        "line" : 83,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -1183,7 +1258,7 @@
       "binding" : "FabricIngress.next.xconnect",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 92,
+        "line" : 103,
         "column" : 50,
         "source_fragment" : "xconnect_counter"
       }
@@ -1195,7 +1270,7 @@
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 166,
+        "line" : 178,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
@@ -1207,7 +1282,7 @@
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 210,
+        "line" : 222,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
@@ -1255,7 +1330,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 283,
+        "line" : 309,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -1446,7 +1521,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_source16"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_source19"]
             },
             {
               "type" : "expression",
@@ -1482,7 +1557,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
             },
             {
               "type" : "expression",
@@ -1511,7 +1586,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -1558,7 +1633,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -1589,7 +1664,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+              "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
             },
             {
               "type" : "runtime_data",
@@ -1598,7 +1673,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 83,
+            "line" : 86,
             "column" : 33,
             "source_fragment" : "= fwd_type; ..."
           }
@@ -1620,7 +1695,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1651,7 +1726,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             },
             {
               "type" : "hexstr",
@@ -1670,7 +1745,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1701,7 +1776,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1738,7 +1813,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1783,7 +1858,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -1865,7 +1940,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -1912,7 +1987,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -1956,6 +2031,25 @@
             "column" : 5,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
           }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
         }
       ]
     },
@@ -1974,7 +2068,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1983,7 +2077,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 100,
+            "line" : 112,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2125,7 +2219,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             },
             {
               "type" : "runtime_data",
@@ -2222,7 +2316,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 213,
+            "line" : 225,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -2232,7 +2326,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+              "value" : ["scalars", "fabric_metadata_t._is_multicast14"]
             },
             {
               "type" : "expression",
@@ -2251,7 +2345,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 214,
+            "line" : 226,
             "column" : 37,
             "source_fragment" : "= true; ..."
           }
@@ -2302,7 +2396,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out15"]
             },
             {
               "type" : "expression",
@@ -2348,26 +2442,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "field",
@@ -2376,7 +2451,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 106,
+            "line" : 110,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
@@ -2386,7 +2461,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             },
             {
               "type" : "field",
@@ -2395,7 +2470,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 107,
+            "line" : 111,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
@@ -2405,7 +2480,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             },
             {
               "type" : "field",
@@ -2414,7 +2489,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 112,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
@@ -2431,7 +2506,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
             },
             {
               "type" : "hexstr",
@@ -2440,7 +2515,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
@@ -2457,6 +2532,110 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8847"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 108,
+            "column" : 31,
+            "source_fragment" : "0x8847; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_3",
+      "id" : 33,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "= hdr.inner_vlan_tag.eth_type; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_4",
+      "id" : 34,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_5",
+      "id" : 35,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "= hdr.ethernet.eth_type; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_6",
+      "id" : 36,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp"]
             },
             {
@@ -2506,8 +2685,8 @@
       ]
     },
     {
-      "name" : "act_3",
-      "id" : 33,
+      "name" : "act_7",
+      "id" : 37,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2565,37 +2744,37 @@
     },
     {
       "name" : "nop",
-      "id" : 34,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 35,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 36,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "NoAction",
-      "id" : 37,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "NoAction",
       "id" : 38,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
+      "name" : "nop",
       "id" : 39,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "nop",
+      "id" : 40,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "NoAction",
+      "id" : 41,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "NoAction",
+      "id" : 42,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
+      "id" : 43,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -2954,7 +3133,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+              "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
             }
           ],
           "source_info" : {
@@ -3090,7 +3269,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 40,
+      "id" : 44,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -3103,7 +3282,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_transit17"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_transit20"]
             },
             {
               "type" : "expression",
@@ -3132,7 +3311,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
             },
             {
               "type" : "runtime_data",
@@ -3150,655 +3329,12 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 41,
+      "id" : 45,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 42,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_occupancy"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 60,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 62,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_occupancy"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "deq_qdepth"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 63,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 43,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_hop_latency"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 54,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_hop_latency", "hop_latency"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "deq_timedelta"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 55,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 44,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_occupancy"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 60,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 62,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_occupancy"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "deq_qdepth"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 63,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_hop_latency"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 54,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_hop_latency", "hop_latency"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "deq_timedelta"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 55,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x02"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 103,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0008"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 104,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 45,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
       "id" : 46,
       "runtime_data" : [],
       "primitives" : [
@@ -3869,90 +3405,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -3966,11 +3423,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -3984,9 +3441,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -3994,7 +3451,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -4008,11 +3465,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -4026,15 +3483,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
       "id" : 47,
       "runtime_data" : [],
       "primitives" : [
@@ -4073,90 +3530,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -4170,11 +3548,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -4188,9 +3566,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -4198,7 +3576,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -4212,11 +3590,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -4230,15 +3608,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
       "id" : 48,
       "runtime_data" : [],
       "primitives" : [
@@ -4343,6 +3721,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x02"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 103,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0008"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 104,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
+      "id" : 49,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -4426,7 +3895,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -4440,132 +3909,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 49,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_switch_id"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 41,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 42,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4593,7 +3937,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -4607,7 +3951,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4633,7 +3977,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
       "id" : 50,
       "runtime_data" : [],
       "primitives" : [
@@ -4708,14 +4052,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_switch_id"
+              "value" : "int_port_ids"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 41,
+            "line" : 47,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
+            "source_fragment" : "hdr.int_port_ids.setValid()"
           }
         },
         {
@@ -4723,18 +4067,31 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
+              "value" : ["int_port_ids", "ingress_port_id"]
             },
             {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 42,
+            "line" : 48,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
           }
         },
         {
@@ -4742,7 +4099,39 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -4756,7 +4145,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4784,7 +4173,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -4798,7 +4187,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4824,7 +4213,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
       "id" : 51,
       "runtime_data" : [],
       "primitives" : [
@@ -4867,14 +4256,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_switch_id"
+              "value" : "int_port_ids"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 41,
+            "line" : 47,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
+            "source_fragment" : "hdr.int_port_ids.setValid()"
           }
         },
         {
@@ -4882,18 +4271,31 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
+              "value" : ["int_port_ids", "ingress_port_id"]
             },
             {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 42,
+            "line" : 48,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
           }
         },
         {
@@ -4901,7 +4303,39 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -4915,7 +4349,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4943,7 +4377,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -4957,7 +4391,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4983,7 +4417,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
       "id" : 52,
       "runtime_data" : [],
       "primitives" : [
@@ -5092,131 +4526,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_switch_id"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 41,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 42,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 53,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_port_ids"
             }
           ],
@@ -5292,6 +4601,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
+      "id" : 53,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -5315,7 +4715,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
             }
           ],
           "source_info" : {
@@ -5330,7 +4730,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -5344,11 +4744,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -5362,9 +4762,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -5372,7 +4772,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -5386,11 +4786,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -5404,15 +4804,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
       "id" : 54,
       "runtime_data" : [],
       "primitives" : [
@@ -5487,85 +4887,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_switch_id"
             }
           ],
@@ -5585,7 +4906,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
             }
           ],
           "source_info" : {
@@ -5600,7 +4921,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -5614,11 +4935,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -5632,9 +4953,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -5642,7 +4963,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -5656,11 +4977,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -5674,15 +4995,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
       "id" : 55,
       "runtime_data" : [],
       "primitives" : [
@@ -5725,85 +5046,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_switch_id"
             }
           ],
@@ -5823,7 +5065,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
             }
           ],
           "source_info" : {
@@ -5838,7 +5080,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -5852,11 +5094,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -5870,9 +5112,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -5880,7 +5122,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -5894,11 +5136,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -5912,15 +5154,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
       "id" : 56,
       "runtime_data" : [],
       "primitives" : [
@@ -6029,6 +5271,131 @@
           "parameters" : [
             {
               "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
+      "id" : 57,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
               "value" : "int_port_ids"
             }
           ],
@@ -6127,7 +5494,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id19"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
             }
           ],
           "source_info" : {
@@ -6142,7 +5509,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -6156,460 +5523,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x04"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 115,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 4; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0010"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 116,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 16; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 57,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 58,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tx_util"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 88,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 90,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 59,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_congestion"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 80,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 82,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_congestion"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 83,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 60,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tx_util"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 88,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 90,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_congestion"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 80,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 82,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_congestion"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 83,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6637,7 +5551,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -6651,7 +5565,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6677,8 +5591,8 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 61,
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6686,14 +5600,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_egress_tstamp"
+              "value" : "int_q_occupancy"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 74,
+            "line" : 60,
             "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+            "source_fragment" : "hdr.int_q_occupancy.setValid()"
           }
         },
         {
@@ -6701,7 +5615,26 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
+              "value" : ["int_q_occupancy", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 62,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_occupancy", "q_occupancy"]
             },
             {
               "type" : "expression",
@@ -6710,22 +5643,12 @@
                 "value" : {
                   "op" : "&",
                   "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
+                    "type" : "field",
+                    "value" : ["standard_metadata", "deq_qdepth"]
                   },
                   "right" : {
                     "type" : "hexstr",
-                    "value" : "0xffffffff"
+                    "value" : "0xffffff"
                   }
                 }
               }
@@ -6733,9 +5656,24 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 75,
+            "line" : 63,
             "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_port_ids"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 47,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.setValid()"
           }
         },
         {
@@ -6743,7 +5681,105 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["int_port_ids", "ingress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 48,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -6757,11 +5793,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x01"
+                        "value" : "0x03"
                       }
                     }
                   },
@@ -6775,9 +5811,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 97,
+            "line" : 109,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
           }
         },
         {
@@ -6785,7 +5821,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -6799,11 +5835,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0004"
+                        "value" : "0x000c"
                       }
                     }
                   },
@@ -6817,15 +5853,563 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 98,
+            "line" : 110,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
+      "id" : 59,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_hop_latency"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 54,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_hop_latency", "hop_latency"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "deq_timedelta"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 55,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_port_ids"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 47,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "ingress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 48,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
+      "id" : 60,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_q_occupancy"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 60,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_occupancy", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 62,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_occupancy", "q_occupancy"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "deq_qdepth"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 63,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_hop_latency"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 54,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_hop_latency", "hop_latency"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "deq_timedelta"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 55,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_port_ids"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 47,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "ingress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 48,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id22"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x04"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 115,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 4; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0010"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 116,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 16; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
+      "id" : 61,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
       "id" : 62,
       "runtime_data" : [],
       "primitives" : [
@@ -6864,26 +6448,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -6897,53 +6466,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -6957,9 +6484,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -6967,7 +6494,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -6981,11 +6508,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -6999,15 +6526,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
       "id" : 63,
       "runtime_data" : [],
       "primitives" : [
@@ -7065,26 +6592,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -7098,53 +6610,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -7158,9 +6628,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -7168,7 +6638,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -7182,11 +6652,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -7200,15 +6670,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
       "id" : 64,
       "runtime_data" : [],
       "primitives" : [
@@ -7300,6 +6770,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x02"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 103,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0008"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 104,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
+      "id" : 65,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -7361,7 +6922,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -7375,132 +6936,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 65,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_ingress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 68,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -7528,7 +6964,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -7542,7 +6978,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -7568,7 +7004,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
       "id" : 66,
       "runtime_data" : [],
       "primitives" : [
@@ -7611,14 +7047,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_ingress_tstamp"
+              "value" : "int_egress_tstamp"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 68,
+            "line" : 74,
             "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
           }
         },
         {
@@ -7626,26 +7062,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
             },
             {
               "type" : "expression",
@@ -7659,7 +7076,49 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -7687,7 +7146,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -7701,7 +7160,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -7727,7 +7186,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
       "id" : 67,
       "runtime_data" : [],
       "primitives" : [
@@ -7789,14 +7248,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_ingress_tstamp"
+              "value" : "int_egress_tstamp"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 68,
+            "line" : 74,
             "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
           }
         },
         {
@@ -7804,26 +7263,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
             },
             {
               "type" : "expression",
@@ -7837,7 +7277,49 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -7865,7 +7347,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -7879,7 +7361,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -7905,7 +7387,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
       "id" : 68,
       "runtime_data" : [],
       "primitives" : [
@@ -8001,131 +7483,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_ingress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 68,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 69,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_egress_tstamp"
             }
           ],
@@ -8179,6 +7536,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
+      "id" : 69,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -8217,7 +7665,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -8231,11 +7679,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -8249,9 +7697,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -8259,7 +7707,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -8273,11 +7721,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -8291,15 +7739,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
       "id" : 70,
       "runtime_data" : [],
       "primitives" : [
@@ -8342,63 +7790,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_ingress_tstamp"
             }
           ],
@@ -8433,7 +7824,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -8447,11 +7838,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -8465,9 +7856,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -8475,7 +7866,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -8489,11 +7880,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -8507,15 +7898,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
       "id" : 71,
       "runtime_data" : [],
       "primitives" : [
@@ -8577,63 +7968,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_ingress_tstamp"
             }
           ],
@@ -8668,7 +8002,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -8682,11 +8016,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -8700,9 +8034,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -8710,7 +8044,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -8724,11 +8058,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -8742,15 +8076,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
       "id" : 72,
       "runtime_data" : [],
       "primitives" : [
@@ -8846,6 +8180,131 @@
           "parameters" : [
             {
               "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
+      "id" : 73,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
               "value" : "int_egress_tstamp"
             }
           ],
@@ -8937,7 +8396,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
             },
             {
               "type" : "expression",
@@ -8951,7 +8410,727 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x02"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 103,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0008"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 104,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
+      "id" : 74,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tx_util"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 88,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 90,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 74,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
+      "id" : 75,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_q_congestion"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 80,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 82,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_congestion"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 83,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 74,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
+      "id" : 76,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tx_util"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 88,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 90,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_q_congestion"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 80,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 82,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_congestion"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 83,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 74,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8979,7 +9158,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
             },
             {
               "type" : "expression",
@@ -8993,7 +9172,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9020,7 +9199,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 73,
+      "id" : 77,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9033,7 +9212,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 252,
+            "line" : 264,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -9043,17 +9222,17 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+              "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 254,
-            "column" : 33,
+            "line" : 266,
+            "column" : 38,
             "source_fragment" : "= fabric_metadata.ip_eth_type; ..."
           }
         }
@@ -9061,7 +9240,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 74,
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9074,7 +9253,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 259,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -9088,12 +9267,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 260,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
@@ -9112,7 +9291,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 261,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -9131,7 +9310,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 262,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -9145,12 +9324,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 263,
+            "line" : 275,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
@@ -9160,7 +9339,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -9178,7 +9357,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 75,
+      "id" : 79,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9191,7 +9370,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 271,
+            "line" : 283,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -9205,12 +9384,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 272,
+            "line" : 284,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -9224,12 +9403,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 285,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -9243,14 +9422,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 286,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -9262,12 +9441,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 287,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -9295,7 +9474,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 76,
+      "id" : 80,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9307,14 +9486,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 312,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -9327,7 +9506,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -9335,8 +9514,8 @@
       ]
     },
     {
-      "name" : "act_4",
-      "id" : 77,
+      "name" : "act_8",
+      "id" : 81,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9352,8 +9531,8 @@
       ]
     },
     {
-      "name" : "act_5",
-      "id" : 78,
+      "name" : "act_9",
+      "id" : 82,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9403,8 +9582,8 @@
       ]
     },
     {
-      "name" : "act_6",
-      "id" : 79,
+      "name" : "act_10",
+      "id" : 83,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9417,7 +9596,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -9425,8 +9604,8 @@
       ]
     },
     {
-      "name" : "act_7",
-      "id" : 80,
+      "name" : "act_11",
+      "id" : 84,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9455,8 +9634,8 @@
       ]
     },
     {
-      "name" : "act_8",
-      "id" : 81,
+      "name" : "act_12",
+      "id" : 85,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9485,8 +9664,8 @@
       ]
     },
     {
-      "name" : "act_9",
-      "id" : 82,
+      "name" : "act_13",
+      "id" : 86,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9499,7 +9678,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -9507,8 +9686,8 @@
       ]
     },
     {
-      "name" : "act_10",
-      "id" : 83,
+      "name" : "act_14",
+      "id" : 87,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9548,7 +9727,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -9556,8 +9735,8 @@
       ]
     },
     {
-      "name" : "act_11",
-      "id" : 84,
+      "name" : "act_15",
+      "id" : 88,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9570,7 +9749,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -9578,8 +9757,8 @@
       ]
     },
     {
-      "name" : "act_12",
-      "id" : 85,
+      "name" : "act_16",
+      "id" : 89,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9619,7 +9798,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -9627,8 +9806,8 @@
       ]
     },
     {
-      "name" : "act_13",
-      "id" : 86,
+      "name" : "act_17",
+      "id" : 90,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9657,8 +9836,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 87,
+      "name" : "act_18",
+      "id" : 91,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9693,8 +9872,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 88,
+      "name" : "act_19",
+      "id" : 92,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9720,7 +9899,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       }
                     }
                   },
@@ -9742,8 +9921,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 89,
+      "name" : "act_20",
+      "id" : 93,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9791,8 +9970,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 90,
+      "name" : "act_21",
+      "id" : 94,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9818,7 +9997,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes21"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes24"]
                       }
                     }
                   },
@@ -9840,8 +10019,8 @@
       ]
     },
     {
-      "name" : "act_18",
-      "id" : 91,
+      "name" : "act_22",
+      "id" : 95,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9867,7 +10046,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words20"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words23"]
                       }
                     }
                   },
@@ -9935,9 +10114,9 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+            "line" : 110,
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -9964,7 +10143,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -9977,9 +10156,9 @@
           "direct_meters" : null,
           "action_ids" : [31],
           "actions" : ["act_1"],
-          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "base_default_next" : "node_8",
           "next_tables" : {
-            "act_1" : "FabricIngress.filtering.ingress_port_vlan"
+            "act_1" : "node_8"
           },
           "default_entry" : {
             "action_id" : 31,
@@ -9989,11 +10168,127 @@
           }
         },
         {
-          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "name" : "tbl_act_2",
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 51,
+            "line" : 131,
+            "column" : 42,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [32],
+          "actions" : ["act_2"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_2" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 32,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_3",
+          "id" : 4,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [33],
+          "actions" : ["act_3"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_3" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 33,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_4",
+          "id" : 5,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [34],
+          "actions" : ["act_4"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_4" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 34,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_5",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [35],
+          "actions" : ["act_5"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_5" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 35,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "id" : 7,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 53,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -10015,6 +10310,12 @@
               "name" : "vlan_id",
               "target" : ["vlan_tag", "vlan_id"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "inner_vlan_id",
+              "target" : ["inner_vlan_tag", "vlan_id"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -10040,10 +10341,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 4,
+          "id" : 8,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 87,
+            "line" : 90,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -10062,8 +10363,20 @@
             },
             {
               "match_type" : "exact",
-              "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "name" : "is_ipv4",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv41"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_ipv6",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv62"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_mpls",
+              "target" : ["scalars", "fabric_metadata_t._is_mpls3"],
               "mask" : null
             }
           ],
@@ -10075,9 +10388,9 @@
           "direct_meters" : null,
           "action_ids" : [12],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "node_10",
+          "base_default_next" : "node_17",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "node_10"
+            "FabricIngress.filtering.set_forwarding_type" : "node_17"
           },
           "default_entry" : {
             "action_id" : 12,
@@ -10088,7 +10401,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 5,
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 46,
@@ -10099,7 +10412,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -10131,7 +10444,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 6,
+          "id" : 10,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 71,
@@ -10142,7 +10455,7 @@
             {
               "match_type" : "exact",
               "name" : "mpls_label",
-              "target" : ["scalars", "fabric_metadata_t._mpls_label5"],
+              "target" : ["scalars", "fabric_metadata_t._mpls_label8"],
               "mask" : null
             }
           ],
@@ -10168,7 +10481,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v4",
-          "id" : 7,
+          "id" : 11,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 101,
@@ -10206,7 +10519,7 @@
         },
         {
           "name" : "FabricIngress.acl.acl",
-          "id" : 8,
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 60,
@@ -10223,19 +10536,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t._ip_proto13"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto16"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport17"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport18"],
               "mask" : null
             },
             {
@@ -10259,7 +10572,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "target" : ["scalars", "fabric_metadata_t._last_eth_type0"],
               "mask" : null
             },
             {
@@ -10295,13 +10608,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_25",
           "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_25",
+            "FabricIngress.acl.punt_to_cpu" : "node_25",
+            "FabricIngress.acl.set_clone_session_id" : "node_25",
+            "FabricIngress.acl.drop" : "node_25",
+            "FabricIngress.acl.nop_acl" : "node_25"
           },
           "default_entry" : {
             "action_id" : 21,
@@ -10312,10 +10625,10 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 9,
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 104,
+            "line" : 116,
             "column" : 10,
             "source_fragment" : "xconnect"
           },
@@ -10329,7 +10642,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -10356,10 +10669,10 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 10,
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 184,
+            "line" : 196,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -10367,7 +10680,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -10390,10 +10703,10 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 11,
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 218,
+            "line" : 230,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -10401,7 +10714,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -10427,10 +10740,10 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 12,
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 74,
+            "line" : 82,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -10438,7 +10751,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -10450,10 +10763,10 @@
           "direct_meters" : null,
           "action_ids" : [22, 4],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_23",
+          "base_default_next" : "node_30",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_23",
-            "nop" : "node_23"
+            "FabricIngress.next.set_vlan" : "node_30",
+            "nop" : "node_30"
           },
           "default_entry" : {
             "action_id" : 4,
@@ -10463,8 +10776,8 @@
           }
         },
         {
-          "name" : "tbl_act_2",
-          "id" : 13,
+          "name" : "tbl_act_6",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -10478,22 +10791,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [32],
-          "actions" : ["act_2"],
-          "base_default_next" : "node_25",
+          "action_ids" : [36],
+          "actions" : ["act_6"],
+          "base_default_next" : "node_32",
           "next_tables" : {
-            "act_2" : "node_25"
+            "act_6" : "node_32"
           },
           "default_entry" : {
-            "action_id" : 32,
+            "action_id" : 36,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_3",
-          "id" : 14,
+          "name" : "tbl_act_7",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -10507,14 +10820,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [33],
-          "actions" : ["act_3"],
+          "action_ids" : [37],
+          "actions" : ["act_7"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
-            "act_3" : "FabricIngress.process_set_source_sink.tb_set_source"
+            "act_7" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 33,
+            "action_id" : 37,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -10522,7 +10835,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_source",
-          "id" : 15,
+          "id" : 19,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 46,
@@ -10564,7 +10877,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 165,
+            "line" : 177,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -10582,15 +10895,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto16"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
               }
             ]
           }
@@ -10625,7 +10938,7 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 104,
+            "line" : 109,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -10648,7 +10961,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 121,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -10671,14 +10984,83 @@
             }
           },
           "true_next" : "tbl_act_1",
-          "false_next" : "FabricIngress.filtering.ingress_port_vlan"
+          "false_next" : "node_8"
+        },
+        {
+          "name" : "node_8",
+          "id" : 3,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 130,
+            "column" : 12,
+            "source_fragment" : "hdr.mpls.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["mpls", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_2",
+          "false_next" : "node_10"
         },
         {
           "name" : "node_10",
-          "id" : 3,
+          "id" : 4,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 133,
+            "column" : 16,
+            "source_fragment" : "hdr.vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "node_11",
+          "false_next" : "tbl_act_5"
+        },
+        {
+          "name" : "node_11",
+          "id" : 5,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 135,
+            "column" : 19,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_3",
+          "false_next" : "tbl_act_4"
+        },
+        {
+          "name" : "node_17",
+          "id" : 6,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 74,
+            "line" : 71,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -10693,7 +11075,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
                   }
                 }
               },
@@ -10703,12 +11085,12 @@
               }
             }
           },
-          "true_next" : "node_11",
+          "true_next" : "node_18",
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_11",
-          "id" : 4,
+          "name" : "node_18",
+          "id" : 7,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 141,
@@ -10721,7 +11103,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -10730,11 +11112,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_13"
+          "false_next" : "node_20"
         },
         {
-          "name" : "node_13",
-          "id" : 5,
+          "name" : "node_20",
+          "id" : 8,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 142,
@@ -10747,7 +11129,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -10756,11 +11138,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_15"
+          "false_next" : "node_22"
         },
         {
-          "name" : "node_15",
-          "id" : 6,
+          "name" : "node_22",
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 143,
@@ -10773,7 +11155,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -10785,11 +11167,11 @@
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_18",
-          "id" : 7,
+          "name" : "node_25",
+          "id" : 10,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 78,
+            "line" : 75,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -10804,7 +11186,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_next11"]
                   }
                 }
               },
@@ -10818,8 +11200,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_23",
-          "id" : 8,
+          "name" : "node_30",
+          "id" : 11,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -10840,12 +11222,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_2",
-          "false_next" : "node_25"
+          "true_next" : "tbl_act_6",
+          "false_next" : "node_32"
         },
         {
-          "name" : "node_25",
-          "id" : 9,
+          "name" : "node_32",
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -10866,7 +11248,7 @@
               }
             }
           },
-          "true_next" : "tbl_act_3",
+          "true_next" : "tbl_act_7",
           "false_next" : "FabricIngress.process_set_source_sink.tb_set_source"
         }
       ]
@@ -10876,15 +11258,15 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 92,
+        "line" : 93,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_30",
+      "init_table" : "node_37",
       "tables" : [
         {
-          "name" : "tbl_act_4",
-          "id" : 16,
+          "name" : "tbl_act_8",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -10898,22 +11280,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [77],
-          "actions" : ["act_4"],
-          "base_default_next" : "node_32",
+          "action_ids" : [81],
+          "actions" : ["act_8"],
+          "base_default_next" : "node_39",
           "next_tables" : {
-            "act_4" : "node_32"
+            "act_8" : "node_39"
           },
           "default_entry" : {
-            "action_id" : 77,
+            "action_id" : 81,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_5",
-          "id" : 17,
+          "name" : "tbl_act_9",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -10927,25 +11309,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [78],
-          "actions" : ["act_5"],
-          "base_default_next" : "node_34",
+          "action_ids" : [82],
+          "actions" : ["act_9"],
+          "base_default_next" : "node_41",
           "next_tables" : {
-            "act_5" : "node_34"
+            "act_9" : "node_41"
           },
           "default_entry" : {
-            "action_id" : 78,
+            "action_id" : 82,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_6",
-          "id" : 18,
+          "name" : "tbl_act_10",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -10956,14 +11338,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [79],
-          "actions" : ["act_6"],
-          "base_default_next" : "node_36",
+          "action_ids" : [83],
+          "actions" : ["act_10"],
+          "base_default_next" : "node_43",
           "next_tables" : {
-            "act_6" : "node_36"
+            "act_10" : "node_43"
           },
           "default_entry" : {
-            "action_id" : 79,
+            "action_id" : 83,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -10971,10 +11353,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 19,
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -10985,14 +11367,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [73],
+          "action_ids" : [77],
           "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" : 73,
+            "action_id" : 77,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11000,10 +11382,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 20,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 314,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -11014,14 +11396,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [74],
+          "action_ids" : [78],
           "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" : 74,
+            "action_id" : 78,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11029,10 +11411,10 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 21,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 291,
+            "line" : 317,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -11040,7 +11422,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -11056,23 +11438,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [76, 36],
+          "action_ids" : [80, 40],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_7",
-            "__MISS__" : "tbl_act_8"
+            "__HIT__" : "tbl_act_11",
+            "__MISS__" : "tbl_act_12"
           },
           "default_entry" : {
-            "action_id" : 36,
+            "action_id" : 40,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_7",
-          "id" : 22,
+          "name" : "tbl_act_11",
+          "id" : 26,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -11080,22 +11462,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [80],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_43",
+          "action_ids" : [84],
+          "actions" : ["act_11"],
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "act_7" : "node_43"
+            "act_11" : "node_50"
           },
           "default_entry" : {
-            "action_id" : 80,
+            "action_id" : 84,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_8",
-          "id" : 23,
+          "name" : "tbl_act_12",
+          "id" : 27,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -11103,14 +11485,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [81],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_43",
+          "action_ids" : [85],
+          "actions" : ["act_12"],
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "act_8" : "node_43"
+            "act_12" : "node_50"
           },
           "default_entry" : {
-            "action_id" : 81,
+            "action_id" : 85,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11118,11 +11500,11 @@
         },
         {
           "name" : "tbl_egress_next_push_vlan",
-          "id" : 24,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 320,
-            "column" : 16,
+            "line" : 357,
+            "column" : 20,
             "source_fragment" : "push_vlan()"
           },
           "key" : [],
@@ -11132,25 +11514,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [75],
+          "action_ids" : [79],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_46",
+          "base_default_next" : "node_53",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_46"
+            "FabricEgress.egress_next.push_vlan" : "node_53"
           },
           "default_entry" : {
-            "action_id" : 75,
+            "action_id" : 79,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_9",
-          "id" : 25,
+          "name" : "tbl_act_13",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 25,
             "source_fragment" : "="
           },
@@ -11161,25 +11543,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [83],
-          "actions" : ["act_10"],
-          "base_default_next" : "node_48",
+          "action_ids" : [87],
+          "actions" : ["act_14"],
+          "base_default_next" : "node_55",
           "next_tables" : {
-            "act_10" : "node_48"
+            "act_14" : "node_55"
           },
           "default_entry" : {
-            "action_id" : 83,
+            "action_id" : 87,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_10",
-          "id" : 26,
+          "name" : "tbl_act_14",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -11190,25 +11572,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [82],
-          "actions" : ["act_9"],
-          "base_default_next" : "node_54",
+          "action_ids" : [86],
+          "actions" : ["act_13"],
+          "base_default_next" : "node_61",
           "next_tables" : {
-            "act_9" : "node_54"
+            "act_13" : "node_61"
           },
           "default_entry" : {
-            "action_id" : 82,
+            "action_id" : 86,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_11",
-          "id" : 27,
+          "name" : "tbl_act_15",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 29,
             "source_fragment" : "="
           },
@@ -11219,25 +11601,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [85],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_52",
+          "action_ids" : [89],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_59",
           "next_tables" : {
-            "act_12" : "node_52"
+            "act_16" : "node_59"
           },
           "default_entry" : {
-            "action_id" : 85,
+            "action_id" : 89,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 28,
+          "name" : "tbl_act_16",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -11248,14 +11630,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [84],
-          "actions" : ["act_11"],
-          "base_default_next" : "node_54",
+          "action_ids" : [88],
+          "actions" : ["act_15"],
+          "base_default_next" : "node_61",
           "next_tables" : {
-            "act_11" : "node_54"
+            "act_15" : "node_61"
           },
           "default_entry" : {
-            "action_id" : 84,
+            "action_id" : 88,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11263,7 +11645,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "id" : 29,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/int/int_source.p4",
             "line" : 66,
@@ -11286,13 +11668,13 @@
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport17"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport18"],
               "mask" : null
             }
           ],
@@ -11302,23 +11684,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39, 34],
+          "action_ids" : [43, 38],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
-          "base_default_next" : "node_57",
+          "base_default_next" : "node_64",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_57",
-            "nop" : "node_57"
+            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_64",
+            "nop" : "node_64"
           },
           "default_entry" : {
-            "action_id" : 34,
+            "action_id" : 38,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 30,
+          "name" : "tbl_act_17",
+          "id" : 34,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -11326,14 +11708,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [86],
-          "actions" : ["act_13"],
+          "action_ids" : [90],
+          "actions" : ["act_17"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
-            "act_13" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
+            "act_17" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 86,
+            "action_id" : 90,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11341,7 +11723,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
-          "id" : 31,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 315,
@@ -11362,23 +11744,23 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40, 35],
+          "action_ids" : [44, 39],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
-          "base_default_next" : "node_60",
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_60",
-            "nop" : "node_60"
+            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_67",
+            "nop" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 35,
+            "action_id" : 39,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_14",
-          "id" : 32,
+          "name" : "tbl_act_18",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 420,
@@ -11392,14 +11774,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [87],
-          "actions" : ["act_14"],
-          "base_default_next" : "node_62",
+          "action_ids" : [91],
+          "actions" : ["act_18"],
+          "base_default_next" : "node_69",
           "next_tables" : {
-            "act_14" : "node_62"
+            "act_18" : "node_69"
           },
           "default_entry" : {
-            "action_id" : 87,
+            "action_id" : 91,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11407,7 +11789,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "id" : 33,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 331,
@@ -11428,7 +11810,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 37],
+          "action_ids" : [45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 41],
           "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" : {
@@ -11451,7 +11833,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 37,
+            "action_id" : 41,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -11471,7 +11853,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 41,
+                "action_id" : 45,
                 "action_data" : []
               },
               "priority" : 1
@@ -11490,7 +11872,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 42,
+                "action_id" : 46,
                 "action_data" : []
               },
               "priority" : 2
@@ -11509,7 +11891,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 43,
+                "action_id" : 47,
                 "action_data" : []
               },
               "priority" : 3
@@ -11528,7 +11910,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 44,
+                "action_id" : 48,
                 "action_data" : []
               },
               "priority" : 4
@@ -11547,7 +11929,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 45,
+                "action_id" : 49,
                 "action_data" : []
               },
               "priority" : 5
@@ -11566,7 +11948,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 46,
+                "action_id" : 50,
                 "action_data" : []
               },
               "priority" : 6
@@ -11585,7 +11967,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 47,
+                "action_id" : 51,
                 "action_data" : []
               },
               "priority" : 7
@@ -11604,7 +11986,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 48,
+                "action_id" : 52,
                 "action_data" : []
               },
               "priority" : 8
@@ -11623,7 +12005,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 49,
+                "action_id" : 53,
                 "action_data" : []
               },
               "priority" : 9
@@ -11642,7 +12024,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 50,
+                "action_id" : 54,
                 "action_data" : []
               },
               "priority" : 10
@@ -11661,7 +12043,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 51,
+                "action_id" : 55,
                 "action_data" : []
               },
               "priority" : 11
@@ -11680,7 +12062,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 52,
+                "action_id" : 56,
                 "action_data" : []
               },
               "priority" : 12
@@ -11699,7 +12081,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 53,
+                "action_id" : 57,
                 "action_data" : []
               },
               "priority" : 13
@@ -11718,7 +12100,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 54,
+                "action_id" : 58,
                 "action_data" : []
               },
               "priority" : 14
@@ -11737,7 +12119,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 55,
+                "action_id" : 59,
                 "action_data" : []
               },
               "priority" : 15
@@ -11756,7 +12138,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 56,
+                "action_id" : 60,
                 "action_data" : []
               },
               "priority" : 16
@@ -11765,7 +12147,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
-          "id" : 34,
+          "id" : 38,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 375,
@@ -11786,30 +12168,30 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 38],
+          "action_ids" : [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 42],
           "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_act_15",
+          "base_default_next" : "tbl_act_19",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14" : "tbl_act_15",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15" : "tbl_act_15",
-            "NoAction" : "tbl_act_15"
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14" : "tbl_act_19",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15" : "tbl_act_19",
+            "NoAction" : "tbl_act_19"
           },
           "default_entry" : {
-            "action_id" : 38,
+            "action_id" : 42,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -11829,7 +12211,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 57,
+                "action_id" : 61,
                 "action_data" : []
               },
               "priority" : 1
@@ -11848,7 +12230,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 58,
+                "action_id" : 62,
                 "action_data" : []
               },
               "priority" : 2
@@ -11867,7 +12249,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 59,
+                "action_id" : 63,
                 "action_data" : []
               },
               "priority" : 3
@@ -11886,7 +12268,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 60,
+                "action_id" : 64,
                 "action_data" : []
               },
               "priority" : 4
@@ -11905,7 +12287,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 61,
+                "action_id" : 65,
                 "action_data" : []
               },
               "priority" : 5
@@ -11924,7 +12306,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 62,
+                "action_id" : 66,
                 "action_data" : []
               },
               "priority" : 6
@@ -11943,7 +12325,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 63,
+                "action_id" : 67,
                 "action_data" : []
               },
               "priority" : 7
@@ -11962,7 +12344,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 64,
+                "action_id" : 68,
                 "action_data" : []
               },
               "priority" : 8
@@ -11981,7 +12363,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 65,
+                "action_id" : 69,
                 "action_data" : []
               },
               "priority" : 9
@@ -12000,7 +12382,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 66,
+                "action_id" : 70,
                 "action_data" : []
               },
               "priority" : 10
@@ -12019,7 +12401,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 67,
+                "action_id" : 71,
                 "action_data" : []
               },
               "priority" : 11
@@ -12038,7 +12420,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 68,
+                "action_id" : 72,
                 "action_data" : []
               },
               "priority" : 12
@@ -12057,7 +12439,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 69,
+                "action_id" : 73,
                 "action_data" : []
               },
               "priority" : 13
@@ -12076,7 +12458,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 70,
+                "action_id" : 74,
                 "action_data" : []
               },
               "priority" : 14
@@ -12095,7 +12477,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 71,
+                "action_id" : 75,
                 "action_data" : []
               },
               "priority" : 15
@@ -12114,7 +12496,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 72,
+                "action_id" : 76,
                 "action_data" : []
               },
               "priority" : 16
@@ -12122,8 +12504,8 @@
           ]
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 35,
+          "name" : "tbl_act_19",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 425,
@@ -12137,22 +12519,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [89],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_66",
+          "action_ids" : [93],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_73",
           "next_tables" : {
-            "act_16" : "node_66"
+            "act_20" : "node_73"
           },
           "default_entry" : {
-            "action_id" : 89,
+            "action_id" : 93,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 36,
+          "name" : "tbl_act_20",
+          "id" : 40,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 428,
@@ -12166,22 +12548,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [88],
-          "actions" : ["act_15"],
-          "base_default_next" : "node_68",
+          "action_ids" : [92],
+          "actions" : ["act_19"],
+          "base_default_next" : "node_75",
           "next_tables" : {
-            "act_15" : "node_68"
+            "act_19" : "node_75"
           },
           "default_entry" : {
-            "action_id" : 88,
+            "action_id" : 92,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 37,
+          "name" : "tbl_act_21",
+          "id" : 41,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 431,
@@ -12195,22 +12577,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [90],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_70",
+          "action_ids" : [94],
+          "actions" : ["act_21"],
+          "base_default_next" : "node_77",
           "next_tables" : {
-            "act_17" : "node_70"
+            "act_21" : "node_77"
           },
           "default_entry" : {
-            "action_id" : 90,
+            "action_id" : 94,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 38,
+          "name" : "tbl_act_22",
+          "id" : 42,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 434,
@@ -12224,14 +12606,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [91],
-          "actions" : ["act_18"],
+          "action_ids" : [95],
+          "actions" : ["act_22"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_18" : null
+            "act_22" : null
           },
           "default_entry" : {
-            "action_id" : 91,
+            "action_id" : 95,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12241,8 +12623,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_30",
-          "id" : 10,
+          "name" : "node_37",
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -12260,7 +12642,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out15"]
                   }
                 }
               },
@@ -12270,12 +12652,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_4",
-          "false_next" : "node_32"
+          "true_next" : "tbl_act_8",
+          "false_next" : "node_39"
         },
         {
-          "name" : "node_32",
-          "id" : 11,
+          "name" : "node_39",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -12296,15 +12678,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_5",
-          "false_next" : "node_34"
+          "true_next" : "tbl_act_9",
+          "false_next" : "node_41"
         },
         {
-          "name" : "node_34",
-          "id" : 12,
+          "name" : "node_41",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 306,
+            "line" : 332,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -12323,7 +12705,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast14"]
                       }
                     }
                   },
@@ -12349,15 +12731,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_6",
-          "false_next" : "node_36"
+          "true_next" : "tbl_act_10",
+          "false_next" : "node_43"
         },
         {
-          "name" : "node_36",
-          "id" : 13,
+          "name" : "node_43",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 311,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -12367,7 +12749,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -12375,15 +12757,15 @@
               }
             }
           },
-          "true_next" : "node_37",
+          "true_next" : "node_44",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_37",
-          "id" : 14,
+          "name" : "node_44",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -12402,12 +12784,12 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_43",
-          "id" : 15,
+          "name" : "node_50",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 317,
-            "column" : 12,
+            "line" : 354,
+            "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
           "expression" : {
@@ -12428,16 +12810,16 @@
               }
             }
           },
-          "true_next" : "node_44",
-          "false_next" : "node_46"
+          "true_next" : "node_51",
+          "false_next" : "node_53"
         },
         {
-          "name" : "node_44",
-          "id" : 16,
+          "name" : "node_51",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 319,
-            "column" : 16,
+            "line" : 356,
+            "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
           "expression" : {
@@ -12446,7 +12828,7 @@
               "op" : "!=",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -12455,14 +12837,14 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_46"
+          "false_next" : "node_53"
         },
         {
-          "name" : "node_46",
-          "id" : 17,
+          "name" : "node_53",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 325,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -12477,15 +12859,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_9",
-          "false_next" : "node_50"
+          "true_next" : "tbl_act_13",
+          "false_next" : "node_57"
         },
         {
-          "name" : "node_48",
-          "id" : 18,
+          "name" : "node_55",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -12503,15 +12885,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_10",
-          "false_next" : "node_54"
+          "true_next" : "tbl_act_14",
+          "false_next" : "node_61"
         },
         {
-          "name" : "node_50",
-          "id" : 19,
+          "name" : "node_57",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 329,
+            "line" : 369,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -12526,15 +12908,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_11",
-          "false_next" : "node_54"
+          "true_next" : "tbl_act_15",
+          "false_next" : "node_61"
         },
         {
-          "name" : "node_52",
-          "id" : 20,
+          "name" : "node_59",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -12552,12 +12934,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_12",
-          "false_next" : "node_54"
+          "true_next" : "tbl_act_16",
+          "false_next" : "node_61"
         },
         {
-          "name" : "node_54",
-          "id" : 21,
+          "name" : "node_61",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 102,
@@ -12633,11 +13015,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_55"
+          "true_next" : "node_62"
         },
         {
-          "name" : "node_55",
-          "id" : 22,
+          "name" : "node_62",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 106,
@@ -12655,7 +13037,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_source16"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_source19"]
                   }
                 }
               },
@@ -12666,11 +13048,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "false_next" : "node_57"
+          "false_next" : "node_64"
         },
         {
-          "name" : "node_57",
-          "id" : 23,
+          "name" : "node_64",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 110,
@@ -12689,11 +13071,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_13"
+          "true_next" : "tbl_act_17"
         },
         {
-          "name" : "node_60",
-          "id" : 24,
+          "name" : "node_67",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 419,
@@ -12711,7 +13093,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_transit17"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_transit20"]
                   }
                 }
               },
@@ -12721,12 +13103,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_14",
-          "false_next" : "node_62"
+          "true_next" : "tbl_act_18",
+          "false_next" : "node_69"
         },
         {
-          "name" : "node_62",
-          "id" : 25,
+          "name" : "node_69",
+          "id" : 28,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -12749,8 +13131,8 @@
           "true_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003"
         },
         {
-          "name" : "node_66",
-          "id" : 26,
+          "name" : "node_73",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 427,
@@ -12768,12 +13150,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_68"
+          "true_next" : "tbl_act_20",
+          "false_next" : "node_75"
         },
         {
-          "name" : "node_68",
-          "id" : 27,
+          "name" : "node_75",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 430,
@@ -12791,12 +13173,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_17",
-          "false_next" : "node_70"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_77"
         },
         {
-          "name" : "node_70",
-          "id" : 28,
+          "name" : "node_77",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 433,
@@ -12815,7 +13197,7 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_18"
+          "true_next" : "tbl_act_22"
         }
       ]
     }
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
index 43466cf..9a5f7e1 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
@@ -49,6 +49,12 @@
     bitwidth: 12
     match_type: TERNARY
   }
+  match_fields {
+    id: 4
+    name: "inner_vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
   action_refs {
     id: 16836487
   }
@@ -82,8 +88,20 @@
   }
   match_fields {
     id: 3
-    name: "eth_type"
-    bitwidth: 16
+    name: "is_ipv4"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 4
+    name: "is_ipv6"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 5
+    name: "is_mpls"
+    bitwidth: 1
     match_type: EXACT
   }
   action_refs {
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
index 39698a3..65bcce8 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
@@ -15,35 +15,39 @@
         ["spgw_ingress_hasReturned", 1, false],
         ["egress_next_tmp", 1, false],
         ["process_int_main_process_int_transit_hasReturned", 1, false],
-        ["fabric_metadata_t._eth_type0", 16, false],
-        ["fabric_metadata_t._ip_eth_type1", 16, false],
-        ["fabric_metadata_t._vlan_id2", 12, false],
-        ["fabric_metadata_t._vlan_pri3", 3, false],
-        ["fabric_metadata_t._vlan_cfi4", 1, false],
-        ["fabric_metadata_t._mpls_label5", 20, false],
-        ["fabric_metadata_t._mpls_ttl6", 8, false],
-        ["fabric_metadata_t._skip_forwarding7", 1, false],
-        ["fabric_metadata_t._skip_next8", 1, false],
-        ["fabric_metadata_t._fwd_type9", 3, false],
-        ["fabric_metadata_t._next_id10", 32, false],
-        ["fabric_metadata_t._is_multicast11", 1, false],
-        ["fabric_metadata_t._is_controller_packet_out12", 1, false],
-        ["fabric_metadata_t._ip_proto13", 8, false],
-        ["fabric_metadata_t._l4_sport14", 16, false],
-        ["fabric_metadata_t._l4_dport15", 16, false],
-        ["fabric_metadata_t._spgw_direction16", 2, false],
-        ["fabric_metadata_t._spgw_ipv4_len17", 16, false],
-        ["fabric_metadata_t._spgw_teid18", 32, false],
-        ["fabric_metadata_t._spgw_s1u_enb_addr19", 32, false],
-        ["fabric_metadata_t._spgw_s1u_sgw_addr20", 32, false],
-        ["fabric_metadata_t._int_meta_source21", 1, false],
-        ["fabric_metadata_t._int_meta_transit22", 1, false],
-        ["fabric_metadata_t._int_meta_sink23", 1, false],
-        ["fabric_metadata_t._int_meta_switch_id24", 32, false],
-        ["fabric_metadata_t._int_meta_new_words25", 8, false],
-        ["fabric_metadata_t._int_meta_new_bytes26", 16, false],
-        ["fabric_metadata_t._int_meta_ig_tstamp27", 32, false],
-        ["fabric_metadata_t._int_meta_eg_tstamp28", 32, false]
+        ["fabric_metadata_t._last_eth_type0", 16, false],
+        ["fabric_metadata_t._is_ipv41", 1, false],
+        ["fabric_metadata_t._is_ipv62", 1, false],
+        ["fabric_metadata_t._is_mpls3", 1, false],
+        ["fabric_metadata_t._ip_eth_type4", 16, false],
+        ["fabric_metadata_t._vlan_id5", 12, false],
+        ["fabric_metadata_t._vlan_pri6", 3, false],
+        ["fabric_metadata_t._vlan_cfi7", 1, false],
+        ["fabric_metadata_t._mpls_label8", 20, false],
+        ["fabric_metadata_t._mpls_ttl9", 8, false],
+        ["fabric_metadata_t._skip_forwarding10", 1, false],
+        ["fabric_metadata_t._skip_next11", 1, false],
+        ["fabric_metadata_t._fwd_type12", 3, false],
+        ["fabric_metadata_t._next_id13", 32, false],
+        ["fabric_metadata_t._is_multicast14", 1, false],
+        ["fabric_metadata_t._is_controller_packet_out15", 1, false],
+        ["fabric_metadata_t._ip_proto16", 8, false],
+        ["fabric_metadata_t._l4_sport17", 16, false],
+        ["fabric_metadata_t._l4_dport18", 16, false],
+        ["fabric_metadata_t._spgw_direction19", 2, false],
+        ["fabric_metadata_t._spgw_ipv4_len20", 16, false],
+        ["fabric_metadata_t._spgw_teid21", 32, false],
+        ["fabric_metadata_t._spgw_s1u_enb_addr22", 32, false],
+        ["fabric_metadata_t._spgw_s1u_sgw_addr23", 32, false],
+        ["fabric_metadata_t._int_meta_source24", 1, false],
+        ["fabric_metadata_t._int_meta_transit25", 1, false],
+        ["fabric_metadata_t._int_meta_sink26", 1, false],
+        ["fabric_metadata_t._int_meta_switch_id27", 32, false],
+        ["fabric_metadata_t._int_meta_new_words28", 8, false],
+        ["fabric_metadata_t._int_meta_new_bytes29", 16, false],
+        ["fabric_metadata_t._int_meta_ig_tstamp30", 32, false],
+        ["fabric_metadata_t._int_meta_eg_tstamp31", 32, false],
+        ["_padding_0", 5, false]
       ]
     },
     {
@@ -592,7 +596,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+                  "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
                 },
                 {
                   "type" : "field",
@@ -605,7 +609,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                  "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
                 },
                 {
                   "type" : "hexstr",
@@ -632,7 +636,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "value" : "default",
@@ -666,7 +670,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -681,6 +685,18 @@
               "next_state" : "parse_inner_vlan_tag"
             },
             {
+              "type" : "hexstr",
+              "value" : "0x88a8",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x9100",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
               "value" : "default",
               "mask" : null,
               "next_state" : null
@@ -712,7 +728,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -750,7 +766,30 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                  "value" : ["scalars", "fabric_metadata_t._is_mpls3"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
                 },
                 {
                   "type" : "field",
@@ -763,7 +802,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
                 },
                 {
                   "type" : "field",
@@ -807,12 +846,49 @@
           ]
         },
         {
-          "name" : "parse_ipv4",
+          "name" : "pre_parse_ipv4",
           "id" : 6,
           "parser_ops" : [
             {
               "parameters" : [
                 {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._is_ipv41"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv4"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_ipv4",
+          "id" : 7,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
                   "type" : "regular",
                   "value" : "ipv4"
                 }
@@ -823,7 +899,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto16"]
                 },
                 {
                   "type" : "field",
@@ -836,7 +912,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
                 },
                 {
                   "type" : "hexstr",
@@ -893,7 +969,7 @@
         },
         {
           "name" : "parse_tcp",
-          "id" : 7,
+          "id" : 8,
           "parser_ops" : [
             {
               "parameters" : [
@@ -908,7 +984,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -921,7 +997,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -942,7 +1018,7 @@
         },
         {
           "name" : "parse_udp",
-          "id" : 8,
+          "id" : 9,
           "parser_ops" : [
             {
               "parameters" : [
@@ -957,7 +1033,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -970,7 +1046,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -1002,7 +1078,7 @@
         },
         {
           "name" : "parse_icmp",
-          "id" : 9,
+          "id" : 10,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1025,7 +1101,7 @@
         },
         {
           "name" : "parse_gtpu",
-          "id" : 10,
+          "id" : 11,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1096,7 +1172,7 @@
         },
         {
           "name" : "do_parse_gtpu",
-          "id" : 11,
+          "id" : 12,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1164,7 +1240,7 @@
         },
         {
           "name" : "parse_inner_udp",
-          "id" : 12,
+          "id" : 13,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1179,7 +1255,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -1192,7 +1268,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -1213,7 +1289,7 @@
         },
         {
           "name" : "parse_int",
-          "id" : 13,
+          "id" : 14,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -1237,7 +1313,7 @@
         },
         {
           "name" : "parse_intl4_shim",
-          "id" : 14,
+          "id" : 15,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1280,7 +1356,7 @@
         },
         {
           "name" : "parse_int_data",
-          "id" : 15,
+          "id" : 16,
           "parser_ops" : [],
           "transitions" : [
             {
@@ -1293,7 +1369,7 @@
         },
         {
           "name" : "parse_intl4_tail",
-          "id" : 16,
+          "id" : 17,
           "parser_ops" : [
             {
               "parameters" : [
@@ -1324,7 +1400,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 261,
+        "line" : 276,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -1376,7 +1452,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 80,
+        "line" : 83,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -1448,7 +1524,7 @@
       "binding" : "FabricIngress.next.xconnect",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 92,
+        "line" : 103,
         "column" : 50,
         "source_fragment" : "xconnect_counter"
       }
@@ -1460,7 +1536,7 @@
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 166,
+        "line" : 178,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
@@ -1472,7 +1548,7 @@
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 210,
+        "line" : 222,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
@@ -1520,7 +1596,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 283,
+        "line" : 309,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -1849,7 +1925,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid18"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid21"]
             },
             {
               "type" : "runtime_data",
@@ -1868,7 +1944,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr19"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr22"]
             },
             {
               "type" : "runtime_data",
@@ -1887,7 +1963,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr20"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr23"]
             },
             {
               "type" : "runtime_data",
@@ -1913,7 +1989,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_source21"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_source24"]
             },
             {
               "type" : "expression",
@@ -1949,7 +2025,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
             },
             {
               "type" : "expression",
@@ -1978,7 +2054,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -2025,7 +2101,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -2056,7 +2132,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+              "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
             },
             {
               "type" : "runtime_data",
@@ -2065,7 +2141,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 83,
+            "line" : 86,
             "column" : 33,
             "source_fragment" : "= fwd_type; ..."
           }
@@ -2087,7 +2163,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -2118,7 +2194,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             },
             {
               "type" : "hexstr",
@@ -2137,7 +2213,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -2168,7 +2244,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -2205,7 +2281,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -2250,7 +2326,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -2332,7 +2408,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -2379,7 +2455,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -2423,6 +2499,25 @@
             "column" : 5,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
           }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
         }
       ]
     },
@@ -2441,7 +2536,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -2450,7 +2545,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 100,
+            "line" : 112,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2592,7 +2687,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             },
             {
               "type" : "runtime_data",
@@ -2689,7 +2784,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 213,
+            "line" : 225,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -2699,7 +2794,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+              "value" : ["scalars", "fabric_metadata_t._is_multicast14"]
             },
             {
               "type" : "expression",
@@ -2718,7 +2813,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 214,
+            "line" : 226,
             "column" : 37,
             "source_fragment" : "= true; ..."
           }
@@ -2977,7 +3072,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out15"]
             },
             {
               "type" : "expression",
@@ -3023,26 +3118,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "field",
@@ -3051,7 +3127,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 106,
+            "line" : 110,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
@@ -3061,7 +3137,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             },
             {
               "type" : "field",
@@ -3070,7 +3146,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 107,
+            "line" : 111,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
@@ -3080,7 +3156,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             },
             {
               "type" : "field",
@@ -3089,7 +3165,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 112,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
@@ -3106,7 +3182,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
             },
             {
               "type" : "hexstr",
@@ -3115,7 +3191,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
@@ -3132,23 +3208,19 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
+              "type" : "hexstr",
+              "value" : "0x8847"
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 108,
+            "column" : 31,
+            "source_fragment" : "0x8847; ..."
+          }
         }
       ]
     },
@@ -3162,23 +3234,19 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "= hdr.inner_vlan_tag.eth_type; ..."
+          }
         }
       ]
     },
@@ -3188,18 +3256,22 @@
       "runtime_data" : [],
       "primitives" : [
         {
-          "op" : "mark_to_drop",
+          "op" : "assign",
           "parameters" : [
             {
-              "type" : "header",
-              "value" : "standard_metadata"
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
-            "line" : 149,
-            "column" : 16,
-            "source_fragment" : "mark_to_drop(standard_metadata)"
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
           }
         }
       ]
@@ -3214,18 +3286,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "hexstr",
-              "value" : "0x01"
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 143,
-            "column" : 36,
-            "source_fragment" : "2w1; ..."
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "= hdr.ethernet.eth_type; ..."
           }
         }
       ]
@@ -3240,7 +3312,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp_0"]
+              "value" : ["scalars", "spgw_ingress_tmp"]
             },
             {
               "type" : "expression",
@@ -3270,7 +3342,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp_0"]
+              "value" : ["scalars", "spgw_ingress_tmp"]
             },
             {
               "type" : "expression",
@@ -3296,11 +3368,119 @@
       "runtime_data" : [],
       "primitives" : [
         {
+          "op" : "mark_to_drop",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "standard_metadata"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/spgw.p4",
+            "line" : 149,
+            "column" : 16,
+            "source_fragment" : "mark_to_drop(standard_metadata)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_14",
+      "id" : 48,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 143,
+            "column" : 36,
+            "source_fragment" : "2w1; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_15",
+      "id" : 49,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "spgw_ingress_tmp_0"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_16",
+      "id" : 50,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "spgw_ingress_tmp_0"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_17",
+      "id" : 51,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
             },
             {
               "type" : "hexstr",
@@ -3317,8 +3497,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 48,
+      "name" : "act_18",
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3326,7 +3506,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
             },
             {
               "type" : "hexstr",
@@ -3372,8 +3552,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 49,
+      "name" : "act_19",
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3402,8 +3582,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 50,
+      "name" : "act_20",
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3411,7 +3591,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len20"]
             },
             {
               "type" : "field",
@@ -3428,8 +3608,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 51,
+      "name" : "act_21",
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3486,8 +3666,8 @@
       ]
     },
     {
-      "name" : "act_18",
-      "id" : 52,
+      "name" : "act_22",
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3545,38 +3725,38 @@
     },
     {
       "name" : "nop",
-      "id" : 53,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 54,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 55,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "NoAction",
-      "id" : 56,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "NoAction",
       "id" : 57,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "FabricEgress.spgw_egress.gtpu_encap",
+      "name" : "nop",
       "id" : 58,
       "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "nop",
+      "id" : 59,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "NoAction",
+      "id" : 60,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "NoAction",
+      "id" : 61,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.spgw_egress.gtpu_encap",
+      "id" : 62,
+      "runtime_data" : [],
       "primitives" : [
         {
           "op" : "add_header",
@@ -3815,7 +3995,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr19"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr22"]
             }
           ],
           "source_info" : {
@@ -3834,7 +4014,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr20"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr23"]
             }
           ],
           "source_info" : {
@@ -3935,7 +4115,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len20"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4134,7 +4314,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len20"]
             }
           ],
           "source_info" : {
@@ -4153,7 +4333,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid18"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid21"]
             }
           ],
           "source_info" : {
@@ -4167,7 +4347,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
-      "id" : 59,
+      "id" : 63,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -4526,7 +4706,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+              "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
             }
           ],
           "source_info" : {
@@ -4662,7 +4842,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 60,
+      "id" : 64,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -4675,7 +4855,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_transit22"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_transit25"]
             },
             {
               "type" : "expression",
@@ -4704,7 +4884,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
             },
             {
               "type" : "runtime_data",
@@ -4722,655 +4902,12 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 61,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 62,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_occupancy"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 60,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 62,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_occupancy"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "deq_qdepth"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 63,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 63,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_hop_latency"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 54,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_hop_latency", "hop_latency"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "deq_timedelta"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 55,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 64,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_occupancy"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 60,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 62,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_occupancy", "q_occupancy"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "deq_qdepth"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 63,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_hop_latency"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 54,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_hop_latency", "hop_latency"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "deq_timedelta"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 55,
-            "column" : 8,
-            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x02"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 103,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0008"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 104,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 65,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
       "id" : 66,
       "runtime_data" : [],
       "primitives" : [
@@ -5441,90 +4978,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -5538,11 +4996,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -5556,9 +5014,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -5566,7 +5024,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -5580,11 +5038,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -5598,15 +5056,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
       "id" : 67,
       "runtime_data" : [],
       "primitives" : [
@@ -5645,90 +5103,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -5742,11 +5121,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -5760,9 +5139,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -5770,7 +5149,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -5784,11 +5163,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -5802,15 +5181,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
       "id" : 68,
       "runtime_data" : [],
       "primitives" : [
@@ -5915,6 +5294,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x02"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 103,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0008"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 104,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
+      "id" : 69,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -5998,7 +5468,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -6012,132 +5482,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 69,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_switch_id"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 41,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 42,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6165,7 +5510,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -6179,7 +5524,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6205,7 +5550,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
       "id" : 70,
       "runtime_data" : [],
       "primitives" : [
@@ -6280,14 +5625,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_switch_id"
+              "value" : "int_port_ids"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 41,
+            "line" : 47,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
+            "source_fragment" : "hdr.int_port_ids.setValid()"
           }
         },
         {
@@ -6295,18 +5640,31 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
+              "value" : ["int_port_ids", "ingress_port_id"]
             },
             {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 42,
+            "line" : 48,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
           }
         },
         {
@@ -6314,7 +5672,39 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -6328,7 +5718,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6356,7 +5746,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -6370,7 +5760,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6396,7 +5786,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
       "id" : 71,
       "runtime_data" : [],
       "primitives" : [
@@ -6439,14 +5829,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_switch_id"
+              "value" : "int_port_ids"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 41,
+            "line" : 47,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
+            "source_fragment" : "hdr.int_port_ids.setValid()"
           }
         },
         {
@@ -6454,18 +5844,31 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
+              "value" : ["int_port_ids", "ingress_port_id"]
             },
             {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 42,
+            "line" : 48,
             "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
           }
         },
         {
@@ -6473,7 +5876,39 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -6487,7 +5922,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6515,7 +5950,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -6529,7 +5964,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6555,7 +5990,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
       "id" : 72,
       "runtime_data" : [],
       "primitives" : [
@@ -6664,131 +6099,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_switch_id"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 41,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_switch_id", "switch_id"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 42,
-            "column" : 8,
-            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 73,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_port_ids"
             }
           ],
@@ -6864,6 +6174,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
+      "id" : 73,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -6887,7 +6288,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
             }
           ],
           "source_info" : {
@@ -6902,7 +6303,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -6916,11 +6317,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -6934,9 +6335,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -6944,7 +6345,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -6958,11 +6359,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -6976,15 +6377,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
       "id" : 74,
       "runtime_data" : [],
       "primitives" : [
@@ -7059,85 +6460,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_switch_id"
             }
           ],
@@ -7157,7 +6479,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
             }
           ],
           "source_info" : {
@@ -7172,7 +6494,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -7186,11 +6508,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -7204,9 +6526,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -7214,7 +6536,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -7228,11 +6550,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -7246,15 +6568,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
       "id" : 75,
       "runtime_data" : [],
       "primitives" : [
@@ -7297,85 +6619,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_port_ids"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 47,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "ingress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "ingress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 48,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_port_ids", "egress_port_id"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "field",
-                    "value" : ["standard_metadata", "egress_port"]
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 49,
-            "column" : 8,
-            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_switch_id"
             }
           ],
@@ -7395,7 +6638,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
             }
           ],
           "source_info" : {
@@ -7410,7 +6653,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -7424,11 +6667,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -7442,9 +6685,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -7452,7 +6695,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -7466,11 +6709,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -7484,15 +6727,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
       "id" : 76,
       "runtime_data" : [],
       "primitives" : [
@@ -7601,6 +6844,131 @@
           "parameters" : [
             {
               "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
+      "id" : 77,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
               "value" : "int_port_ids"
             }
           ],
@@ -7699,7 +7067,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id24"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
             }
           ],
           "source_info" : {
@@ -7714,7 +7082,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -7728,460 +7096,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x04"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 115,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 4; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0010"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 116,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 16; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 77,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 78,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tx_util"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 88,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 90,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 79,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_congestion"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 80,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 82,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_congestion"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 83,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x01"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 97,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x0004"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 98,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 80,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tx_util"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 88,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 90,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_q_congestion"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 80,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_id"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x00"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 82,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_q_congestion", "q_congestion"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x000000"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 83,
-            "column" : 8,
-            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8209,7 +7124,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -8223,7 +7138,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -8249,8 +7164,8 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 81,
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8258,14 +7173,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_egress_tstamp"
+              "value" : "int_q_occupancy"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 74,
+            "line" : 60,
             "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+            "source_fragment" : "hdr.int_q_occupancy.setValid()"
           }
         },
         {
@@ -8273,7 +7188,26 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
+              "value" : ["int_q_occupancy", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 62,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_occupancy", "q_occupancy"]
             },
             {
               "type" : "expression",
@@ -8282,22 +7216,12 @@
                 "value" : {
                   "op" : "&",
                   "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
+                    "type" : "field",
+                    "value" : ["standard_metadata", "deq_qdepth"]
                   },
                   "right" : {
                     "type" : "hexstr",
-                    "value" : "0xffffffff"
+                    "value" : "0xffffff"
                   }
                 }
               }
@@ -8305,9 +7229,24 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 75,
+            "line" : 63,
             "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_port_ids"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 47,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.setValid()"
           }
         },
         {
@@ -8315,7 +7254,105 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["int_port_ids", "ingress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 48,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -8329,11 +7366,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x01"
+                        "value" : "0x03"
                       }
                     }
                   },
@@ -8347,9 +7384,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 97,
+            "line" : 109,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
           }
         },
         {
@@ -8357,7 +7394,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -8371,11 +7408,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0004"
+                        "value" : "0x000c"
                       }
                     }
                   },
@@ -8389,15 +7426,563 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 98,
+            "line" : 110,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
+      "id" : 79,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_hop_latency"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 54,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_hop_latency", "hop_latency"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "deq_timedelta"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 55,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_port_ids"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 47,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "ingress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 48,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
+      "id" : 80,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_q_occupancy"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 60,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_occupancy", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 62,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_occupancy", "q_occupancy"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "deq_qdepth"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 63,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_occupancy.q_occupancy = (bit<24>) smeta.deq_qdepth"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_hop_latency"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 54,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_hop_latency", "hop_latency"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "deq_timedelta"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 55,
+            "column" : 8,
+            "source_fragment" : "hdr.int_hop_latency.hop_latency = (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_port_ids"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 47,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "ingress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "ingress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 48,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.ingress_port_id = (bit<16>) smeta.ingress_port"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_port_ids", "egress_port_id"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "field",
+                    "value" : ["standard_metadata", "egress_port"]
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 49,
+            "column" : 8,
+            "source_fragment" : "hdr.int_port_ids.egress_port_id = (bit<16>) smeta.egress_port"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_switch_id"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 41,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_switch_id", "switch_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_switch_id27"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 42,
+            "column" : 8,
+            "source_fragment" : "hdr.int_switch_id.switch_id = fmeta.int_meta.switch_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x04"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 115,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 4; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0010"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 116,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 16; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
+      "id" : 81,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
       "id" : 82,
       "runtime_data" : [],
       "primitives" : [
@@ -8436,26 +8021,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -8469,53 +8039,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -8529,9 +8057,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -8539,7 +8067,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -8553,11 +8081,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -8571,15 +8099,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
       "id" : 83,
       "runtime_data" : [],
       "primitives" : [
@@ -8637,26 +8165,11 @@
           }
         },
         {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -8670,53 +8183,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -8730,9 +8201,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -8740,7 +8211,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -8754,11 +8225,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -8772,15 +8243,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
       "id" : 84,
       "runtime_data" : [],
       "primitives" : [
@@ -8872,6 +8343,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x02"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 103,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0008"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 104,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
+      "id" : 85,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -8933,7 +8495,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -8947,132 +8509,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 85,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "int_ingress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 68,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9100,7 +8537,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -9114,7 +8551,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9140,7 +8577,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
       "id" : 86,
       "runtime_data" : [],
       "primitives" : [
@@ -9183,14 +8620,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_ingress_tstamp"
+              "value" : "int_egress_tstamp"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 68,
+            "line" : 74,
             "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
           }
         },
         {
@@ -9198,26 +8635,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
             },
             {
               "type" : "expression",
@@ -9231,7 +8649,49 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9259,7 +8719,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -9273,7 +8733,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9299,7 +8759,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
       "id" : 87,
       "runtime_data" : [],
       "primitives" : [
@@ -9361,14 +8821,14 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_ingress_tstamp"
+              "value" : "int_egress_tstamp"
             }
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 68,
+            "line" : 74,
             "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
           }
         },
         {
@@ -9376,26 +8836,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
             },
             {
               "type" : "expression",
@@ -9409,7 +8850,49 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9437,7 +8920,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -9451,7 +8934,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -9477,7 +8960,7 @@
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
       "id" : 88,
       "runtime_data" : [],
       "primitives" : [
@@ -9573,131 +9056,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_ingress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 68,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
-            },
-            {
-              "type" : "field",
-              "value" : ["standard_metadata", "enq_timestamp"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 69,
-            "column" : 8,
-            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x03"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 109,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x000c"
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 110,
-            "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 89,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_egress_tstamp"
             }
           ],
@@ -9751,6 +9109,97 @@
           }
         },
         {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
+      "id" : 89,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -9789,7 +9238,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -9803,11 +9252,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x02"
+                        "value" : "0x01"
                       }
                     }
                   },
@@ -9821,9 +9270,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 103,
+            "line" : 97,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 1; ..."
           }
         },
         {
@@ -9831,7 +9280,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -9845,11 +9294,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x0008"
+                        "value" : "0x0004"
                       }
                     }
                   },
@@ -9863,15 +9312,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 104,
+            "line" : 98,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 4; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
       "id" : 90,
       "runtime_data" : [],
       "primitives" : [
@@ -9914,63 +9363,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_ingress_tstamp"
             }
           ],
@@ -10005,7 +9397,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -10019,11 +9411,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -10037,9 +9429,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -10047,7 +9439,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -10061,11 +9453,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -10079,15 +9471,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
       "id" : 91,
       "runtime_data" : [],
       "primitives" : [
@@ -10149,63 +9541,6 @@
           "parameters" : [
             {
               "type" : "header",
-              "value" : "int_egress_tstamp"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 74,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["int_egress_tstamp", "egress_tstamp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "&",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "+",
-                      "left" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "enq_timestamp"]
-                      },
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["standard_metadata", "deq_timedelta"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "hexstr",
-                    "value" : "0xffffffff"
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/int/int_transit.p4",
-            "line" : 75,
-            "column" : 8,
-            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
-          }
-        },
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
               "value" : "int_ingress_tstamp"
             }
           ],
@@ -10240,7 +9575,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -10254,11 +9589,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x03"
+                        "value" : "0x02"
                       }
                     }
                   },
@@ -10272,9 +9607,9 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 109,
+            "line" : 103,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
           }
         },
         {
@@ -10282,7 +9617,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -10296,11 +9631,11 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
-                        "value" : "0x000c"
+                        "value" : "0x0008"
                       }
                     }
                   },
@@ -10314,15 +9649,15 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 110,
+            "line" : 104,
             "column" : 33,
-            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
       "id" : 92,
       "runtime_data" : [],
       "primitives" : [
@@ -10418,6 +9753,131 @@
           "parameters" : [
             {
               "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
+      "id" : 93,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
               "value" : "int_egress_tstamp"
             }
           ],
@@ -10509,7 +9969,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
             },
             {
               "type" : "expression",
@@ -10523,7 +9983,727 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x02"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 103,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 2; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x0008"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 104,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 8; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
+      "id" : 94,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tx_util"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 88,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 90,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 74,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
+      "id" : 95,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_q_congestion"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 80,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 82,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_congestion"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 83,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 74,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x03"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 109,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_words + 3; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x000c"
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 110,
+            "column" : 33,
+            "source_fragment" : "= fmeta.int_meta.new_bytes + 12; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
+      "id" : 96,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tx_util"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 88,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tx_util", "egress_port_tx_util"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 90,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tx_util.egress_port_tx_util = 32w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_q_congestion"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 80,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_id"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x00"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 82,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_id = 8w0"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_q_congestion", "q_congestion"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x000000"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 83,
+            "column" : 8,
+            "source_fragment" : "hdr.int_q_congestion.q_congestion = 24w0"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_egress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 74,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_egress_tstamp", "egress_tstamp"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "enq_timestamp"]
+                      },
+                      "right" : {
+                        "type" : "field",
+                        "value" : ["standard_metadata", "deq_timedelta"]
+                      }
+                    }
+                  },
+                  "right" : {
+                    "type" : "hexstr",
+                    "value" : "0xffffffff"
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 75,
+            "column" : 8,
+            "source_fragment" : "hdr.int_egress_tstamp.egress_tstamp = (bit<32>) smeta.enq_timestamp + (bit<32>) smeta.deq_timedelta"
+          }
+        },
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "int_ingress_tstamp"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 68,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.setValid()"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["int_ingress_tstamp", "ingress_tstamp"]
+            },
+            {
+              "type" : "field",
+              "value" : ["standard_metadata", "enq_timestamp"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_transit.p4",
+            "line" : 69,
+            "column" : 8,
+            "source_fragment" : "hdr.int_ingress_tstamp.ingress_tstamp = (bit<32>) smeta.enq_timestamp"
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "&",
+                  "left" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "+",
+                      "left" : {
+                        "type" : "field",
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10551,7 +10731,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+              "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
             },
             {
               "type" : "expression",
@@ -10565,7 +10745,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -10592,7 +10772,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 93,
+      "id" : 97,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10605,7 +10785,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 252,
+            "line" : 264,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -10615,17 +10795,17 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+              "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 254,
-            "column" : 33,
+            "line" : 266,
+            "column" : 38,
             "source_fragment" : "= fabric_metadata.ip_eth_type; ..."
           }
         }
@@ -10633,7 +10813,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 94,
+      "id" : 98,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10646,7 +10826,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 259,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -10660,12 +10840,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 260,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
@@ -10684,7 +10864,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 261,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -10703,7 +10883,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 262,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -10717,12 +10897,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 263,
+            "line" : 275,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
@@ -10732,7 +10912,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -10750,7 +10930,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 95,
+      "id" : 99,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10763,7 +10943,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 271,
+            "line" : 283,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -10777,12 +10957,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 272,
+            "line" : 284,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -10796,12 +10976,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 285,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -10815,14 +10995,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 286,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -10834,12 +11014,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 287,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -10867,7 +11047,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 96,
+      "id" : 100,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10879,14 +11059,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 312,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -10899,7 +11079,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -10907,8 +11087,8 @@
       ]
     },
     {
-      "name" : "act_19",
-      "id" : 97,
+      "name" : "act_23",
+      "id" : 101,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10924,8 +11104,8 @@
       ]
     },
     {
-      "name" : "act_20",
-      "id" : 98,
+      "name" : "act_24",
+      "id" : 102,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10975,8 +11155,8 @@
       ]
     },
     {
-      "name" : "act_21",
-      "id" : 99,
+      "name" : "act_25",
+      "id" : 103,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10989,7 +11169,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -10997,8 +11177,8 @@
       ]
     },
     {
-      "name" : "act_22",
-      "id" : 100,
+      "name" : "act_26",
+      "id" : 104,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11027,8 +11207,8 @@
       ]
     },
     {
-      "name" : "act_23",
-      "id" : 101,
+      "name" : "act_27",
+      "id" : 105,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11057,8 +11237,8 @@
       ]
     },
     {
-      "name" : "act_24",
-      "id" : 102,
+      "name" : "act_28",
+      "id" : 106,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11071,7 +11251,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -11079,8 +11259,8 @@
       ]
     },
     {
-      "name" : "act_25",
-      "id" : 103,
+      "name" : "act_29",
+      "id" : 107,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11120,7 +11300,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -11128,8 +11308,8 @@
       ]
     },
     {
-      "name" : "act_26",
-      "id" : 104,
+      "name" : "act_30",
+      "id" : 108,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11142,7 +11322,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -11150,8 +11330,8 @@
       ]
     },
     {
-      "name" : "act_27",
-      "id" : 105,
+      "name" : "act_31",
+      "id" : 109,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11191,7 +11371,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -11199,8 +11379,8 @@
       ]
     },
     {
-      "name" : "act_28",
-      "id" : 106,
+      "name" : "act_32",
+      "id" : 110,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11229,8 +11409,8 @@
       ]
     },
     {
-      "name" : "act_29",
-      "id" : 107,
+      "name" : "act_33",
+      "id" : 111,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11265,8 +11445,8 @@
       ]
     },
     {
-      "name" : "act_30",
-      "id" : 108,
+      "name" : "act_34",
+      "id" : 112,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11292,7 +11472,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       }
                     }
                   },
@@ -11314,8 +11494,8 @@
       ]
     },
     {
-      "name" : "act_31",
-      "id" : 109,
+      "name" : "act_35",
+      "id" : 113,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11363,8 +11543,8 @@
       ]
     },
     {
-      "name" : "act_32",
-      "id" : 110,
+      "name" : "act_36",
+      "id" : 114,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11390,7 +11570,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes26"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_bytes29"]
                       }
                     }
                   },
@@ -11412,8 +11592,8 @@
       ]
     },
     {
-      "name" : "act_33",
-      "id" : 111,
+      "name" : "act_37",
+      "id" : 115,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11439,7 +11619,7 @@
                       },
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words25"]
+                        "value" : ["scalars", "fabric_metadata_t._int_meta_new_words28"]
                       }
                     }
                   },
@@ -11652,9 +11832,9 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+            "line" : 110,
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -11681,7 +11861,7 @@
           "id" : 7,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -11694,9 +11874,9 @@
           "direct_meters" : null,
           "action_ids" : [40],
           "actions" : ["act_6"],
-          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "base_default_next" : "node_16",
           "next_tables" : {
-            "act_6" : "FabricIngress.filtering.ingress_port_vlan"
+            "act_6" : "node_16"
           },
           "default_entry" : {
             "action_id" : 40,
@@ -11706,11 +11886,127 @@
           }
         },
         {
-          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "name" : "tbl_act_7",
           "id" : 8,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 51,
+            "line" : 131,
+            "column" : 42,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [41],
+          "actions" : ["act_7"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_7" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 41,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_8",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [42],
+          "actions" : ["act_8"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_8" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 42,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_9",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [43],
+          "actions" : ["act_9"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_9" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 43,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_10",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [44],
+          "actions" : ["act_10"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_10" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 44,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 53,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -11732,6 +12028,12 @@
               "name" : "vlan_id",
               "target" : ["vlan_tag", "vlan_id"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "inner_vlan_id",
+              "target" : ["inner_vlan_tag", "vlan_id"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -11757,10 +12059,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 9,
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 87,
+            "line" : 90,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -11779,8 +12081,20 @@
             },
             {
               "match_type" : "exact",
-              "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "name" : "is_ipv4",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv41"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_ipv6",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv62"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_mpls",
+              "target" : ["scalars", "fabric_metadata_t._is_mpls3"],
               "mask" : null
             }
           ],
@@ -11792,9 +12106,9 @@
           "direct_meters" : null,
           "action_ids" : [16],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "tbl_act_7",
+          "base_default_next" : "tbl_act_11",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "tbl_act_7"
+            "FabricIngress.filtering.set_forwarding_type" : "tbl_act_11"
           },
           "default_entry" : {
             "action_id" : 16,
@@ -11804,8 +12118,8 @@
           }
         },
         {
-          "name" : "tbl_act_7",
-          "id" : 10,
+          "name" : "tbl_act_11",
+          "id" : 14,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -11813,14 +12127,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49],
-          "actions" : ["act_15"],
-          "base_default_next" : "node_19",
+          "action_ids" : [53],
+          "actions" : ["act_19"],
+          "base_default_next" : "node_26",
           "next_tables" : {
-            "act_15" : "node_19"
+            "act_19" : "node_26"
           },
           "default_entry" : {
-            "action_id" : 49,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11828,7 +12142,7 @@
         },
         {
           "name" : "FabricIngress.spgw_ingress.s1u_filter_table",
-          "id" : 11,
+          "id" : 15,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 83,
@@ -11853,8 +12167,8 @@
           "actions" : ["nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_8",
-            "__MISS__" : "tbl_act_9"
+            "__HIT__" : "tbl_act_12",
+            "__MISS__" : "tbl_act_13"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -11864,8 +12178,8 @@
           }
         },
         {
-          "name" : "tbl_act_8",
-          "id" : 12,
+          "name" : "tbl_act_12",
+          "id" : 16,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -11873,22 +12187,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_23",
+          "action_ids" : [45],
+          "actions" : ["act_11"],
+          "base_default_next" : "node_30",
           "next_tables" : {
-            "act_7" : "node_23"
+            "act_11" : "node_30"
           },
           "default_entry" : {
-            "action_id" : 41,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_9",
-          "id" : 13,
+          "name" : "tbl_act_13",
+          "id" : 17,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -11896,22 +12210,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [42],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_23",
+          "action_ids" : [46],
+          "actions" : ["act_12"],
+          "base_default_next" : "node_30",
           "next_tables" : {
-            "act_8" : "node_23"
+            "act_12" : "node_30"
           },
           "default_entry" : {
-            "action_id" : 42,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_10",
-          "id" : 14,
+          "name" : "tbl_act_14",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 149,
@@ -11925,22 +12239,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43],
-          "actions" : ["act_9"],
-          "base_default_next" : "tbl_act_11",
+          "action_ids" : [47],
+          "actions" : ["act_13"],
+          "base_default_next" : "tbl_act_15",
           "next_tables" : {
-            "act_9" : "tbl_act_11"
+            "act_13" : "tbl_act_15"
           },
           "default_entry" : {
-            "action_id" : 43,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_11",
-          "id" : 15,
+          "name" : "tbl_act_15",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 151,
@@ -11954,14 +12268,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [44],
-          "actions" : ["act_10"],
+          "action_ids" : [48],
+          "actions" : ["act_14"],
           "base_default_next" : "tbl_spgw_ingress_gtpu_decap",
           "next_tables" : {
-            "act_10" : "tbl_spgw_ingress_gtpu_decap"
+            "act_14" : "tbl_spgw_ingress_gtpu_decap"
           },
           "default_entry" : {
-            "action_id" : 44,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -11969,7 +12283,7 @@
         },
         {
           "name" : "tbl_spgw_ingress_gtpu_decap",
-          "id" : 16,
+          "id" : 20,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 152,
@@ -11985,9 +12299,9 @@
           "direct_meters" : null,
           "action_ids" : [10],
           "actions" : ["FabricIngress.spgw_ingress.gtpu_decap"],
-          "base_default_next" : "node_33",
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "FabricIngress.spgw_ingress.gtpu_decap" : "node_33"
+            "FabricIngress.spgw_ingress.gtpu_decap" : "node_40"
           },
           "default_entry" : {
             "action_id" : 10,
@@ -11998,7 +12312,7 @@
         },
         {
           "name" : "FabricIngress.spgw_ingress.dl_sess_lookup",
-          "id" : 17,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 70,
@@ -12023,8 +12337,8 @@
           "actions" : ["FabricIngress.spgw_ingress.set_dl_sess_info", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_12",
-            "__MISS__" : "tbl_act_13"
+            "__HIT__" : "tbl_act_16",
+            "__MISS__" : "tbl_act_17"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -12034,8 +12348,8 @@
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 18,
+          "name" : "tbl_act_16",
+          "id" : 22,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -12043,22 +12357,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [45],
-          "actions" : ["act_11"],
-          "base_default_next" : "node_30",
+          "action_ids" : [49],
+          "actions" : ["act_15"],
+          "base_default_next" : "node_37",
           "next_tables" : {
-            "act_11" : "node_30"
+            "act_15" : "node_37"
           },
           "default_entry" : {
-            "action_id" : 45,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 19,
+          "name" : "tbl_act_17",
+          "id" : 23,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -12066,22 +12380,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [46],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_30",
+          "action_ids" : [50],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_37",
           "next_tables" : {
-            "act_12" : "node_30"
+            "act_16" : "node_37"
           },
           "default_entry" : {
-            "action_id" : 46,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_14",
-          "id" : 20,
+          "name" : "tbl_act_18",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 154,
@@ -12095,22 +12409,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [47],
-          "actions" : ["act_13"],
-          "base_default_next" : "node_33",
+          "action_ids" : [51],
+          "actions" : ["act_17"],
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "act_13" : "node_33"
+            "act_17" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 47,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 21,
+          "name" : "tbl_act_19",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 156,
@@ -12124,22 +12438,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [48],
-          "actions" : ["act_14"],
-          "base_default_next" : "node_33",
+          "action_ids" : [52],
+          "actions" : ["act_18"],
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "act_14" : "node_33"
+            "act_18" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 22,
+          "name" : "tbl_act_20",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 175,
@@ -12153,14 +12467,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_35",
+          "action_ids" : [54],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "act_16" : "node_35"
+            "act_20" : "node_42"
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12168,7 +12482,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 23,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 46,
@@ -12179,7 +12493,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -12211,7 +12525,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 24,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 71,
@@ -12222,7 +12536,7 @@
             {
               "match_type" : "exact",
               "name" : "mpls_label",
-              "target" : ["scalars", "fabric_metadata_t._mpls_label5"],
+              "target" : ["scalars", "fabric_metadata_t._mpls_label8"],
               "mask" : null
             }
           ],
@@ -12248,7 +12562,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v4",
-          "id" : 25,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 101,
@@ -12286,7 +12600,7 @@
         },
         {
           "name" : "FabricIngress.acl.acl",
-          "id" : 26,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 60,
@@ -12303,19 +12617,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t._ip_proto13"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto16"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport17"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport18"],
               "mask" : null
             },
             {
@@ -12339,7 +12653,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "target" : ["scalars", "fabric_metadata_t._last_eth_type0"],
               "mask" : null
             },
             {
@@ -12375,13 +12689,13 @@
           "direct_meters" : null,
           "action_ids" : [21, 22, 23, 24, 25],
           "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_43",
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "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"
+            "FabricIngress.acl.set_next_id_acl" : "node_50",
+            "FabricIngress.acl.punt_to_cpu" : "node_50",
+            "FabricIngress.acl.set_clone_session_id" : "node_50",
+            "FabricIngress.acl.drop" : "node_50",
+            "FabricIngress.acl.nop_acl" : "node_50"
           },
           "default_entry" : {
             "action_id" : 25,
@@ -12392,10 +12706,10 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 27,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 104,
+            "line" : 116,
             "column" : 10,
             "source_fragment" : "xconnect"
           },
@@ -12409,7 +12723,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -12436,10 +12750,10 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 28,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 184,
+            "line" : 196,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -12447,7 +12761,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -12470,10 +12784,10 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 29,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 218,
+            "line" : 230,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -12481,7 +12795,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -12507,10 +12821,10 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 30,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 74,
+            "line" : 82,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -12518,7 +12832,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -12530,10 +12844,10 @@
           "direct_meters" : null,
           "action_ids" : [26, 6],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_48",
+          "base_default_next" : "node_55",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_48",
-            "nop" : "node_48"
+            "FabricIngress.next.set_vlan" : "node_55",
+            "nop" : "node_55"
           },
           "default_entry" : {
             "action_id" : 6,
@@ -12543,8 +12857,8 @@
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 31,
+          "name" : "tbl_act_21",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -12558,22 +12872,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_50",
+          "action_ids" : [55],
+          "actions" : ["act_21"],
+          "base_default_next" : "node_57",
           "next_tables" : {
-            "act_17" : "node_50"
+            "act_21" : "node_57"
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 55,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 32,
+          "name" : "tbl_act_22",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -12587,14 +12901,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
-          "actions" : ["act_18"],
+          "action_ids" : [56],
+          "actions" : ["act_22"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
-            "act_18" : "FabricIngress.process_set_source_sink.tb_set_source"
+            "act_22" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -12602,7 +12916,7 @@
         },
         {
           "name" : "FabricIngress.process_set_source_sink.tb_set_source",
-          "id" : 33,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 46,
@@ -12644,7 +12958,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 165,
+            "line" : 177,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -12662,15 +12976,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto16"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
               }
             ]
           }
@@ -12782,7 +13096,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 104,
+            "line" : 109,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -12805,7 +13119,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 121,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -12828,11 +13142,80 @@
             }
           },
           "true_next" : "tbl_act_6",
-          "false_next" : "FabricIngress.filtering.ingress_port_vlan"
+          "false_next" : "node_16"
+        },
+        {
+          "name" : "node_16",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 130,
+            "column" : 12,
+            "source_fragment" : "hdr.mpls.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["mpls", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_7",
+          "false_next" : "node_18"
+        },
+        {
+          "name" : "node_18",
+          "id" : 7,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 133,
+            "column" : 16,
+            "source_fragment" : "hdr.vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "node_19",
+          "false_next" : "tbl_act_10"
         },
         {
           "name" : "node_19",
-          "id" : 6,
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 135,
+            "column" : 19,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_8",
+          "false_next" : "tbl_act_9"
+        },
+        {
+          "name" : "node_26",
+          "id" : 9,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 144,
@@ -12854,8 +13237,8 @@
           "false_next" : "FabricIngress.spgw_ingress.dl_sess_lookup"
         },
         {
-          "name" : "node_23",
-          "id" : 7,
+          "name" : "node_30",
+          "id" : 10,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 148,
@@ -12880,12 +13263,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_10",
-          "false_next" : "tbl_act_11"
+          "true_next" : "tbl_act_14",
+          "false_next" : "tbl_act_15"
         },
         {
-          "name" : "node_30",
-          "id" : 8,
+          "name" : "node_37",
+          "id" : 11,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -12897,12 +13280,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_14",
-          "false_next" : "tbl_act_15"
+          "true_next" : "tbl_act_18",
+          "false_next" : "tbl_act_19"
         },
         {
-          "name" : "node_33",
-          "id" : 9,
+          "name" : "node_40",
+          "id" : 12,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -12921,15 +13304,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_35"
+          "true_next" : "tbl_act_20",
+          "false_next" : "node_42"
         },
         {
-          "name" : "node_35",
-          "id" : 10,
+          "name" : "node_42",
+          "id" : 13,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 74,
+            "line" : 71,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -12944,7 +13327,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
                   }
                 }
               },
@@ -12954,12 +13337,12 @@
               }
             }
           },
-          "true_next" : "node_36",
+          "true_next" : "node_43",
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_36",
-          "id" : 11,
+          "name" : "node_43",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 141,
@@ -12972,7 +13355,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -12981,11 +13364,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_38"
+          "false_next" : "node_45"
         },
         {
-          "name" : "node_38",
-          "id" : 12,
+          "name" : "node_45",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 142,
@@ -12998,7 +13381,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -13007,11 +13390,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_40"
+          "false_next" : "node_47"
         },
         {
-          "name" : "node_40",
-          "id" : 13,
+          "name" : "node_47",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 143,
@@ -13024,7 +13407,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -13036,11 +13419,11 @@
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_43",
-          "id" : 14,
+          "name" : "node_50",
+          "id" : 17,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 78,
+            "line" : 75,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -13055,7 +13438,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_next11"]
                   }
                 }
               },
@@ -13069,8 +13452,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_48",
-          "id" : 15,
+          "name" : "node_55",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -13091,12 +13474,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_17",
-          "false_next" : "node_50"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_57"
         },
         {
-          "name" : "node_50",
-          "id" : 16,
+          "name" : "node_57",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -13117,7 +13500,7 @@
               }
             }
           },
-          "true_next" : "tbl_act_18",
+          "true_next" : "tbl_act_22",
           "false_next" : "FabricIngress.process_set_source_sink.tb_set_source"
         }
       ]
@@ -13127,15 +13510,15 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 92,
+        "line" : 93,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_55",
+      "init_table" : "node_62",
       "tables" : [
         {
-          "name" : "tbl_act_19",
-          "id" : 34,
+          "name" : "tbl_act_23",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -13149,22 +13532,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [97],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_57",
+          "action_ids" : [101],
+          "actions" : ["act_23"],
+          "base_default_next" : "node_64",
           "next_tables" : {
-            "act_19" : "node_57"
+            "act_23" : "node_64"
           },
           "default_entry" : {
-            "action_id" : 97,
+            "action_id" : 101,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_20",
-          "id" : 35,
+          "name" : "tbl_act_24",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -13178,25 +13561,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [98],
-          "actions" : ["act_20"],
-          "base_default_next" : "node_59",
+          "action_ids" : [102],
+          "actions" : ["act_24"],
+          "base_default_next" : "node_66",
           "next_tables" : {
-            "act_20" : "node_59"
+            "act_24" : "node_66"
           },
           "default_entry" : {
-            "action_id" : 98,
+            "action_id" : 102,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_21",
-          "id" : 36,
+          "name" : "tbl_act_25",
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -13207,14 +13590,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [99],
-          "actions" : ["act_21"],
-          "base_default_next" : "node_61",
+          "action_ids" : [103],
+          "actions" : ["act_25"],
+          "base_default_next" : "node_68",
           "next_tables" : {
-            "act_21" : "node_61"
+            "act_25" : "node_68"
           },
           "default_entry" : {
-            "action_id" : 99,
+            "action_id" : 103,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13222,10 +13605,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 37,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -13236,14 +13619,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [93],
+          "action_ids" : [97],
           "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" : 97,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13251,10 +13634,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 38,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 314,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -13265,14 +13648,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [94],
+          "action_ids" : [98],
           "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" : 98,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13280,10 +13663,10 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 39,
+          "id" : 43,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 291,
+            "line" : 317,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -13291,7 +13674,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -13307,23 +13690,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [96, 55],
+          "action_ids" : [100, 59],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_22",
-            "__MISS__" : "tbl_act_23"
+            "__HIT__" : "tbl_act_26",
+            "__MISS__" : "tbl_act_27"
           },
           "default_entry" : {
-            "action_id" : 55,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_22",
-          "id" : 40,
+          "name" : "tbl_act_26",
+          "id" : 44,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -13331,22 +13714,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [100],
-          "actions" : ["act_22"],
-          "base_default_next" : "node_68",
+          "action_ids" : [104],
+          "actions" : ["act_26"],
+          "base_default_next" : "node_75",
           "next_tables" : {
-            "act_22" : "node_68"
+            "act_26" : "node_75"
           },
           "default_entry" : {
-            "action_id" : 100,
+            "action_id" : 104,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_23",
-          "id" : 41,
+          "name" : "tbl_act_27",
+          "id" : 45,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -13354,14 +13737,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [101],
-          "actions" : ["act_23"],
-          "base_default_next" : "node_68",
+          "action_ids" : [105],
+          "actions" : ["act_27"],
+          "base_default_next" : "node_75",
           "next_tables" : {
-            "act_23" : "node_68"
+            "act_27" : "node_75"
           },
           "default_entry" : {
-            "action_id" : 101,
+            "action_id" : 105,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13369,11 +13752,11 @@
         },
         {
           "name" : "tbl_egress_next_push_vlan",
-          "id" : 42,
+          "id" : 46,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 320,
-            "column" : 16,
+            "line" : 357,
+            "column" : 20,
             "source_fragment" : "push_vlan()"
           },
           "key" : [],
@@ -13383,25 +13766,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [95],
+          "action_ids" : [99],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_71",
+          "base_default_next" : "node_78",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_71"
+            "FabricEgress.egress_next.push_vlan" : "node_78"
           },
           "default_entry" : {
-            "action_id" : 95,
+            "action_id" : 99,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_24",
-          "id" : 43,
+          "name" : "tbl_act_28",
+          "id" : 47,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 25,
             "source_fragment" : "="
           },
@@ -13412,25 +13795,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [103],
-          "actions" : ["act_25"],
-          "base_default_next" : "node_73",
+          "action_ids" : [107],
+          "actions" : ["act_29"],
+          "base_default_next" : "node_80",
           "next_tables" : {
-            "act_25" : "node_73"
+            "act_29" : "node_80"
           },
           "default_entry" : {
-            "action_id" : 103,
+            "action_id" : 107,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_25",
-          "id" : 44,
+          "name" : "tbl_act_29",
+          "id" : 48,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -13441,25 +13824,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [102],
-          "actions" : ["act_24"],
-          "base_default_next" : "node_79",
+          "action_ids" : [106],
+          "actions" : ["act_28"],
+          "base_default_next" : "node_86",
           "next_tables" : {
-            "act_24" : "node_79"
+            "act_28" : "node_86"
           },
           "default_entry" : {
-            "action_id" : 102,
+            "action_id" : 106,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_26",
-          "id" : 45,
+          "name" : "tbl_act_30",
+          "id" : 49,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 29,
             "source_fragment" : "="
           },
@@ -13470,25 +13853,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [105],
-          "actions" : ["act_27"],
-          "base_default_next" : "node_77",
+          "action_ids" : [109],
+          "actions" : ["act_31"],
+          "base_default_next" : "node_84",
           "next_tables" : {
-            "act_27" : "node_77"
+            "act_31" : "node_84"
           },
           "default_entry" : {
-            "action_id" : 105,
+            "action_id" : 109,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_27",
-          "id" : 46,
+          "name" : "tbl_act_31",
+          "id" : 50,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -13499,14 +13882,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [104],
-          "actions" : ["act_26"],
-          "base_default_next" : "node_79",
+          "action_ids" : [108],
+          "actions" : ["act_30"],
+          "base_default_next" : "node_86",
           "next_tables" : {
-            "act_26" : "node_79"
+            "act_30" : "node_86"
           },
           "default_entry" : {
-            "action_id" : 104,
+            "action_id" : 108,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13514,7 +13897,7 @@
         },
         {
           "name" : "tbl_spgw_egress_gtpu_encap",
-          "id" : 47,
+          "id" : 51,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 228,
@@ -13528,14 +13911,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
+          "action_ids" : [62],
           "actions" : ["FabricEgress.spgw_egress.gtpu_encap"],
-          "base_default_next" : "node_81",
+          "base_default_next" : "node_88",
           "next_tables" : {
-            "FabricEgress.spgw_egress.gtpu_encap" : "node_81"
+            "FabricEgress.spgw_egress.gtpu_encap" : "node_88"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13543,7 +13926,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "id" : 48,
+          "id" : 52,
           "source_info" : {
             "filename" : "include/int/int_source.p4",
             "line" : 66,
@@ -13566,13 +13949,13 @@
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport17"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport18"],
               "mask" : null
             }
           ],
@@ -13582,23 +13965,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59, 53],
+          "action_ids" : [63, 57],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
-          "base_default_next" : "node_84",
+          "base_default_next" : "node_91",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_84",
-            "nop" : "node_84"
+            "FabricEgress.process_int_main.process_int_source.int_source_dscp" : "node_91",
+            "nop" : "node_91"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_28",
-          "id" : 49,
+          "name" : "tbl_act_32",
+          "id" : 53,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -13606,14 +13989,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [106],
-          "actions" : ["act_28"],
+          "action_ids" : [110],
+          "actions" : ["act_32"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
-            "act_28" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
+            "act_32" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 106,
+            "action_id" : 110,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13621,7 +14004,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
-          "id" : 50,
+          "id" : 54,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 315,
@@ -13642,23 +14025,23 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60, 54],
+          "action_ids" : [64, 58],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
-          "base_default_next" : "node_87",
+          "base_default_next" : "node_94",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_87",
-            "nop" : "node_87"
+            "FabricEgress.process_int_main.process_int_transit.init_metadata" : "node_94",
+            "nop" : "node_94"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_29",
-          "id" : 51,
+          "name" : "tbl_act_33",
+          "id" : 55,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 420,
@@ -13672,14 +14055,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [107],
-          "actions" : ["act_29"],
-          "base_default_next" : "node_89",
+          "action_ids" : [111],
+          "actions" : ["act_33"],
+          "base_default_next" : "node_96",
           "next_tables" : {
-            "act_29" : "node_89"
+            "act_33" : "node_96"
           },
           "default_entry" : {
-            "action_id" : 107,
+            "action_id" : 111,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13687,7 +14070,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003",
-          "id" : 52,
+          "id" : 56,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 331,
@@ -13708,7 +14091,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, 56],
+          "action_ids" : [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 60],
           "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" : {
@@ -13731,7 +14114,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 60,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -13751,7 +14134,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 61,
+                "action_id" : 65,
                 "action_data" : []
               },
               "priority" : 1
@@ -13770,7 +14153,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 62,
+                "action_id" : 66,
                 "action_data" : []
               },
               "priority" : 2
@@ -13789,7 +14172,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 63,
+                "action_id" : 67,
                 "action_data" : []
               },
               "priority" : 3
@@ -13808,7 +14191,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 64,
+                "action_id" : 68,
                 "action_data" : []
               },
               "priority" : 4
@@ -13827,7 +14210,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 65,
+                "action_id" : 69,
                 "action_data" : []
               },
               "priority" : 5
@@ -13846,7 +14229,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 66,
+                "action_id" : 70,
                 "action_data" : []
               },
               "priority" : 6
@@ -13865,7 +14248,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 67,
+                "action_id" : 71,
                 "action_data" : []
               },
               "priority" : 7
@@ -13884,7 +14267,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 68,
+                "action_id" : 72,
                 "action_data" : []
               },
               "priority" : 8
@@ -13903,7 +14286,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 69,
+                "action_id" : 73,
                 "action_data" : []
               },
               "priority" : 9
@@ -13922,7 +14305,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 70,
+                "action_id" : 74,
                 "action_data" : []
               },
               "priority" : 10
@@ -13941,7 +14324,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 71,
+                "action_id" : 75,
                 "action_data" : []
               },
               "priority" : 11
@@ -13960,7 +14343,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 72,
+                "action_id" : 76,
                 "action_data" : []
               },
               "priority" : 12
@@ -13979,7 +14362,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 73,
+                "action_id" : 77,
                 "action_data" : []
               },
               "priority" : 13
@@ -13998,7 +14381,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 74,
+                "action_id" : 78,
                 "action_data" : []
               },
               "priority" : 14
@@ -14017,7 +14400,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 75,
+                "action_id" : 79,
                 "action_data" : []
               },
               "priority" : 15
@@ -14036,7 +14419,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 76,
+                "action_id" : 80,
                 "action_data" : []
               },
               "priority" : 16
@@ -14045,7 +14428,7 @@
         },
         {
           "name" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
-          "id" : 53,
+          "id" : 57,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 375,
@@ -14066,30 +14449,30 @@
           "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, 57],
+          "action_ids" : [81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 61],
           "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_act_30",
+          "base_default_next" : "tbl_act_34",
           "next_tables" : {
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14" : "tbl_act_30",
-            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15" : "tbl_act_30",
-            "NoAction" : "tbl_act_30"
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14" : "tbl_act_34",
+            "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15" : "tbl_act_34",
+            "NoAction" : "tbl_act_34"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 61,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -14109,7 +14492,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 77,
+                "action_id" : 81,
                 "action_data" : []
               },
               "priority" : 1
@@ -14128,7 +14511,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 78,
+                "action_id" : 82,
                 "action_data" : []
               },
               "priority" : 2
@@ -14147,7 +14530,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 79,
+                "action_id" : 83,
                 "action_data" : []
               },
               "priority" : 3
@@ -14166,7 +14549,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 80,
+                "action_id" : 84,
                 "action_data" : []
               },
               "priority" : 4
@@ -14185,7 +14568,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 81,
+                "action_id" : 85,
                 "action_data" : []
               },
               "priority" : 5
@@ -14204,7 +14587,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 82,
+                "action_id" : 86,
                 "action_data" : []
               },
               "priority" : 6
@@ -14223,7 +14606,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 83,
+                "action_id" : 87,
                 "action_data" : []
               },
               "priority" : 7
@@ -14242,7 +14625,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 84,
+                "action_id" : 88,
                 "action_data" : []
               },
               "priority" : 8
@@ -14261,7 +14644,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 85,
+                "action_id" : 89,
                 "action_data" : []
               },
               "priority" : 9
@@ -14280,7 +14663,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 86,
+                "action_id" : 90,
                 "action_data" : []
               },
               "priority" : 10
@@ -14299,7 +14682,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 87,
+                "action_id" : 91,
                 "action_data" : []
               },
               "priority" : 11
@@ -14318,7 +14701,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 88,
+                "action_id" : 92,
                 "action_data" : []
               },
               "priority" : 12
@@ -14337,7 +14720,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 89,
+                "action_id" : 93,
                 "action_data" : []
               },
               "priority" : 13
@@ -14356,7 +14739,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 90,
+                "action_id" : 94,
                 "action_data" : []
               },
               "priority" : 14
@@ -14375,7 +14758,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 91,
+                "action_id" : 95,
                 "action_data" : []
               },
               "priority" : 15
@@ -14394,7 +14777,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 92,
+                "action_id" : 96,
                 "action_data" : []
               },
               "priority" : 16
@@ -14402,8 +14785,8 @@
           ]
         },
         {
-          "name" : "tbl_act_30",
-          "id" : 54,
+          "name" : "tbl_act_34",
+          "id" : 58,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 425,
@@ -14417,22 +14800,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [109],
-          "actions" : ["act_31"],
-          "base_default_next" : "node_93",
+          "action_ids" : [113],
+          "actions" : ["act_35"],
+          "base_default_next" : "node_100",
           "next_tables" : {
-            "act_31" : "node_93"
+            "act_35" : "node_100"
           },
           "default_entry" : {
-            "action_id" : 109,
+            "action_id" : 113,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_31",
-          "id" : 55,
+          "name" : "tbl_act_35",
+          "id" : 59,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 428,
@@ -14446,22 +14829,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [108],
-          "actions" : ["act_30"],
-          "base_default_next" : "node_95",
+          "action_ids" : [112],
+          "actions" : ["act_34"],
+          "base_default_next" : "node_102",
           "next_tables" : {
-            "act_30" : "node_95"
+            "act_34" : "node_102"
           },
           "default_entry" : {
-            "action_id" : 108,
+            "action_id" : 112,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_32",
-          "id" : 56,
+          "name" : "tbl_act_36",
+          "id" : 60,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 431,
@@ -14475,22 +14858,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [110],
-          "actions" : ["act_32"],
-          "base_default_next" : "node_97",
+          "action_ids" : [114],
+          "actions" : ["act_36"],
+          "base_default_next" : "node_104",
           "next_tables" : {
-            "act_32" : "node_97"
+            "act_36" : "node_104"
           },
           "default_entry" : {
-            "action_id" : 110,
+            "action_id" : 114,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_33",
-          "id" : 57,
+          "name" : "tbl_act_37",
+          "id" : 61,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 434,
@@ -14504,14 +14887,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [111],
-          "actions" : ["act_33"],
+          "action_ids" : [115],
+          "actions" : ["act_37"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_33" : null
+            "act_37" : null
           },
           "default_entry" : {
-            "action_id" : 111,
+            "action_id" : 115,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14521,8 +14904,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_55",
-          "id" : 17,
+          "name" : "node_62",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -14540,7 +14923,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out15"]
                   }
                 }
               },
@@ -14550,12 +14933,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_19",
-          "false_next" : "node_57"
+          "true_next" : "tbl_act_23",
+          "false_next" : "node_64"
         },
         {
-          "name" : "node_57",
-          "id" : 18,
+          "name" : "node_64",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -14576,15 +14959,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_20",
-          "false_next" : "node_59"
+          "true_next" : "tbl_act_24",
+          "false_next" : "node_66"
         },
         {
-          "name" : "node_59",
-          "id" : 19,
+          "name" : "node_66",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 306,
+            "line" : 332,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -14603,7 +14986,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast14"]
                       }
                     }
                   },
@@ -14629,15 +15012,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_21",
-          "false_next" : "node_61"
+          "true_next" : "tbl_act_25",
+          "false_next" : "node_68"
         },
         {
-          "name" : "node_61",
-          "id" : 20,
+          "name" : "node_68",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 311,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -14647,7 +15030,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -14655,15 +15038,15 @@
               }
             }
           },
-          "true_next" : "node_62",
+          "true_next" : "node_69",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_62",
-          "id" : 21,
+          "name" : "node_69",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -14682,12 +15065,12 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_68",
-          "id" : 22,
+          "name" : "node_75",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 317,
-            "column" : 12,
+            "line" : 354,
+            "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
           "expression" : {
@@ -14708,16 +15091,16 @@
               }
             }
           },
-          "true_next" : "node_69",
-          "false_next" : "node_71"
+          "true_next" : "node_76",
+          "false_next" : "node_78"
         },
         {
-          "name" : "node_69",
-          "id" : 23,
+          "name" : "node_76",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 319,
-            "column" : 16,
+            "line" : 356,
+            "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
           "expression" : {
@@ -14726,7 +15109,7 @@
               "op" : "!=",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -14735,14 +15118,14 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_71"
+          "false_next" : "node_78"
         },
         {
-          "name" : "node_71",
-          "id" : 24,
+          "name" : "node_78",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 325,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -14757,15 +15140,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_24",
-          "false_next" : "node_75"
+          "true_next" : "tbl_act_28",
+          "false_next" : "node_82"
         },
         {
-          "name" : "node_73",
-          "id" : 25,
+          "name" : "node_80",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -14783,15 +15166,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_25",
-          "false_next" : "node_79"
+          "true_next" : "tbl_act_29",
+          "false_next" : "node_86"
         },
         {
-          "name" : "node_75",
-          "id" : 26,
+          "name" : "node_82",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 329,
+            "line" : 369,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -14806,15 +15189,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_26",
-          "false_next" : "node_79"
+          "true_next" : "tbl_act_30",
+          "false_next" : "node_86"
         },
         {
-          "name" : "node_77",
-          "id" : 27,
+          "name" : "node_84",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -14832,12 +15215,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_27",
-          "false_next" : "node_79"
+          "true_next" : "tbl_act_31",
+          "false_next" : "node_86"
         },
         {
-          "name" : "node_79",
-          "id" : 28,
+          "name" : "node_86",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 227,
@@ -14850,7 +15233,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+                "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -14859,11 +15242,11 @@
             }
           },
           "true_next" : "tbl_spgw_egress_gtpu_encap",
-          "false_next" : "node_81"
+          "false_next" : "node_88"
         },
         {
-          "name" : "node_81",
-          "id" : 29,
+          "name" : "node_88",
+          "id" : 32,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 102,
@@ -14939,11 +15322,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_82"
+          "true_next" : "node_89"
         },
         {
-          "name" : "node_82",
-          "id" : 30,
+          "name" : "node_89",
+          "id" : 33,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 106,
@@ -14961,7 +15344,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_source21"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_source24"]
                   }
                 }
               },
@@ -14972,11 +15355,11 @@
             }
           },
           "true_next" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
-          "false_next" : "node_84"
+          "false_next" : "node_91"
         },
         {
-          "name" : "node_84",
-          "id" : 31,
+          "name" : "node_91",
+          "id" : 34,
           "source_info" : {
             "filename" : "include/int/int_main.p4",
             "line" : 110,
@@ -14995,11 +15378,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_28"
+          "true_next" : "tbl_act_32"
         },
         {
-          "name" : "node_87",
-          "id" : 32,
+          "name" : "node_94",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 419,
@@ -15017,7 +15400,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._int_meta_transit22"]
+                    "value" : ["scalars", "fabric_metadata_t._int_meta_transit25"]
                   }
                 }
               },
@@ -15027,12 +15410,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_29",
-          "false_next" : "node_89"
+          "true_next" : "tbl_act_33",
+          "false_next" : "node_96"
         },
         {
-          "name" : "node_89",
-          "id" : 33,
+          "name" : "node_96",
+          "id" : 36,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -15055,8 +15438,8 @@
           "true_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003"
         },
         {
-          "name" : "node_93",
-          "id" : 34,
+          "name" : "node_100",
+          "id" : 37,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 427,
@@ -15074,12 +15457,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_31",
-          "false_next" : "node_95"
+          "true_next" : "tbl_act_35",
+          "false_next" : "node_102"
         },
         {
-          "name" : "node_95",
-          "id" : 35,
+          "name" : "node_102",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 430,
@@ -15097,12 +15480,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_32",
-          "false_next" : "node_97"
+          "true_next" : "tbl_act_36",
+          "false_next" : "node_104"
         },
         {
-          "name" : "node_97",
-          "id" : 36,
+          "name" : "node_104",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
             "line" : 433,
@@ -15121,7 +15504,7 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_33"
+          "true_next" : "tbl_act_37"
         }
       ]
     }
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
index 686385f..1a88a4b 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
@@ -91,6 +91,12 @@
     bitwidth: 12
     match_type: TERNARY
   }
+  match_fields {
+    id: 4
+    name: "inner_vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
   action_refs {
     id: 16836487
   }
@@ -124,8 +130,20 @@
   }
   match_fields {
     id: 3
-    name: "eth_type"
-    bitwidth: 16
+    name: "is_ipv4"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 4
+    name: "is_ipv6"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 5
+    name: "is_mpls"
+    bitwidth: 1
     match_type: EXACT
   }
   action_refs {
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index ead2905..14c6701 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -13,28 +13,31 @@
         ["spgw_normalizer_hasReturned", 1, false],
         ["spgw_ingress_hasReturned", 1, false],
         ["egress_next_tmp", 1, false],
-        ["fabric_metadata_t._eth_type0", 16, false],
-        ["fabric_metadata_t._ip_eth_type1", 16, false],
-        ["fabric_metadata_t._vlan_id2", 12, false],
-        ["fabric_metadata_t._vlan_pri3", 3, false],
-        ["fabric_metadata_t._vlan_cfi4", 1, false],
-        ["fabric_metadata_t._mpls_label5", 20, false],
-        ["fabric_metadata_t._mpls_ttl6", 8, false],
-        ["fabric_metadata_t._skip_forwarding7", 1, false],
-        ["fabric_metadata_t._skip_next8", 1, false],
-        ["fabric_metadata_t._fwd_type9", 3, false],
-        ["fabric_metadata_t._next_id10", 32, false],
-        ["fabric_metadata_t._is_multicast11", 1, false],
-        ["fabric_metadata_t._is_controller_packet_out12", 1, false],
-        ["fabric_metadata_t._ip_proto13", 8, false],
-        ["fabric_metadata_t._l4_sport14", 16, false],
-        ["fabric_metadata_t._l4_dport15", 16, false],
-        ["fabric_metadata_t._spgw_direction16", 2, false],
-        ["fabric_metadata_t._spgw_ipv4_len17", 16, false],
-        ["fabric_metadata_t._spgw_teid18", 32, false],
-        ["fabric_metadata_t._spgw_s1u_enb_addr19", 32, false],
-        ["fabric_metadata_t._spgw_s1u_sgw_addr20", 32, false],
-        ["_padding_0", 2, false]
+        ["fabric_metadata_t._last_eth_type0", 16, false],
+        ["fabric_metadata_t._is_ipv41", 1, false],
+        ["fabric_metadata_t._is_ipv62", 1, false],
+        ["fabric_metadata_t._is_mpls3", 1, false],
+        ["fabric_metadata_t._ip_eth_type4", 16, false],
+        ["fabric_metadata_t._vlan_id5", 12, false],
+        ["fabric_metadata_t._vlan_pri6", 3, false],
+        ["fabric_metadata_t._vlan_cfi7", 1, false],
+        ["fabric_metadata_t._mpls_label8", 20, false],
+        ["fabric_metadata_t._mpls_ttl9", 8, false],
+        ["fabric_metadata_t._skip_forwarding10", 1, false],
+        ["fabric_metadata_t._skip_next11", 1, false],
+        ["fabric_metadata_t._fwd_type12", 3, false],
+        ["fabric_metadata_t._next_id13", 32, false],
+        ["fabric_metadata_t._is_multicast14", 1, false],
+        ["fabric_metadata_t._is_controller_packet_out15", 1, false],
+        ["fabric_metadata_t._ip_proto16", 8, false],
+        ["fabric_metadata_t._l4_sport17", 16, false],
+        ["fabric_metadata_t._l4_dport18", 16, false],
+        ["fabric_metadata_t._spgw_direction19", 2, false],
+        ["fabric_metadata_t._spgw_ipv4_len20", 16, false],
+        ["fabric_metadata_t._spgw_teid21", 32, false],
+        ["fabric_metadata_t._spgw_s1u_enb_addr22", 32, false],
+        ["fabric_metadata_t._spgw_s1u_sgw_addr23", 32, false],
+        ["_padding_0", 7, false]
       ]
     },
     {
@@ -408,7 +411,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+                  "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
                 },
                 {
                   "type" : "field",
@@ -421,7 +424,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                  "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
                 },
                 {
                   "type" : "hexstr",
@@ -448,7 +451,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "value" : "default",
@@ -482,7 +485,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -497,6 +500,18 @@
               "next_state" : "parse_inner_vlan_tag"
             },
             {
+              "type" : "hexstr",
+              "value" : "0x88a8",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x9100",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
               "value" : "default",
               "mask" : null,
               "next_state" : null
@@ -528,7 +543,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -566,7 +581,30 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                  "value" : ["scalars", "fabric_metadata_t._is_mpls3"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
                 },
                 {
                   "type" : "field",
@@ -579,7 +617,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
                 },
                 {
                   "type" : "field",
@@ -623,12 +661,49 @@
           ]
         },
         {
-          "name" : "parse_ipv4",
+          "name" : "pre_parse_ipv4",
           "id" : 6,
           "parser_ops" : [
             {
               "parameters" : [
                 {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._is_ipv41"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv4"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_ipv4",
+          "id" : 7,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
                   "type" : "regular",
                   "value" : "ipv4"
                 }
@@ -639,7 +714,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto16"]
                 },
                 {
                   "type" : "field",
@@ -652,7 +727,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
                 },
                 {
                   "type" : "hexstr",
@@ -696,7 +771,7 @@
         },
         {
           "name" : "parse_tcp",
-          "id" : 7,
+          "id" : 8,
           "parser_ops" : [
             {
               "parameters" : [
@@ -711,7 +786,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -724,7 +799,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -745,7 +820,7 @@
         },
         {
           "name" : "parse_udp",
-          "id" : 8,
+          "id" : 9,
           "parser_ops" : [
             {
               "parameters" : [
@@ -760,7 +835,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -773,7 +848,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -805,7 +880,7 @@
         },
         {
           "name" : "parse_icmp",
-          "id" : 9,
+          "id" : 10,
           "parser_ops" : [
             {
               "parameters" : [
@@ -828,7 +903,7 @@
         },
         {
           "name" : "parse_gtpu",
-          "id" : 10,
+          "id" : 11,
           "parser_ops" : [
             {
               "parameters" : [
@@ -899,7 +974,7 @@
         },
         {
           "name" : "do_parse_gtpu",
-          "id" : 11,
+          "id" : 12,
           "parser_ops" : [
             {
               "parameters" : [
@@ -954,7 +1029,7 @@
         },
         {
           "name" : "parse_inner_udp",
-          "id" : 12,
+          "id" : 13,
           "parser_ops" : [
             {
               "parameters" : [
@@ -969,7 +1044,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
                 },
                 {
                   "type" : "field",
@@ -982,7 +1057,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
                 },
                 {
                   "type" : "field",
@@ -1011,7 +1086,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 261,
+        "line" : 276,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -1051,7 +1126,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 80,
+        "line" : 83,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -1123,7 +1198,7 @@
       "binding" : "FabricIngress.next.xconnect",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 92,
+        "line" : 103,
         "column" : 50,
         "source_fragment" : "xconnect_counter"
       }
@@ -1135,7 +1210,7 @@
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 166,
+        "line" : 178,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
@@ -1147,7 +1222,7 @@
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 210,
+        "line" : 222,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
@@ -1183,7 +1258,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 283,
+        "line" : 309,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -1506,7 +1581,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid18"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid21"]
             },
             {
               "type" : "runtime_data",
@@ -1525,7 +1600,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr19"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr22"]
             },
             {
               "type" : "runtime_data",
@@ -1544,7 +1619,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr20"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr23"]
             },
             {
               "type" : "runtime_data",
@@ -1570,7 +1645,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
             },
             {
               "type" : "expression",
@@ -1599,7 +1674,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -1646,7 +1721,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -1677,7 +1752,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+              "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
             },
             {
               "type" : "runtime_data",
@@ -1686,7 +1761,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 83,
+            "line" : 86,
             "column" : 33,
             "source_fragment" : "= fwd_type; ..."
           }
@@ -1708,7 +1783,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1739,7 +1814,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             },
             {
               "type" : "hexstr",
@@ -1758,7 +1833,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1789,7 +1864,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1826,7 +1901,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -1871,7 +1946,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -1953,7 +2028,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
             },
             {
               "type" : "expression",
@@ -2000,7 +2075,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "runtime_data",
@@ -2044,6 +2119,25 @@
             "column" : 5,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
           }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
         }
       ]
     },
@@ -2062,7 +2156,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._next_id10"]
+              "value" : ["scalars", "fabric_metadata_t._next_id13"]
             },
             {
               "type" : "runtime_data",
@@ -2071,7 +2165,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 100,
+            "line" : 112,
             "column" : 32,
             "source_fragment" : "= next_id; ..."
           }
@@ -2213,7 +2307,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             },
             {
               "type" : "runtime_data",
@@ -2310,7 +2404,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 213,
+            "line" : 225,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -2320,7 +2414,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+              "value" : ["scalars", "fabric_metadata_t._is_multicast14"]
             },
             {
               "type" : "expression",
@@ -2339,7 +2433,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 214,
+            "line" : 226,
             "column" : 37,
             "source_fragment" : "= true; ..."
           }
@@ -2598,7 +2692,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out15"]
             },
             {
               "type" : "expression",
@@ -2644,26 +2738,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             },
             {
               "type" : "field",
@@ -2672,7 +2747,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 106,
+            "line" : 110,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
@@ -2682,7 +2757,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             },
             {
               "type" : "field",
@@ -2691,7 +2766,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 107,
+            "line" : 111,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
@@ -2701,7 +2776,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             },
             {
               "type" : "field",
@@ -2710,7 +2785,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 112,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
@@ -2727,7 +2802,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
             },
             {
               "type" : "hexstr",
@@ -2736,7 +2811,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
@@ -2753,23 +2828,19 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
+              "type" : "hexstr",
+              "value" : "0x8847"
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 108,
+            "column" : 31,
+            "source_fragment" : "0x8847; ..."
+          }
         }
       ]
     },
@@ -2783,23 +2854,19 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "= hdr.inner_vlan_tag.eth_type; ..."
+          }
         }
       ]
     },
@@ -2809,18 +2876,22 @@
       "runtime_data" : [],
       "primitives" : [
         {
-          "op" : "mark_to_drop",
+          "op" : "assign",
           "parameters" : [
             {
-              "type" : "header",
-              "value" : "standard_metadata"
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
+            },
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
-            "line" : 149,
-            "column" : 16,
-            "source_fragment" : "mark_to_drop(standard_metadata)"
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
           }
         }
       ]
@@ -2835,18 +2906,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
-              "type" : "hexstr",
-              "value" : "0x01"
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 143,
-            "column" : 36,
-            "source_fragment" : "2w1; ..."
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "= hdr.ethernet.eth_type; ..."
           }
         }
       ]
@@ -2861,7 +2932,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp_0"]
+              "value" : ["scalars", "spgw_ingress_tmp"]
             },
             {
               "type" : "expression",
@@ -2891,7 +2962,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "spgw_ingress_tmp_0"]
+              "value" : ["scalars", "spgw_ingress_tmp"]
             },
             {
               "type" : "expression",
@@ -2917,11 +2988,119 @@
       "runtime_data" : [],
       "primitives" : [
         {
+          "op" : "mark_to_drop",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "standard_metadata"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/spgw.p4",
+            "line" : 149,
+            "column" : 16,
+            "source_fragment" : "mark_to_drop(standard_metadata)"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_14",
+      "id" : 46,
+      "runtime_data" : [],
+      "primitives" : [
+        {
           "op" : "assign",
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x01"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 143,
+            "column" : 36,
+            "source_fragment" : "2w1; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_15",
+      "id" : 47,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "spgw_ingress_tmp_0"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_16",
+      "id" : 48,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "spgw_ingress_tmp_0"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_17",
+      "id" : 49,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
             },
             {
               "type" : "hexstr",
@@ -2938,8 +3117,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 46,
+      "name" : "act_18",
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2947,7 +3126,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
             },
             {
               "type" : "hexstr",
@@ -2993,8 +3172,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 47,
+      "name" : "act_19",
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3023,8 +3202,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 48,
+      "name" : "act_20",
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3032,7 +3211,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len20"]
             },
             {
               "type" : "field",
@@ -3049,8 +3228,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 49,
+      "name" : "act_21",
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3107,8 +3286,8 @@
       ]
     },
     {
-      "name" : "act_18",
-      "id" : 50,
+      "name" : "act_22",
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3166,13 +3345,13 @@
     },
     {
       "name" : "nop",
-      "id" : 51,
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.spgw_egress.gtpu_encap",
-      "id" : 52,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3412,7 +3591,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr19"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr22"]
             }
           ],
           "source_info" : {
@@ -3431,7 +3610,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr20"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr23"]
             }
           ],
           "source_info" : {
@@ -3532,7 +3711,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len20"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -3731,7 +3910,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len17"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len20"]
             }
           ],
           "source_info" : {
@@ -3750,7 +3929,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid18"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid21"]
             }
           ],
           "source_info" : {
@@ -3764,7 +3943,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 53,
+      "id" : 57,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3777,7 +3956,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 252,
+            "line" : 264,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -3787,17 +3966,17 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
+              "value" : ["scalars", "fabric_metadata_t._ip_eth_type4"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 254,
-            "column" : 33,
+            "line" : 266,
+            "column" : 38,
             "source_fragment" : "= fabric_metadata.ip_eth_type; ..."
           }
         }
@@ -3805,7 +3984,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 54,
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3818,7 +3997,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 259,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -3832,12 +4011,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 260,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
@@ -3856,7 +4035,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 261,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -3875,7 +4054,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 262,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -3889,12 +4068,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl9"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 263,
+            "line" : 275,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
@@ -3904,7 +4083,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -3922,7 +4101,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 55,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3935,7 +4114,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 271,
+            "line" : 283,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -3949,12 +4128,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi7"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 272,
+            "line" : 284,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -3968,12 +4147,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri6"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 285,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -3987,14 +4166,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 286,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -4006,12 +4185,12 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 287,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -4039,7 +4218,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 56,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4051,14 +4230,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
+              "value" : ["scalars", "fabric_metadata_t._last_eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 312,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type; ..."
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type; ..."
           }
         },
         {
@@ -4071,7 +4250,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -4079,8 +4258,8 @@
       ]
     },
     {
-      "name" : "act_19",
-      "id" : 57,
+      "name" : "act_23",
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4096,8 +4275,8 @@
       ]
     },
     {
-      "name" : "act_20",
-      "id" : 58,
+      "name" : "act_24",
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4147,8 +4326,8 @@
       ]
     },
     {
-      "name" : "act_21",
-      "id" : 59,
+      "name" : "act_25",
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4161,7 +4340,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4169,8 +4348,8 @@
       ]
     },
     {
-      "name" : "act_22",
-      "id" : 60,
+      "name" : "act_26",
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4199,8 +4378,8 @@
       ]
     },
     {
-      "name" : "act_23",
-      "id" : 61,
+      "name" : "act_27",
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4229,8 +4408,8 @@
       ]
     },
     {
-      "name" : "act_24",
-      "id" : 62,
+      "name" : "act_28",
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4243,7 +4422,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4251,8 +4430,8 @@
       ]
     },
     {
-      "name" : "act_25",
-      "id" : 63,
+      "name" : "act_29",
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4292,7 +4471,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -4300,8 +4479,8 @@
       ]
     },
     {
-      "name" : "act_26",
-      "id" : 64,
+      "name" : "act_30",
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4314,7 +4493,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4322,8 +4501,8 @@
       ]
     },
     {
-      "name" : "act_27",
-      "id" : 65,
+      "name" : "act_31",
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4363,7 +4542,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -4562,9 +4741,9 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+            "line" : 110,
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -4591,7 +4770,7 @@
           "id" : 7,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -4604,9 +4783,9 @@
           "direct_meters" : null,
           "action_ids" : [38],
           "actions" : ["act_6"],
-          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "base_default_next" : "node_16",
           "next_tables" : {
-            "act_6" : "FabricIngress.filtering.ingress_port_vlan"
+            "act_6" : "node_16"
           },
           "default_entry" : {
             "action_id" : 38,
@@ -4616,11 +4795,127 @@
           }
         },
         {
-          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "name" : "tbl_act_7",
           "id" : 8,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 51,
+            "line" : 131,
+            "column" : 42,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [39],
+          "actions" : ["act_7"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_7" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 39,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_8",
+          "id" : 9,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [40],
+          "actions" : ["act_8"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_8" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 40,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_9",
+          "id" : 10,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [41],
+          "actions" : ["act_9"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_9" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 41,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_10",
+          "id" : 11,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [42],
+          "actions" : ["act_10"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_10" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 42,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "id" : 12,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 53,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -4642,6 +4937,12 @@
               "name" : "vlan_id",
               "target" : ["vlan_tag", "vlan_id"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "inner_vlan_id",
+              "target" : ["inner_vlan_tag", "vlan_id"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -4667,10 +4968,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 9,
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 87,
+            "line" : 90,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -4689,8 +4990,20 @@
             },
             {
               "match_type" : "exact",
-              "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "name" : "is_ipv4",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv41"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_ipv6",
+              "target" : ["scalars", "fabric_metadata_t._is_ipv62"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_mpls",
+              "target" : ["scalars", "fabric_metadata_t._is_mpls3"],
               "mask" : null
             }
           ],
@@ -4702,9 +5015,9 @@
           "direct_meters" : null,
           "action_ids" : [14],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "tbl_act_7",
+          "base_default_next" : "tbl_act_11",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "tbl_act_7"
+            "FabricIngress.filtering.set_forwarding_type" : "tbl_act_11"
           },
           "default_entry" : {
             "action_id" : 14,
@@ -4714,8 +5027,8 @@
           }
         },
         {
-          "name" : "tbl_act_7",
-          "id" : 10,
+          "name" : "tbl_act_11",
+          "id" : 14,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -4723,14 +5036,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [47],
-          "actions" : ["act_15"],
-          "base_default_next" : "node_19",
+          "action_ids" : [51],
+          "actions" : ["act_19"],
+          "base_default_next" : "node_26",
           "next_tables" : {
-            "act_15" : "node_19"
+            "act_19" : "node_26"
           },
           "default_entry" : {
-            "action_id" : 47,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4738,7 +5051,7 @@
         },
         {
           "name" : "FabricIngress.spgw_ingress.s1u_filter_table",
-          "id" : 11,
+          "id" : 15,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 83,
@@ -4763,8 +5076,8 @@
           "actions" : ["nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_8",
-            "__MISS__" : "tbl_act_9"
+            "__HIT__" : "tbl_act_12",
+            "__MISS__" : "tbl_act_13"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -4774,8 +5087,8 @@
           }
         },
         {
-          "name" : "tbl_act_8",
-          "id" : 12,
+          "name" : "tbl_act_12",
+          "id" : 16,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -4783,22 +5096,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_23",
+          "action_ids" : [43],
+          "actions" : ["act_11"],
+          "base_default_next" : "node_30",
           "next_tables" : {
-            "act_7" : "node_23"
+            "act_11" : "node_30"
           },
           "default_entry" : {
-            "action_id" : 39,
+            "action_id" : 43,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_9",
-          "id" : 13,
+          "name" : "tbl_act_13",
+          "id" : 17,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -4806,22 +5119,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_23",
+          "action_ids" : [44],
+          "actions" : ["act_12"],
+          "base_default_next" : "node_30",
           "next_tables" : {
-            "act_8" : "node_23"
+            "act_12" : "node_30"
           },
           "default_entry" : {
-            "action_id" : 40,
+            "action_id" : 44,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_10",
-          "id" : 14,
+          "name" : "tbl_act_14",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 149,
@@ -4835,22 +5148,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41],
-          "actions" : ["act_9"],
-          "base_default_next" : "tbl_act_11",
+          "action_ids" : [45],
+          "actions" : ["act_13"],
+          "base_default_next" : "tbl_act_15",
           "next_tables" : {
-            "act_9" : "tbl_act_11"
+            "act_13" : "tbl_act_15"
           },
           "default_entry" : {
-            "action_id" : 41,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_11",
-          "id" : 15,
+          "name" : "tbl_act_15",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 151,
@@ -4864,14 +5177,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [42],
-          "actions" : ["act_10"],
+          "action_ids" : [46],
+          "actions" : ["act_14"],
           "base_default_next" : "tbl_spgw_ingress_gtpu_decap",
           "next_tables" : {
-            "act_10" : "tbl_spgw_ingress_gtpu_decap"
+            "act_14" : "tbl_spgw_ingress_gtpu_decap"
           },
           "default_entry" : {
-            "action_id" : 42,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4879,7 +5192,7 @@
         },
         {
           "name" : "tbl_spgw_ingress_gtpu_decap",
-          "id" : 16,
+          "id" : 20,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 152,
@@ -4895,9 +5208,9 @@
           "direct_meters" : null,
           "action_ids" : [9],
           "actions" : ["FabricIngress.spgw_ingress.gtpu_decap"],
-          "base_default_next" : "node_33",
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "FabricIngress.spgw_ingress.gtpu_decap" : "node_33"
+            "FabricIngress.spgw_ingress.gtpu_decap" : "node_40"
           },
           "default_entry" : {
             "action_id" : 9,
@@ -4908,7 +5221,7 @@
         },
         {
           "name" : "FabricIngress.spgw_ingress.dl_sess_lookup",
-          "id" : 17,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 70,
@@ -4933,8 +5246,8 @@
           "actions" : ["FabricIngress.spgw_ingress.set_dl_sess_info", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_12",
-            "__MISS__" : "tbl_act_13"
+            "__HIT__" : "tbl_act_16",
+            "__MISS__" : "tbl_act_17"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -4944,8 +5257,8 @@
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 18,
+          "name" : "tbl_act_16",
+          "id" : 22,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -4953,22 +5266,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43],
-          "actions" : ["act_11"],
-          "base_default_next" : "node_30",
+          "action_ids" : [47],
+          "actions" : ["act_15"],
+          "base_default_next" : "node_37",
           "next_tables" : {
-            "act_11" : "node_30"
+            "act_15" : "node_37"
           },
           "default_entry" : {
-            "action_id" : 43,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 19,
+          "name" : "tbl_act_17",
+          "id" : 23,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -4976,22 +5289,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [44],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_30",
+          "action_ids" : [48],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_37",
           "next_tables" : {
-            "act_12" : "node_30"
+            "act_16" : "node_37"
           },
           "default_entry" : {
-            "action_id" : 44,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_14",
-          "id" : 20,
+          "name" : "tbl_act_18",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 154,
@@ -5005,22 +5318,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [45],
-          "actions" : ["act_13"],
-          "base_default_next" : "node_33",
+          "action_ids" : [49],
+          "actions" : ["act_17"],
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "act_13" : "node_33"
+            "act_17" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 45,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 21,
+          "name" : "tbl_act_19",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 156,
@@ -5034,22 +5347,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [46],
-          "actions" : ["act_14"],
-          "base_default_next" : "node_33",
+          "action_ids" : [50],
+          "actions" : ["act_18"],
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "act_14" : "node_33"
+            "act_18" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 46,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 22,
+          "name" : "tbl_act_20",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 175,
@@ -5063,14 +5376,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [48],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_35",
+          "action_ids" : [52],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "act_16" : "node_35"
+            "act_20" : "node_42"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5078,7 +5391,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 23,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 46,
@@ -5089,7 +5402,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -5121,7 +5434,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 24,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 71,
@@ -5132,7 +5445,7 @@
             {
               "match_type" : "exact",
               "name" : "mpls_label",
-              "target" : ["scalars", "fabric_metadata_t._mpls_label5"],
+              "target" : ["scalars", "fabric_metadata_t._mpls_label8"],
               "mask" : null
             }
           ],
@@ -5158,7 +5471,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v4",
-          "id" : 25,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 101,
@@ -5196,7 +5509,7 @@
         },
         {
           "name" : "FabricIngress.acl.acl",
-          "id" : 26,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 60,
@@ -5213,19 +5526,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t._ip_proto13"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto16"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport17"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport18"],
               "mask" : null
             },
             {
@@ -5249,7 +5562,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
+              "target" : ["scalars", "fabric_metadata_t._last_eth_type0"],
               "mask" : null
             },
             {
@@ -5285,13 +5598,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_43",
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "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"
+            "FabricIngress.acl.set_next_id_acl" : "node_50",
+            "FabricIngress.acl.punt_to_cpu" : "node_50",
+            "FabricIngress.acl.set_clone_session_id" : "node_50",
+            "FabricIngress.acl.drop" : "node_50",
+            "FabricIngress.acl.nop_acl" : "node_50"
           },
           "default_entry" : {
             "action_id" : 23,
@@ -5302,10 +5615,10 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 27,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 104,
+            "line" : 116,
             "column" : 10,
             "source_fragment" : "xconnect"
           },
@@ -5319,7 +5632,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -5346,10 +5659,10 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 28,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 184,
+            "line" : 196,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -5357,7 +5670,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -5380,10 +5693,10 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 29,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 218,
+            "line" : 230,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -5391,7 +5704,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -5417,10 +5730,10 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 30,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 74,
+            "line" : 82,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -5428,7 +5741,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t._next_id10"],
+              "target" : ["scalars", "fabric_metadata_t._next_id13"],
               "mask" : null
             }
           ],
@@ -5440,10 +5753,10 @@
           "direct_meters" : null,
           "action_ids" : [24, 5],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_48",
+          "base_default_next" : "node_55",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_48",
-            "nop" : "node_48"
+            "FabricIngress.next.set_vlan" : "node_55",
+            "nop" : "node_55"
           },
           "default_entry" : {
             "action_id" : 5,
@@ -5453,8 +5766,8 @@
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 31,
+          "name" : "tbl_act_21",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -5468,22 +5781,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_50",
+          "action_ids" : [53],
+          "actions" : ["act_21"],
+          "base_default_next" : "node_57",
           "next_tables" : {
-            "act_17" : "node_50"
+            "act_21" : "node_57"
           },
           "default_entry" : {
-            "action_id" : 49,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 32,
+          "name" : "tbl_act_22",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -5497,14 +5810,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50],
-          "actions" : ["act_18"],
+          "action_ids" : [54],
+          "actions" : ["act_22"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_18" : null
+            "act_22" : null
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5517,7 +5830,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 165,
+            "line" : 177,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -5535,15 +5848,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto16"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
               }
             ]
           }
@@ -5655,7 +5968,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 104,
+            "line" : 109,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -5678,7 +5991,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 121,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -5701,11 +6014,80 @@
             }
           },
           "true_next" : "tbl_act_6",
-          "false_next" : "FabricIngress.filtering.ingress_port_vlan"
+          "false_next" : "node_16"
+        },
+        {
+          "name" : "node_16",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 130,
+            "column" : 12,
+            "source_fragment" : "hdr.mpls.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["mpls", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_7",
+          "false_next" : "node_18"
+        },
+        {
+          "name" : "node_18",
+          "id" : 7,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 133,
+            "column" : 16,
+            "source_fragment" : "hdr.vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "node_19",
+          "false_next" : "tbl_act_10"
         },
         {
           "name" : "node_19",
-          "id" : 6,
+          "id" : 8,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 135,
+            "column" : 19,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_8",
+          "false_next" : "tbl_act_9"
+        },
+        {
+          "name" : "node_26",
+          "id" : 9,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 144,
@@ -5727,8 +6109,8 @@
           "false_next" : "FabricIngress.spgw_ingress.dl_sess_lookup"
         },
         {
-          "name" : "node_23",
-          "id" : 7,
+          "name" : "node_30",
+          "id" : 10,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 148,
@@ -5753,12 +6135,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_10",
-          "false_next" : "tbl_act_11"
+          "true_next" : "tbl_act_14",
+          "false_next" : "tbl_act_15"
         },
         {
-          "name" : "node_30",
-          "id" : 8,
+          "name" : "node_37",
+          "id" : 11,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -5770,12 +6152,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_14",
-          "false_next" : "tbl_act_15"
+          "true_next" : "tbl_act_18",
+          "false_next" : "tbl_act_19"
         },
         {
-          "name" : "node_33",
-          "id" : 9,
+          "name" : "node_40",
+          "id" : 12,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -5794,15 +6176,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_35"
+          "true_next" : "tbl_act_20",
+          "false_next" : "node_42"
         },
         {
-          "name" : "node_35",
-          "id" : 10,
+          "name" : "node_42",
+          "id" : 13,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 74,
+            "line" : 71,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -5817,7 +6199,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
                   }
                 }
               },
@@ -5827,12 +6209,12 @@
               }
             }
           },
-          "true_next" : "node_36",
+          "true_next" : "node_43",
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_36",
-          "id" : 11,
+          "name" : "node_43",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 141,
@@ -5845,7 +6227,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5854,11 +6236,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_38"
+          "false_next" : "node_45"
         },
         {
-          "name" : "node_38",
-          "id" : 12,
+          "name" : "node_45",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 142,
@@ -5871,7 +6253,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5880,11 +6262,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_40"
+          "false_next" : "node_47"
         },
         {
-          "name" : "node_40",
-          "id" : 13,
+          "name" : "node_47",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 143,
@@ -5897,7 +6279,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type12"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5909,11 +6291,11 @@
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_43",
-          "id" : 14,
+          "name" : "node_50",
+          "id" : 17,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 78,
+            "line" : 75,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -5928,7 +6310,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._skip_next8"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_next11"]
                   }
                 }
               },
@@ -5942,8 +6324,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_48",
-          "id" : 15,
+          "name" : "node_55",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -5964,12 +6346,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_17",
-          "false_next" : "node_50"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_57"
         },
         {
-          "name" : "node_50",
-          "id" : 16,
+          "name" : "node_57",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -5991,7 +6373,7 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_18"
+          "true_next" : "tbl_act_22"
         }
       ]
     },
@@ -6000,15 +6382,15 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 92,
+        "line" : 93,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_54",
+      "init_table" : "node_61",
       "tables" : [
         {
-          "name" : "tbl_act_19",
-          "id" : 33,
+          "name" : "tbl_act_23",
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -6022,22 +6404,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [57],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_56",
+          "action_ids" : [61],
+          "actions" : ["act_23"],
+          "base_default_next" : "node_63",
           "next_tables" : {
-            "act_19" : "node_56"
+            "act_23" : "node_63"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_20",
-          "id" : 34,
+          "name" : "tbl_act_24",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -6051,25 +6433,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
-          "actions" : ["act_20"],
-          "base_default_next" : "node_58",
+          "action_ids" : [62],
+          "actions" : ["act_24"],
+          "base_default_next" : "node_65",
           "next_tables" : {
-            "act_20" : "node_58"
+            "act_24" : "node_65"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_21",
-          "id" : 35,
+          "name" : "tbl_act_25",
+          "id" : 39,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -6080,14 +6462,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59],
-          "actions" : ["act_21"],
-          "base_default_next" : "node_60",
+          "action_ids" : [63],
+          "actions" : ["act_25"],
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "act_21" : "node_60"
+            "act_25" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 59,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6095,10 +6477,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 36,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -6109,14 +6491,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [57],
           "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" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6124,10 +6506,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 37,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 314,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -6138,14 +6520,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [58],
           "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" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6153,10 +6535,10 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 38,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 291,
+            "line" : 317,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -6164,7 +6546,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id5"],
               "mask" : null
             },
             {
@@ -6180,87 +6562,12 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56, 51],
+          "action_ids" : [60, 55],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_22",
-            "__MISS__" : "tbl_act_23"
-          },
-          "default_entry" : {
-            "action_id" : 51,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_22",
-          "id" : 39,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [60],
-          "actions" : ["act_22"],
-          "base_default_next" : "node_67",
-          "next_tables" : {
-            "act_22" : "node_67"
-          },
-          "default_entry" : {
-            "action_id" : 60,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_23",
-          "id" : 40,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [61],
-          "actions" : ["act_23"],
-          "base_default_next" : "node_67",
-          "next_tables" : {
-            "act_23" : "node_67"
-          },
-          "default_entry" : {
-            "action_id" : 61,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_egress_next_push_vlan",
-          "id" : 41,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 320,
-            "column" : 16,
-            "source_fragment" : "push_vlan()"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [55],
-          "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_70",
-          "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_70"
+            "__HIT__" : "tbl_act_26",
+            "__MISS__" : "tbl_act_27"
           },
           "default_entry" : {
             "action_id" : 55,
@@ -6270,11 +6577,86 @@
           }
         },
         {
-          "name" : "tbl_act_24",
-          "id" : 42,
+          "name" : "tbl_act_26",
+          "id" : 43,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [64],
+          "actions" : ["act_26"],
+          "base_default_next" : "node_74",
+          "next_tables" : {
+            "act_26" : "node_74"
+          },
+          "default_entry" : {
+            "action_id" : 64,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_27",
+          "id" : 44,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [65],
+          "actions" : ["act_27"],
+          "base_default_next" : "node_74",
+          "next_tables" : {
+            "act_27" : "node_74"
+          },
+          "default_entry" : {
+            "action_id" : 65,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_egress_next_push_vlan",
+          "id" : 45,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 357,
+            "column" : 20,
+            "source_fragment" : "push_vlan()"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [59],
+          "actions" : ["FabricEgress.egress_next.push_vlan"],
+          "base_default_next" : "node_77",
+          "next_tables" : {
+            "FabricEgress.egress_next.push_vlan" : "node_77"
+          },
+          "default_entry" : {
+            "action_id" : 59,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_28",
+          "id" : 46,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 366,
             "column" : 25,
             "source_fragment" : "="
           },
@@ -6285,25 +6667,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
-          "actions" : ["act_25"],
-          "base_default_next" : "node_72",
+          "action_ids" : [67],
+          "actions" : ["act_29"],
+          "base_default_next" : "node_79",
           "next_tables" : {
-            "act_25" : "node_72"
+            "act_29" : "node_79"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 67,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_25",
-          "id" : 43,
+          "name" : "tbl_act_29",
+          "id" : 47,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -6314,25 +6696,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
-          "actions" : ["act_24"],
-          "base_default_next" : "node_78",
+          "action_ids" : [66],
+          "actions" : ["act_28"],
+          "base_default_next" : "node_85",
           "next_tables" : {
-            "act_24" : "node_78"
+            "act_28" : "node_85"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 66,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_26",
-          "id" : 44,
+          "name" : "tbl_act_30",
+          "id" : 48,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 29,
             "source_fragment" : "="
           },
@@ -6343,25 +6725,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
-          "actions" : ["act_27"],
-          "base_default_next" : "node_76",
+          "action_ids" : [69],
+          "actions" : ["act_31"],
+          "base_default_next" : "node_83",
           "next_tables" : {
-            "act_27" : "node_76"
+            "act_31" : "node_83"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 69,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_27",
-          "id" : 45,
+          "name" : "tbl_act_31",
+          "id" : 49,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -6372,14 +6754,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
-          "actions" : ["act_26"],
-          "base_default_next" : "node_78",
+          "action_ids" : [68],
+          "actions" : ["act_30"],
+          "base_default_next" : "node_85",
           "next_tables" : {
-            "act_26" : "node_78"
+            "act_30" : "node_85"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 68,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6387,7 +6769,7 @@
         },
         {
           "name" : "tbl_spgw_egress_gtpu_encap",
-          "id" : 46,
+          "id" : 50,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 228,
@@ -6401,14 +6783,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
+          "action_ids" : [56],
           "actions" : ["FabricEgress.spgw_egress.gtpu_encap"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.spgw_egress.gtpu_encap" : null
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6418,8 +6800,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_54",
-          "id" : 17,
+          "name" : "node_61",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -6437,7 +6819,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
+                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out15"]
                   }
                 }
               },
@@ -6447,12 +6829,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_19",
-          "false_next" : "node_56"
+          "true_next" : "tbl_act_23",
+          "false_next" : "node_63"
         },
         {
-          "name" : "node_56",
-          "id" : 18,
+          "name" : "node_63",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -6473,15 +6855,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_20",
-          "false_next" : "node_58"
+          "true_next" : "tbl_act_24",
+          "false_next" : "node_65"
         },
         {
-          "name" : "node_58",
-          "id" : 19,
+          "name" : "node_65",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 306,
+            "line" : 332,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -6500,7 +6882,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast14"]
                       }
                     }
                   },
@@ -6526,15 +6908,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_21",
-          "false_next" : "node_60"
+          "true_next" : "tbl_act_25",
+          "false_next" : "node_67"
         },
         {
-          "name" : "node_60",
-          "id" : 20,
+          "name" : "node_67",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 311,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -6544,7 +6926,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
+                "value" : ["scalars", "fabric_metadata_t._mpls_label8"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6552,15 +6934,15 @@
               }
             }
           },
-          "true_next" : "node_61",
+          "true_next" : "node_68",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_61",
-          "id" : 21,
+          "name" : "node_68",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6579,12 +6961,12 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_67",
-          "id" : 22,
+          "name" : "node_74",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 317,
-            "column" : 12,
+            "line" : 354,
+            "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
           "expression" : {
@@ -6605,16 +6987,16 @@
               }
             }
           },
-          "true_next" : "node_68",
-          "false_next" : "node_70"
+          "true_next" : "node_75",
+          "false_next" : "node_77"
         },
         {
-          "name" : "node_68",
-          "id" : 23,
+          "name" : "node_75",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 319,
-            "column" : 16,
+            "line" : 356,
+            "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
           "expression" : {
@@ -6623,7 +7005,7 @@
               "op" : "!=",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
+                "value" : ["scalars", "fabric_metadata_t._vlan_id5"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6632,14 +7014,14 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_70"
+          "false_next" : "node_77"
         },
         {
-          "name" : "node_70",
-          "id" : 24,
+          "name" : "node_77",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 325,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6654,15 +7036,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_24",
-          "false_next" : "node_74"
+          "true_next" : "tbl_act_28",
+          "false_next" : "node_81"
         },
         {
-          "name" : "node_72",
-          "id" : 25,
+          "name" : "node_79",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -6680,15 +7062,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_25",
-          "false_next" : "node_78"
+          "true_next" : "tbl_act_29",
+          "false_next" : "node_85"
         },
         {
-          "name" : "node_74",
-          "id" : 26,
+          "name" : "node_81",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 329,
+            "line" : 369,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -6703,15 +7085,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_26",
-          "false_next" : "node_78"
+          "true_next" : "tbl_act_30",
+          "false_next" : "node_85"
         },
         {
-          "name" : "node_76",
-          "id" : 27,
+          "name" : "node_83",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -6729,12 +7111,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_27",
-          "false_next" : "node_78"
+          "true_next" : "tbl_act_31",
+          "false_next" : "node_85"
         },
         {
-          "name" : "node_78",
-          "id" : 28,
+          "name" : "node_85",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 227,
@@ -6747,7 +7129,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._spgw_direction16"]
+                "value" : ["scalars", "fabric_metadata_t._spgw_direction19"]
               },
               "right" : {
                 "type" : "hexstr",
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
index b5fd3c7..2fca1c0 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
@@ -67,6 +67,12 @@
     bitwidth: 12
     match_type: TERNARY
   }
+  match_fields {
+    id: 4
+    name: "inner_vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
   action_refs {
     id: 16836487
   }
@@ -100,8 +106,20 @@
   }
   match_fields {
     id: 3
-    name: "eth_type"
-    bitwidth: 16
+    name: "is_ipv4"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 4
+    name: "is_ipv6"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 5
+    name: "is_mpls"
+    bitwidth: 1
     match_type: EXACT
   }
   action_refs {
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index 8ea1cab..bc0e350 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -8,7 +8,10 @@
         ["tmp", 32, false],
         ["tmp_1", 32, false],
         ["egress_next_tmp", 1, false],
-        ["fabric_metadata_t.eth_type", 16, false],
+        ["fabric_metadata_t.last_eth_type", 16, false],
+        ["fabric_metadata_t.is_ipv4", 1, false],
+        ["fabric_metadata_t.is_ipv6", 1, false],
+        ["fabric_metadata_t.is_mpls", 1, false],
         ["fabric_metadata_t.ip_eth_type", 16, false],
         ["fabric_metadata_t.vlan_id", 12, false],
         ["fabric_metadata_t.vlan_pri", 3, false],
@@ -23,7 +26,8 @@
         ["fabric_metadata_t.is_controller_packet_out", 1, false],
         ["fabric_metadata_t.ip_proto", 8, false],
         ["fabric_metadata_t.l4_sport", 16, false],
-        ["fabric_metadata_t.l4_dport", 16, false]
+        ["fabric_metadata_t.l4_dport", 16, false],
+        ["_padding_0", 5, false]
       ]
     },
     {
@@ -347,7 +351,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.eth_type"]
+                  "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
                 },
                 {
                   "type" : "field",
@@ -387,7 +391,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "value" : "default",
@@ -421,7 +425,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -436,6 +440,18 @@
               "next_state" : "parse_inner_vlan_tag"
             },
             {
+              "type" : "hexstr",
+              "value" : "0x88a8",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x9100",
+              "mask" : null,
+              "next_state" : "parse_inner_vlan_tag"
+            },
+            {
               "value" : "default",
               "mask" : null,
               "next_state" : null
@@ -467,7 +483,7 @@
               "type" : "hexstr",
               "value" : "0x0800",
               "mask" : null,
-              "next_state" : "parse_ipv4"
+              "next_state" : "pre_parse_ipv4"
             },
             {
               "type" : "hexstr",
@@ -505,6 +521,29 @@
               "parameters" : [
                 {
                   "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t.is_mpls"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
                   "value" : ["scalars", "fabric_metadata_t.mpls_label"]
                 },
                 {
@@ -562,12 +601,49 @@
           ]
         },
         {
-          "name" : "parse_ipv4",
+          "name" : "pre_parse_ipv4",
           "id" : 6,
           "parser_ops" : [
             {
               "parameters" : [
                 {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t.is_ipv4"]
+                },
+                {
+                  "type" : "expression",
+                  "value" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "b2d",
+                      "left" : null,
+                      "right" : {
+                        "type" : "bool",
+                        "value" : true
+                      }
+                    }
+                  }
+                }
+              ],
+              "op" : "set"
+            }
+          ],
+          "transitions" : [
+            {
+              "value" : "default",
+              "mask" : null,
+              "next_state" : "parse_ipv4"
+            }
+          ],
+          "transition_key" : []
+        },
+        {
+          "name" : "parse_ipv4",
+          "id" : 7,
+          "parser_ops" : [
+            {
+              "parameters" : [
+                {
                   "type" : "regular",
                   "value" : "ipv4"
                 }
@@ -635,7 +711,7 @@
         },
         {
           "name" : "parse_tcp",
-          "id" : 7,
+          "id" : 8,
           "parser_ops" : [
             {
               "parameters" : [
@@ -684,7 +760,7 @@
         },
         {
           "name" : "parse_udp",
-          "id" : 8,
+          "id" : 9,
           "parser_ops" : [
             {
               "parameters" : [
@@ -738,7 +814,7 @@
         },
         {
           "name" : "parse_icmp",
-          "id" : 9,
+          "id" : 10,
           "parser_ops" : [
             {
               "parameters" : [
@@ -769,7 +845,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 261,
+        "line" : 276,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -797,7 +873,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 80,
+        "line" : 83,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -869,7 +945,7 @@
       "binding" : "FabricIngress.next.xconnect",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 92,
+        "line" : 103,
         "column" : 50,
         "source_fragment" : "xconnect_counter"
       }
@@ -881,7 +957,7 @@
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 166,
+        "line" : 178,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
@@ -893,7 +969,7 @@
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 210,
+        "line" : 222,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
@@ -929,7 +1005,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 283,
+        "line" : 309,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -1230,7 +1306,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 83,
+            "line" : 86,
             "column" : 8,
             "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
           }
@@ -1588,6 +1664,25 @@
             "column" : 5,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
           }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 107,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
         }
       ]
     },
@@ -1615,7 +1710,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 100,
+            "line" : 112,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
           }
@@ -1854,7 +1949,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 213,
+            "line" : 225,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -1883,7 +1978,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 214,
+            "line" : 226,
             "column" : 8,
             "source_fragment" : "fabric_metadata.is_multicast = true"
           }
@@ -1980,25 +2075,6 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.eth_type = hdr.vlan_tag.eth_type"
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
               "value" : ["scalars", "fabric_metadata_t.vlan_id"]
             },
             {
@@ -2008,7 +2084,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 106,
+            "line" : 110,
             "column" : 12,
             "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
           }
@@ -2027,7 +2103,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 107,
+            "line" : 111,
             "column" : 12,
             "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
           }
@@ -2046,7 +2122,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 112,
             "column" : 12,
             "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
           }
@@ -2072,7 +2148,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
           }
@@ -2089,6 +2165,110 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8847"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 108,
+            "column" : 31,
+            "source_fragment" : "0x8847; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_3",
+      "id" : 31,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["inner_vlan_tag", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 20,
+            "source_fragment" : "fabric_metadata.last_eth_type = hdr.inner_vlan_tag.eth_type"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_4",
+      "id" : 32,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 20,
+            "source_fragment" : "fabric_metadata.last_eth_type = hdr.vlan_tag.eth_type"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_5",
+      "id" : 33,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
+            },
+            {
+              "type" : "field",
+              "value" : ["ethernet", "eth_type"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 16,
+            "source_fragment" : "fabric_metadata.last_eth_type = hdr.ethernet.eth_type"
+          }
+        }
+      ]
+    },
+    {
+      "name" : "act_6",
+      "id" : 34,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "tmp"]
             },
             {
@@ -2138,8 +2318,8 @@
       ]
     },
     {
-      "name" : "act_3",
-      "id" : 31,
+      "name" : "act_7",
+      "id" : 35,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2197,13 +2377,13 @@
     },
     {
       "name" : "nop",
-      "id" : 32,
+      "id" : 36,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 33,
+      "id" : 37,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2216,7 +2396,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 252,
+            "line" : 264,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -2226,7 +2406,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
             },
             {
               "type" : "field",
@@ -2235,16 +2415,16 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 254,
+            "line" : 266,
             "column" : 8,
-            "source_fragment" : "fabric_metadata.eth_type = fabric_metadata.ip_eth_type"
+            "source_fragment" : "fabric_metadata.last_eth_type = fabric_metadata.ip_eth_type"
           }
         }
       ]
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 34,
+      "id" : 38,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2257,7 +2437,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 259,
+            "line" : 271,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -2276,7 +2456,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 260,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
           }
@@ -2295,7 +2475,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 261,
+            "line" : 273,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -2314,7 +2494,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 262,
+            "line" : 274,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -2333,7 +2513,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 263,
+            "line" : 275,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
           }
@@ -2343,7 +2523,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
             },
             {
               "type" : "hexstr",
@@ -2361,7 +2541,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 35,
+      "id" : 39,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2374,7 +2554,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 271,
+            "line" : 283,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -2393,7 +2573,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 272,
+            "line" : 284,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
           }
@@ -2412,7 +2592,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 285,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
           }
@@ -2426,14 +2606,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 286,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type"
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.last_eth_type"
           }
         },
         {
@@ -2450,7 +2630,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 287,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
           }
@@ -2478,7 +2658,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 36,
+      "id" : 40,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2490,14 +2670,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t.last_eth_type"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 312,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type"
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.last_eth_type"
           }
         },
         {
@@ -2510,7 +2690,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -2518,8 +2698,8 @@
       ]
     },
     {
-      "name" : "act_4",
-      "id" : 37,
+      "name" : "act_8",
+      "id" : 41,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2535,8 +2715,8 @@
       ]
     },
     {
-      "name" : "act_5",
-      "id" : 38,
+      "name" : "act_9",
+      "id" : 42,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2586,8 +2766,8 @@
       ]
     },
     {
-      "name" : "act_6",
-      "id" : 39,
+      "name" : "act_10",
+      "id" : 43,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2600,7 +2780,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2608,8 +2788,8 @@
       ]
     },
     {
-      "name" : "act_7",
-      "id" : 40,
+      "name" : "act_11",
+      "id" : 44,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2638,8 +2818,8 @@
       ]
     },
     {
-      "name" : "act_8",
-      "id" : 41,
+      "name" : "act_12",
+      "id" : 45,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2668,8 +2848,8 @@
       ]
     },
     {
-      "name" : "act_9",
-      "id" : 42,
+      "name" : "act_13",
+      "id" : 46,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2682,7 +2862,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2690,8 +2870,8 @@
       ]
     },
     {
-      "name" : "act_10",
-      "id" : 43,
+      "name" : "act_14",
+      "id" : 47,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2731,7 +2911,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -2739,8 +2919,8 @@
       ]
     },
     {
-      "name" : "act_11",
-      "id" : 44,
+      "name" : "act_15",
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2753,7 +2933,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -2761,8 +2941,8 @@
       ]
     },
     {
-      "name" : "act_12",
-      "id" : 45,
+      "name" : "act_16",
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2802,7 +2982,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -2856,9 +3036,9 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 105,
-            "column" : 37,
-            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
+            "line" : 110,
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -2885,7 +3065,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 126,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -2898,9 +3078,9 @@
           "direct_meters" : null,
           "action_ids" : [29],
           "actions" : ["act_1"],
-          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "base_default_next" : "node_8",
           "next_tables" : {
-            "act_1" : "FabricIngress.filtering.ingress_port_vlan"
+            "act_1" : "node_8"
           },
           "default_entry" : {
             "action_id" : 29,
@@ -2910,11 +3090,127 @@
           }
         },
         {
-          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "name" : "tbl_act_2",
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 51,
+            "line" : 131,
+            "column" : 42,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [30],
+          "actions" : ["act_2"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_2" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 30,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_3",
+          "id" : 4,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 136,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [31],
+          "actions" : ["act_3"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_3" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 31,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_4",
+          "id" : 5,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 139,
+            "column" : 50,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [32],
+          "actions" : ["act_4"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_4" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 32,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_5",
+          "id" : 6,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 141,
+            "column" : 46,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [33],
+          "actions" : ["act_5"],
+          "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
+          "next_tables" : {
+            "act_5" : "FabricIngress.filtering.ingress_port_vlan"
+          },
+          "default_entry" : {
+            "action_id" : 33,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "FabricIngress.filtering.ingress_port_vlan",
+          "id" : 7,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 53,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -2936,6 +3232,12 @@
               "name" : "vlan_id",
               "target" : ["vlan_tag", "vlan_id"],
               "mask" : null
+            },
+            {
+              "match_type" : "ternary",
+              "name" : "inner_vlan_id",
+              "target" : ["inner_vlan_tag", "vlan_id"],
+              "mask" : null
             }
           ],
           "match_type" : "ternary",
@@ -2961,10 +3263,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 4,
+          "id" : 8,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 87,
+            "line" : 90,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -2983,8 +3285,20 @@
             },
             {
               "match_type" : "exact",
-              "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t.eth_type"],
+              "name" : "is_ipv4",
+              "target" : ["scalars", "fabric_metadata_t.is_ipv4"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_ipv6",
+              "target" : ["scalars", "fabric_metadata_t.is_ipv6"],
+              "mask" : null
+            },
+            {
+              "match_type" : "exact",
+              "name" : "is_mpls",
+              "target" : ["scalars", "fabric_metadata_t.is_mpls"],
               "mask" : null
             }
           ],
@@ -2996,9 +3310,9 @@
           "direct_meters" : null,
           "action_ids" : [10],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "node_10",
+          "base_default_next" : "node_17",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "node_10"
+            "FabricIngress.filtering.set_forwarding_type" : "node_17"
           },
           "default_entry" : {
             "action_id" : 10,
@@ -3009,7 +3323,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 5,
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 46,
@@ -3052,7 +3366,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 6,
+          "id" : 10,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 71,
@@ -3089,7 +3403,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.routing_v4",
-          "id" : 7,
+          "id" : 11,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 101,
@@ -3127,7 +3441,7 @@
         },
         {
           "name" : "FabricIngress.acl.acl",
-          "id" : 8,
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 60,
@@ -3180,7 +3494,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t.eth_type"],
+              "target" : ["scalars", "fabric_metadata_t.last_eth_type"],
               "mask" : null
             },
             {
@@ -3216,13 +3530,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_25",
           "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_25",
+            "FabricIngress.acl.punt_to_cpu" : "node_25",
+            "FabricIngress.acl.set_clone_session_id" : "node_25",
+            "FabricIngress.acl.drop" : "node_25",
+            "FabricIngress.acl.nop_acl" : "node_25"
           },
           "default_entry" : {
             "action_id" : 19,
@@ -3233,10 +3547,10 @@
         },
         {
           "name" : "FabricIngress.next.xconnect",
-          "id" : 9,
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 104,
+            "line" : 116,
             "column" : 10,
             "source_fragment" : "xconnect"
           },
@@ -3277,10 +3591,10 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 10,
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 184,
+            "line" : 196,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -3311,10 +3625,10 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 11,
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 218,
+            "line" : 230,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -3348,10 +3662,10 @@
         },
         {
           "name" : "FabricIngress.next.next_vlan",
-          "id" : 12,
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 74,
+            "line" : 82,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -3371,10 +3685,10 @@
           "direct_meters" : null,
           "action_ids" : [20, 3],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
-          "base_default_next" : "node_23",
+          "base_default_next" : "node_30",
           "next_tables" : {
-            "FabricIngress.next.set_vlan" : "node_23",
-            "nop" : "node_23"
+            "FabricIngress.next.set_vlan" : "node_30",
+            "nop" : "node_30"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -3384,8 +3698,8 @@
           }
         },
         {
-          "name" : "tbl_act_2",
-          "id" : 13,
+          "name" : "tbl_act_6",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 31,
@@ -3399,22 +3713,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [30],
-          "actions" : ["act_2"],
-          "base_default_next" : "node_25",
+          "action_ids" : [34],
+          "actions" : ["act_6"],
+          "base_default_next" : "node_32",
           "next_tables" : {
-            "act_2" : "node_25"
+            "act_6" : "node_32"
           },
           "default_entry" : {
-            "action_id" : 30,
+            "action_id" : 34,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_3",
-          "id" : 14,
+          "name" : "tbl_act_7",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 34,
@@ -3428,14 +3742,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [31],
-          "actions" : ["act_3"],
+          "action_ids" : [35],
+          "actions" : ["act_7"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_3" : null
+            "act_7" : null
           },
           "default_entry" : {
-            "action_id" : 31,
+            "action_id" : 35,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -3448,7 +3762,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 165,
+            "line" : 177,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -3509,7 +3823,7 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 104,
+            "line" : 109,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -3532,7 +3846,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 121,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -3555,14 +3869,83 @@
             }
           },
           "true_next" : "tbl_act_1",
-          "false_next" : "FabricIngress.filtering.ingress_port_vlan"
+          "false_next" : "node_8"
+        },
+        {
+          "name" : "node_8",
+          "id" : 3,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 130,
+            "column" : 12,
+            "source_fragment" : "hdr.mpls.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["mpls", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_2",
+          "false_next" : "node_10"
         },
         {
           "name" : "node_10",
-          "id" : 3,
+          "id" : 4,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 133,
+            "column" : 16,
+            "source_fragment" : "hdr.vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "node_11",
+          "false_next" : "tbl_act_5"
+        },
+        {
+          "name" : "node_11",
+          "id" : 5,
+          "source_info" : {
+            "filename" : "include/control/filtering.p4",
+            "line" : 135,
+            "column" : 19,
+            "source_fragment" : "hdr.inner_vlan_tag.isValid()"
+          },
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["inner_vlan_tag", "$valid$"]
+              }
+            }
+          },
+          "true_next" : "tbl_act_3",
+          "false_next" : "tbl_act_4"
+        },
+        {
+          "name" : "node_17",
+          "id" : 6,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 74,
+            "line" : 71,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_forwarding == false"
           },
@@ -3587,12 +3970,12 @@
               }
             }
           },
-          "true_next" : "node_11",
+          "true_next" : "node_18",
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_11",
-          "id" : 4,
+          "name" : "node_18",
+          "id" : 7,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 141,
@@ -3614,11 +3997,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_13"
+          "false_next" : "node_20"
         },
         {
-          "name" : "node_13",
-          "id" : 5,
+          "name" : "node_20",
+          "id" : 8,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 142,
@@ -3640,11 +4023,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_15"
+          "false_next" : "node_22"
         },
         {
-          "name" : "node_15",
-          "id" : 6,
+          "name" : "node_22",
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 143,
@@ -3669,11 +4052,11 @@
           "false_next" : "FabricIngress.acl.acl"
         },
         {
-          "name" : "node_18",
-          "id" : 7,
+          "name" : "node_25",
+          "id" : 10,
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 78,
+            "line" : 75,
             "column" : 12,
             "source_fragment" : "fabric_metadata.skip_next == false"
           },
@@ -3702,8 +4085,8 @@
           "true_next" : "FabricIngress.next.xconnect"
         },
         {
-          "name" : "node_23",
-          "id" : 8,
+          "name" : "node_30",
+          "id" : 11,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -3724,12 +4107,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_2",
-          "false_next" : "node_25"
+          "true_next" : "tbl_act_6",
+          "false_next" : "node_32"
         },
         {
-          "name" : "node_25",
-          "id" : 9,
+          "name" : "node_32",
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 33,
@@ -3751,7 +4134,7 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_3"
+          "true_next" : "tbl_act_7"
         }
       ]
     },
@@ -3760,15 +4143,15 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 92,
+        "line" : 93,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_29",
+      "init_table" : "node_36",
       "tables" : [
         {
-          "name" : "tbl_act_4",
-          "id" : 15,
+          "name" : "tbl_act_8",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -3782,22 +4165,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [37],
-          "actions" : ["act_4"],
-          "base_default_next" : "node_31",
+          "action_ids" : [41],
+          "actions" : ["act_8"],
+          "base_default_next" : "node_38",
           "next_tables" : {
-            "act_4" : "node_31"
+            "act_8" : "node_38"
           },
           "default_entry" : {
-            "action_id" : 37,
+            "action_id" : 41,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_5",
-          "id" : 16,
+          "name" : "tbl_act_9",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -3811,25 +4194,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [38],
-          "actions" : ["act_5"],
-          "base_default_next" : "node_33",
+          "action_ids" : [42],
+          "actions" : ["act_9"],
+          "base_default_next" : "node_40",
           "next_tables" : {
-            "act_5" : "node_33"
+            "act_9" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 38,
+            "action_id" : 42,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_6",
-          "id" : 17,
+          "name" : "tbl_act_10",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 308,
+            "line" : 334,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -3840,14 +4223,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39],
-          "actions" : ["act_6"],
-          "base_default_next" : "node_35",
+          "action_ids" : [43],
+          "actions" : ["act_10"],
+          "base_default_next" : "node_42",
           "next_tables" : {
-            "act_6" : "node_35"
+            "act_10" : "node_42"
           },
           "default_entry" : {
-            "action_id" : 39,
+            "action_id" : 43,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -3855,10 +4238,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 18,
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -3869,14 +4252,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [33],
+          "action_ids" : [37],
           "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" : 33,
+            "action_id" : 37,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -3884,10 +4267,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 19,
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 314,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -3898,14 +4281,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [34],
+          "action_ids" : [38],
           "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" : 34,
+            "action_id" : 38,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -3913,10 +4296,10 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 20,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 291,
+            "line" : 317,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -3940,23 +4323,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [36, 32],
+          "action_ids" : [40, 36],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_7",
-            "__MISS__" : "tbl_act_8"
+            "__HIT__" : "tbl_act_11",
+            "__MISS__" : "tbl_act_12"
           },
           "default_entry" : {
-            "action_id" : 32,
+            "action_id" : 36,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_7",
-          "id" : 21,
+          "name" : "tbl_act_11",
+          "id" : 25,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -3964,22 +4347,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_42",
+          "action_ids" : [44],
+          "actions" : ["act_11"],
+          "base_default_next" : "node_49",
           "next_tables" : {
-            "act_7" : "node_42"
+            "act_11" : "node_49"
           },
           "default_entry" : {
-            "action_id" : 40,
+            "action_id" : 44,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_8",
-          "id" : 22,
+          "name" : "tbl_act_12",
+          "id" : 26,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -3987,14 +4370,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_42",
+          "action_ids" : [45],
+          "actions" : ["act_12"],
+          "base_default_next" : "node_49",
           "next_tables" : {
-            "act_8" : "node_42"
+            "act_12" : "node_49"
           },
           "default_entry" : {
-            "action_id" : 41,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4002,11 +4385,11 @@
         },
         {
           "name" : "tbl_egress_next_push_vlan",
-          "id" : 23,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 320,
-            "column" : 16,
+            "line" : 357,
+            "column" : 20,
             "source_fragment" : "push_vlan()"
           },
           "key" : [],
@@ -4016,25 +4399,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [35],
+          "action_ids" : [39],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_45",
+          "base_default_next" : "node_52",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_45"
+            "FabricEgress.egress_next.push_vlan" : "node_52"
           },
           "default_entry" : {
-            "action_id" : 35,
+            "action_id" : 39,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_9",
-          "id" : 24,
+          "name" : "tbl_act_13",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 326,
+            "line" : 366,
             "column" : 25,
             "source_fragment" : "="
           },
@@ -4045,25 +4428,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43],
-          "actions" : ["act_10"],
-          "base_default_next" : "node_47",
+          "action_ids" : [47],
+          "actions" : ["act_14"],
+          "base_default_next" : "node_54",
           "next_tables" : {
-            "act_10" : "node_47"
+            "act_14" : "node_54"
           },
           "default_entry" : {
-            "action_id" : 43,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_10",
-          "id" : 25,
+          "name" : "tbl_act_14",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -4074,25 +4457,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [42],
-          "actions" : ["act_9"],
+          "action_ids" : [46],
+          "actions" : ["act_13"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_9" : null
+            "act_13" : null
           },
           "default_entry" : {
-            "action_id" : 42,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_11",
-          "id" : 26,
+          "name" : "tbl_act_15",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 330,
+            "line" : 370,
             "column" : 29,
             "source_fragment" : "="
           },
@@ -4103,25 +4486,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [45],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_51",
+          "action_ids" : [49],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_58",
           "next_tables" : {
-            "act_12" : "node_51"
+            "act_16" : "node_58"
           },
           "default_entry" : {
-            "action_id" : 45,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 27,
+          "name" : "tbl_act_16",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -4132,14 +4515,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [44],
-          "actions" : ["act_11"],
+          "action_ids" : [48],
+          "actions" : ["act_15"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_11" : null
+            "act_15" : null
           },
           "default_entry" : {
-            "action_id" : 44,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4149,8 +4532,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_29",
-          "id" : 10,
+          "name" : "node_36",
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -4178,12 +4561,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_4",
-          "false_next" : "node_31"
+          "true_next" : "tbl_act_8",
+          "false_next" : "node_38"
         },
         {
-          "name" : "node_31",
-          "id" : 11,
+          "name" : "node_38",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -4204,15 +4587,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_5",
-          "false_next" : "node_33"
+          "true_next" : "tbl_act_9",
+          "false_next" : "node_40"
         },
         {
-          "name" : "node_33",
-          "id" : 12,
+          "name" : "node_40",
+          "id" : 15,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 306,
+            "line" : 332,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -4257,15 +4640,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_6",
-          "false_next" : "node_35"
+          "true_next" : "tbl_act_10",
+          "false_next" : "node_42"
         },
         {
-          "name" : "node_35",
-          "id" : 13,
+          "name" : "node_42",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 311,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -4283,15 +4666,15 @@
               }
             }
           },
-          "true_next" : "node_36",
+          "true_next" : "node_43",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_36",
-          "id" : 14,
+          "name" : "node_43",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -4310,12 +4693,12 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_42",
-          "id" : 15,
+          "name" : "node_49",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 317,
-            "column" : 12,
+            "line" : 354,
+            "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
           "expression" : {
@@ -4336,16 +4719,16 @@
               }
             }
           },
-          "true_next" : "node_43",
-          "false_next" : "node_45"
+          "true_next" : "node_50",
+          "false_next" : "node_52"
         },
         {
-          "name" : "node_43",
-          "id" : 16,
+          "name" : "node_50",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 319,
-            "column" : 16,
+            "line" : 356,
+            "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
           "expression" : {
@@ -4363,14 +4746,14 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_45"
+          "false_next" : "node_52"
         },
         {
-          "name" : "node_45",
-          "id" : 17,
+          "name" : "node_52",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 325,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -4385,15 +4768,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_9",
-          "false_next" : "node_49"
+          "true_next" : "tbl_act_13",
+          "false_next" : "node_56"
         },
         {
-          "name" : "node_47",
-          "id" : 18,
+          "name" : "node_54",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 327,
+            "line" : 367,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -4412,14 +4795,14 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_10"
+          "true_next" : "tbl_act_14"
         },
         {
-          "name" : "node_49",
-          "id" : 19,
+          "name" : "node_56",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 329,
+            "line" : 369,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -4435,14 +4818,14 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_11"
+          "true_next" : "tbl_act_15"
         },
         {
-          "name" : "node_51",
-          "id" : 20,
+          "name" : "node_58",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 371,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -4461,7 +4844,7 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_12"
+          "true_next" : "tbl_act_16"
         }
       ]
     }
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt
index fdff523..8d074ae 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/p4info.txt
@@ -25,6 +25,12 @@
     bitwidth: 12
     match_type: TERNARY
   }
+  match_fields {
+    id: 4
+    name: "inner_vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
   action_refs {
     id: 16836487
   }
@@ -58,8 +64,20 @@
   }
   match_fields {
     id: 3
-    name: "eth_type"
-    bitwidth: 16
+    name: "is_ipv4"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 4
+    name: "is_ipv6"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 5
+    name: "is_mpls"
+    bitwidth: 1
     match_type: EXACT
   }
   action_refs {
diff --git a/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricFilteringPipelinerTest.java b/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricFilteringPipelinerTest.java
index 3bdab99..dbb2bd4 100644
--- a/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricFilteringPipelinerTest.java
+++ b/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricFilteringPipelinerTest.java
@@ -31,6 +31,7 @@
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.flow.criteria.Criteria;
+import org.onosproject.net.flow.criteria.PiCriterion;
 import org.onosproject.net.flowobjective.DefaultFilteringObjective;
 import org.onosproject.net.flowobjective.FilteringObjective;
 import org.onosproject.net.flowobjective.ObjectiveError;
@@ -45,6 +46,8 @@
  */
 public class FabricFilteringPipelinerTest extends FabricPipelinerTest {
 
+    public static final byte[] ONE = {1};
+    public static final byte[] ZERO = {0};
     private FilteringObjectiveTranslator translator;
 
     @Before
@@ -67,6 +70,7 @@
         FlowRule inportFlowRuleExpected =
                 buildExpectedVlanInPortRule(PORT_1,
                                             VlanId.NONE,
+                                            VlanId.NONE,
                                             VLAN_100,
                                             FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN);
 
@@ -128,6 +132,7 @@
         FlowRule inportFlowRuleExpected =
                 buildExpectedVlanInPortRule(PORT_1,
                                             VlanId.NONE,
+                                            VlanId.NONE,
                                             VLAN_100,
                                             FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN);
 
@@ -173,6 +178,7 @@
         FlowRule inportFlowRuleExpected =
                 buildExpectedVlanInPortRule(PORT_1,
                                             VlanId.NONE,
+                                            VlanId.NONE,
                                             VLAN_100,
                                             FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN);
 
@@ -204,6 +210,7 @@
         FlowRule flowRuleExpected =
                 buildExpectedVlanInPortRule(PORT_1,
                                             VlanId.NONE,
+                                            VlanId.NONE,
                                             VLAN_100,
                                             FabricConstants.FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN);
 
@@ -234,7 +241,7 @@
 
         TrafficSelector.Builder selector = DefaultTrafficSelector.builder()
                 .matchInPort(PORT_1)
-                .matchPi(VLAN_INVALID);
+                .matchPi(buildPiCriterionVlan(null, null));
         PiAction piAction = PiAction.builder()
                     .withId(FabricConstants.FABRIC_INGRESS_FILTERING_DENY)
                     .build();
@@ -287,6 +294,48 @@
         assertError(ObjectiveError.BADPARAMS, result2);
     }
 
+    /**
+     * Test the mapping between EtherType and conditions.
+     */
+    @Test
+    public void testMappingEthType() {
+        PiCriterion expectedMappingDefault = PiCriterion.builder()
+                .matchExact(FabricConstants.HDR_IS_MPLS, ZERO)
+                .matchExact(FabricConstants.HDR_IS_IPV4, ZERO)
+                .matchExact(FabricConstants.HDR_IS_IPV6, ZERO)
+                .build();
+        PiCriterion expectedMappingIpv6 = PiCriterion.builder()
+                .matchExact(FabricConstants.HDR_IS_MPLS, ZERO)
+                .matchExact(FabricConstants.HDR_IS_IPV4, ZERO)
+                .matchExact(FabricConstants.HDR_IS_IPV6, ONE)
+                .build();
+        PiCriterion expectedMappingIpv4 = PiCriterion.builder()
+                .matchExact(FabricConstants.HDR_IS_MPLS, ZERO)
+                .matchExact(FabricConstants.HDR_IS_IPV4, ONE)
+                .matchExact(FabricConstants.HDR_IS_IPV6, ZERO)
+                .build();
+        PiCriterion expectedMappingMpls = PiCriterion.builder()
+                .matchExact(FabricConstants.HDR_IS_MPLS, ONE)
+                .matchExact(FabricConstants.HDR_IS_IPV4, ZERO)
+                .matchExact(FabricConstants.HDR_IS_IPV6, ZERO)
+                .build();
+
+
+        PiCriterion actualMappingIpv6 = FilteringObjectiveTranslator.mapEthTypeFwdClassifier(Ethernet.TYPE_IPV6);
+        assertEquals(expectedMappingIpv6, actualMappingIpv6);
+
+        PiCriterion actualMappingIpv4 = FilteringObjectiveTranslator.mapEthTypeFwdClassifier(Ethernet.TYPE_IPV4);
+        assertEquals(expectedMappingIpv4, actualMappingIpv4);
+
+        PiCriterion actualMappingMpls = FilteringObjectiveTranslator.mapEthTypeFwdClassifier(Ethernet.MPLS_UNICAST);
+        assertEquals(expectedMappingMpls, actualMappingMpls);
+
+        PiCriterion actualMapping = FilteringObjectiveTranslator.mapEthTypeFwdClassifier(Ethernet.TYPE_ARP);
+        assertEquals(expectedMappingDefault, actualMapping);
+
+
+    }
+
     /* Utilities */
 
     private void assertError(ObjectiveError error, ObjectiveTranslation actualTranslation) {
@@ -314,22 +363,23 @@
         return builder.add();
     }
 
-    private FlowRule buildExpectedVlanInPortRule(PortNumber inPort, VlanId vlanId,
+    private FlowRule buildExpectedVlanInPortRule(PortNumber inPort,
+                                                 VlanId vlanId,
+                                                 VlanId innerVlanId,
                                                  VlanId internalVlan,
                                                  TableId tableId) {
 
         TrafficSelector.Builder selector = DefaultTrafficSelector.builder()
                 .matchInPort(inPort);
         PiAction piAction;
-        if (vlanId == null || vlanId.equals(VlanId.NONE)) {
-            selector.matchPi(VLAN_INVALID);
+        selector.matchPi(buildPiCriterionVlan(vlanId, innerVlanId));
+        if (!vlanValid(vlanId)) {
             piAction = PiAction.builder()
                     .withId(FabricConstants.FABRIC_INGRESS_FILTERING_PERMIT_WITH_INTERNAL_VLAN)
                     .withParameter(new PiActionParam(
                             FabricConstants.VLAN_ID, internalVlan.toShort()))
                     .build();
         } else {
-            selector.matchPi(VLAN_VALID);
             selector.matchVlanId(vlanId);
             piAction = PiAction.builder()
                     .withId(FabricConstants.FABRIC_INGRESS_FILTERING_PERMIT)
@@ -348,6 +398,18 @@
                 .build();
     }
 
+    private boolean vlanValid(VlanId vlanId) {
+        return (vlanId != null && !vlanId.equals(VlanId.NONE));
+    }
+
+    private PiCriterion buildPiCriterionVlan(VlanId vlanId,
+                                             VlanId innerVlanId) {
+        PiCriterion.Builder piCriterionBuilder = PiCriterion.builder()
+                .matchExact(FabricConstants.HDR_VLAN_IS_VALID,
+                            vlanValid(vlanId) ? ONE : ZERO);
+        return piCriterionBuilder.build();
+    }
+
     private FlowRule buildExpectedFwdClassifierRule(PortNumber inPort,
                                                     MacAddress dstMac,
                                                     MacAddress dstMacMask,
@@ -355,7 +417,7 @@
                                                     byte fwdClass) {
         TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder()
                 .matchInPort(inPort)
-                .matchEthType(ethType);
+                .matchPi(FilteringObjectiveTranslator.mapEthTypeFwdClassifier(ethType));
         if (dstMacMask != null) {
             sbuilder.matchEthDstMasked(dstMac, dstMacMask);
         } else {
diff --git a/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricPipelinerTest.java b/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricPipelinerTest.java
index 0b8a71c..619a0b7 100644
--- a/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricPipelinerTest.java
+++ b/pipelines/fabric/src/test/java/org/onosproject/pipelines/fabric/pipeliner/FabricPipelinerTest.java
@@ -27,9 +27,7 @@
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.flow.DefaultTrafficSelector;
 import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.criteria.PiCriterion;
 import org.onosproject.pipelines.fabric.FabricCapabilities;
-import org.onosproject.pipelines.fabric.FabricConstants;
 
 import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.expect;
@@ -54,12 +52,6 @@
     static final TrafficSelector VLAN_META = DefaultTrafficSelector.builder()
             .matchVlanId(VLAN_100)
             .build();
-    static final PiCriterion VLAN_VALID = PiCriterion.builder()
-            .matchExact(FabricConstants.HDR_VLAN_IS_VALID, new byte[]{1})
-            .build();
-    static final PiCriterion VLAN_INVALID = PiCriterion.builder()
-            .matchExact(FabricConstants.HDR_VLAN_IS_VALID, new byte[]{0})
-            .build();
 
     FabricCapabilities capabilitiesHashed;
     FabricCapabilities capabilitiesSimple;