Small fixes and improvements on fabric.p4
- setting s_tag and c_tag for BNG as early as possible in the pipeline
- ingress_port_vlan was matching on inner_vlan_tag but that field could be not present

Change-Id: Id4d51159a314d45cec370471ed244a51fd74338b
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
index 952127d..84ec0fe 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
@@ -9,8 +9,6 @@
         ["tmp_2", 4, false],
         ["tmp", 32, false],
         ["tmp_3", 32, false],
-        ["bng_ingress_s_tag", 12, false],
-        ["bng_ingress_c_tag", 12, false],
         ["bng_ingress_upstream_tmp", 1, false],
         ["bng_ingress_downstream_tmp", 1, false],
         ["bng_ingress_upstream_hasReturned", 1, false],
@@ -38,6 +36,8 @@
         ["fabric_metadata_t._bng_line_id20", 32, false],
         ["fabric_metadata_t._bng_pppoe_session_id21", 16, false],
         ["fabric_metadata_t._bng_ds_meter_result22", 32, false],
+        ["fabric_metadata_t._bng_s_tag23", 12, false],
+        ["fabric_metadata_t._bng_c_tag24", 12, false],
         ["_padding_0", 2, false]
       ]
     },
@@ -466,6 +466,19 @@
               "parameters" : [
                 {
                   "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._bng_s_tag23"]
+                },
+                {
+                  "type" : "field",
+                  "value" : ["vlan_tag", "vlan_id"]
+                }
+              ],
+              "op" : "set"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
                   "value" : ["scalars", "tmp_1"]
                 },
                 {
@@ -508,6 +521,19 @@
                 }
               ],
               "op" : "extract"
+            },
+            {
+              "parameters" : [
+                {
+                  "type" : "field",
+                  "value" : ["scalars", "fabric_metadata_t._bng_c_tag24"]
+                },
+                {
+                  "type" : "field",
+                  "value" : ["inner_vlan_tag", "vlan_id"]
+                }
+              ],
+              "op" : "set"
             }
           ],
           "transitions" : [
@@ -892,7 +918,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/parser.p4",
-        "line" : 259,
+        "line" : 265,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
@@ -997,7 +1023,7 @@
       "binding" : "FabricIngress.filtering.fwd_classifier",
       "source_info" : {
         "filename" : "include/control/filtering.p4",
-        "line" : 83,
+        "line" : 85,
         "column" : 50,
         "source_fragment" : "fwd_classifier_counter"
       }
@@ -1057,7 +1083,7 @@
       "binding" : "FabricIngress.next.hashed",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 180,
+        "line" : 184,
         "column" : 50,
         "source_fragment" : "hashed_counter"
       }
@@ -1069,7 +1095,7 @@
       "binding" : "FabricIngress.next.multicast",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 224,
+        "line" : 228,
         "column" : 50,
         "source_fragment" : "multicast_counter"
       }
@@ -1117,7 +1143,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 309,
+        "line" : 313,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -1609,7 +1635,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 320,
+            "line" : 317,
             "column" : 30,
             "source_fragment" : "= line_id; ..."
           }
@@ -1742,7 +1768,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 86,
+            "line" : 88,
             "column" : 33,
             "source_fragment" : "= fwd_type; ..."
           }
@@ -2152,6 +2178,44 @@
             "column" : 38,
             "source_fragment" : "= inner_vlan_id; ..."
           }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_s_tag23"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 80,
+            "column" : 34,
+            "source_fragment" : "= outer_vlan_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._bng_c_tag24"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 1
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 81,
+            "column" : 34,
+            "source_fragment" : "= inner_vlan_id; ..."
+          }
         }
       ]
     },
@@ -2387,7 +2451,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 227,
+            "line" : 231,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = group_id"
           }
@@ -2416,7 +2480,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 228,
+            "line" : 232,
             "column" : 37,
             "source_fragment" : "= true; ..."
           }
@@ -2522,7 +2586,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 109,
+            "line" : 111,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
@@ -2541,7 +2605,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 110,
+            "line" : 112,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
@@ -2560,7 +2624,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 111,
+            "line" : 113,
             "column" : 37,
             "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
@@ -2586,7 +2650,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 117,
             "column" : 42,
             "source_fragment" : "= hdr.inner_vlan_tag.vlan_id; ..."
           }
@@ -2605,7 +2669,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 116,
+            "line" : 118,
             "column" : 43,
             "source_fragment" : "= hdr.inner_vlan_tag.pri; ..."
           }
@@ -2624,7 +2688,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 117,
+            "line" : 119,
             "column" : 43,
             "source_fragment" : "= hdr.inner_vlan_tag.cfi; ..."
           }
@@ -2650,7 +2714,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 125,
+            "line" : 127,
             "column" : 37,
             "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
@@ -2783,96 +2847,6 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "bng_ingress_s_tag"]
-            },
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "vlan_id"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 338,
-            "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" : 339,
-            "column" : 16,
-            "source_fragment" : "c_tag = hdr.inner_vlan_tag.vlan_id"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_6",
-      "id" : 42,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "bng_ingress_s_tag"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id1"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 343,
-            "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_id5"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 344,
-            "column" : 16,
-            "source_fragment" : "c_tag = fmeta.inner_vlan_id; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_7",
-      "id" : 43,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
               "value" : ["scalars", "bng_ingress_upstream_tmp"]
             },
             {
@@ -2894,8 +2868,8 @@
       ]
     },
     {
-      "name" : "act_8",
-      "id" : 44,
+      "name" : "act_6",
+      "id" : 42,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2924,8 +2898,8 @@
       ]
     },
     {
-      "name" : "act_9",
-      "id" : 45,
+      "name" : "act_7",
+      "id" : 43,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -2973,8 +2947,8 @@
       ]
     },
     {
-      "name" : "act_10",
-      "id" : 46,
+      "name" : "act_8",
+      "id" : 44,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3009,8 +2983,8 @@
       ]
     },
     {
-      "name" : "act_11",
-      "id" : 47,
+      "name" : "act_9",
+      "id" : 45,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3035,8 +3009,8 @@
       ]
     },
     {
-      "name" : "act_12",
-      "id" : 48,
+      "name" : "act_10",
+      "id" : 46,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3065,8 +3039,8 @@
       ]
     },
     {
-      "name" : "act_13",
-      "id" : 49,
+      "name" : "act_11",
+      "id" : 47,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3095,8 +3069,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 50,
+      "name" : "act_12",
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3125,8 +3099,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 51,
+      "name" : "act_13",
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3156,13 +3130,13 @@
     },
     {
       "name" : "nop",
-      "id" : 52,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v4",
-      "id" : 53,
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3359,7 +3333,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 54,
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3372,7 +3346,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 266,
+            "line" : 270,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
           }
@@ -3391,7 +3365,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 268,
+            "line" : 272,
             "column" : 8,
             "source_fragment" : "hdr.eth_type.value = fabric_metadata.ip_eth_type; ..."
           }
@@ -3400,7 +3374,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 55,
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3413,7 +3387,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 273,
+            "line" : 277,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
           }
@@ -3432,7 +3406,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 274,
+            "line" : 278,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
@@ -3451,7 +3425,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 275,
+            "line" : 279,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = 3w0"
           }
@@ -3470,7 +3444,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 276,
+            "line" : 280,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
           }
@@ -3489,7 +3463,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 277,
+            "line" : 281,
             "column" : 8,
             "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
@@ -3517,7 +3491,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 56,
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3530,7 +3504,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 285,
+            "line" : 289,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -3549,7 +3523,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 290,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -3568,7 +3542,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 291,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -3606,7 +3580,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 289,
+            "line" : 293,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -3615,7 +3589,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 57,
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3628,7 +3602,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 285,
+            "line" : 289,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
           }
@@ -3647,7 +3621,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 286,
+            "line" : 290,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
@@ -3666,7 +3640,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 287,
+            "line" : 291,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
@@ -3704,7 +3678,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 289,
+            "line" : 293,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
@@ -3713,7 +3687,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_inner_vlan",
-      "id" : 58,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3726,7 +3700,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 296,
+            "line" : 300,
             "column" : 8,
             "source_fragment" : "hdr.inner_vlan_tag.setValid()"
           }
@@ -3745,7 +3719,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 297,
+            "line" : 301,
             "column" : 8,
             "source_fragment" : "hdr.inner_vlan_tag.cfi = fabric_metadata.inner_vlan_cfi; ..."
           }
@@ -3764,7 +3738,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 298,
+            "line" : 302,
             "column" : 8,
             "source_fragment" : "hdr.inner_vlan_tag.pri = fabric_metadata.inner_vlan_pri; ..."
           }
@@ -3783,7 +3757,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 299,
+            "line" : 303,
             "column" : 8,
             "source_fragment" : "hdr.inner_vlan_tag.vlan_id = fabric_metadata.inner_vlan_id; ..."
           }
@@ -3830,7 +3804,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 59,
+      "id" : 57,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3843,7 +3817,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 312,
+            "line" : 316,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -3851,8 +3825,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 60,
+      "name" : "act_14",
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3868,8 +3842,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 61,
+      "name" : "act_15",
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3919,8 +3893,8 @@
       ]
     },
     {
-      "name" : "act_18",
-      "id" : 62,
+      "name" : "act_16",
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3933,7 +3907,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 333,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -3941,8 +3915,8 @@
       ]
     },
     {
-      "name" : "act_19",
-      "id" : 63,
+      "name" : "act_17",
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3971,8 +3945,8 @@
       ]
     },
     {
-      "name" : "act_20",
-      "id" : 64,
+      "name" : "act_18",
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4001,8 +3975,8 @@
       ]
     },
     {
-      "name" : "act_21",
-      "id" : 65,
+      "name" : "act_19",
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4015,7 +3989,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 349,
+            "line" : 353,
             "column" : 12,
             "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
           }
@@ -4023,8 +3997,8 @@
       ]
     },
     {
-      "name" : "act_22",
-      "id" : 66,
+      "name" : "act_20",
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4037,7 +4011,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 366,
+            "line" : 370,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4045,8 +4019,8 @@
       ]
     },
     {
-      "name" : "act_23",
-      "id" : 67,
+      "name" : "act_21",
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4086,7 +4060,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 365,
+            "line" : 369,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -4094,8 +4068,8 @@
       ]
     },
     {
-      "name" : "act_24",
-      "id" : 68,
+      "name" : "act_22",
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4108,7 +4082,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 370,
+            "line" : 374,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4116,8 +4090,8 @@
       ]
     },
     {
-      "name" : "act_25",
-      "id" : 69,
+      "name" : "act_23",
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4157,7 +4131,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 369,
+            "line" : 373,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -4211,7 +4185,7 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 109,
+            "line" : 111,
             "column" : 36,
             "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           },
@@ -4240,7 +4214,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 115,
+            "line" : 117,
             "column" : 42,
             "source_fragment" : "= hdr.inner_vlan_tag.vlan_id; ..."
           },
@@ -4269,7 +4243,7 @@
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 125,
+            "line" : 127,
             "column" : 37,
             "source_fragment" : "="
           },
@@ -4354,7 +4328,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 90,
+            "line" : 92,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -4632,7 +4606,7 @@
           "id" : 10,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 198,
+            "line" : 202,
             "column" : 10,
             "source_fragment" : "hashed"
           },
@@ -4666,7 +4640,7 @@
           "id" : 11,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 232,
+            "line" : 236,
             "column" : 10,
             "source_fragment" : "multicast"
           },
@@ -4703,7 +4677,7 @@
           "id" : 12,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 82,
+            "line" : 86,
             "column" : 10,
             "source_fragment" : "next_vlan"
           },
@@ -4783,9 +4757,9 @@
           "direct_meters" : null,
           "action_ids" : [40],
           "actions" : ["act_4"],
-          "base_default_next" : "node_28",
+          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
           "next_tables" : {
-            "act_4" : "node_28"
+            "act_4" : "FabricIngress.bng_ingress.t_line_map"
           },
           "default_entry" : {
             "action_id" : 40,
@@ -4795,69 +4769,11 @@
           }
         },
         {
-          "name" : "tbl_act_5",
+          "name" : "FabricIngress.bng_ingress.t_line_map",
           "id" : 15,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 338,
-            "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" : [41],
-          "actions" : ["act_5"],
-          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
-          "next_tables" : {
-            "act_5" : "FabricIngress.bng_ingress.t_line_map"
-          },
-          "default_entry" : {
-            "action_id" : 41,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_6",
-          "id" : 16,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 343,
-            "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" : [42],
-          "actions" : ["act_6"],
-          "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
-          "next_tables" : {
-            "act_6" : "FabricIngress.bng_ingress.t_line_map"
-          },
-          "default_entry" : {
-            "action_id" : 42,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "FabricIngress.bng_ingress.t_line_map",
-          "id" : 17,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 323,
+            "line" : 320,
             "column" : 14,
             "source_fragment" : "t_line_map"
           },
@@ -4865,13 +4781,13 @@
             {
               "match_type" : "exact",
               "name" : "s_tag",
-              "target" : ["scalars", "bng_ingress_s_tag"],
+              "target" : ["scalars", "fabric_metadata_t._bng_s_tag23"],
               "mask" : null
             },
             {
               "match_type" : "exact",
               "name" : "c_tag",
-              "target" : ["scalars", "bng_ingress_c_tag"],
+              "target" : ["scalars", "fabric_metadata_t._bng_c_tag24"],
               "mask" : null
             }
           ],
@@ -4883,9 +4799,9 @@
           "direct_meters" : null,
           "action_ids" : [15],
           "actions" : ["FabricIngress.bng_ingress.set_line"],
-          "base_default_next" : "node_32",
+          "base_default_next" : "node_29",
           "next_tables" : {
-            "FabricIngress.bng_ingress.set_line" : "node_32"
+            "FabricIngress.bng_ingress.set_line" : "node_29"
           },
           "default_entry" : {
             "action_id" : 15,
@@ -4895,11 +4811,11 @@
           }
         },
         {
-          "name" : "tbl_act_7",
-          "id" : 18,
+          "name" : "tbl_act_5",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 352,
+            "line" : 339,
             "column" : 31,
             "source_fragment" : "="
           },
@@ -4910,14 +4826,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [45],
-          "actions" : ["act_9"],
+          "action_ids" : [43],
+          "actions" : ["act_7"],
           "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
           "next_tables" : {
-            "act_9" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
+            "act_7" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
           },
           "default_entry" : {
-            "action_id" : 45,
+            "action_id" : 43,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -4925,7 +4841,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
-          "id" : 19,
+          "id" : 17,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 48,
@@ -4956,8 +4872,8 @@
           "actions" : ["FabricIngress.bng_ingress.upstream.punt_to_cpu", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_8",
-            "__MISS__" : "tbl_act_9"
+            "__HIT__" : "tbl_act_6",
+            "__MISS__" : "tbl_act_7"
           },
           "default_entry" : {
             "action_id" : 0,
@@ -4967,54 +4883,54 @@
           }
         },
         {
+          "name" : "tbl_act_6",
+          "id" : 18,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [41],
+          "actions" : ["act_5"],
+          "base_default_next" : "node_34",
+          "next_tables" : {
+            "act_5" : "node_34"
+          },
+          "default_entry" : {
+            "action_id" : 41,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_7",
+          "id" : 19,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [42],
+          "actions" : ["act_6"],
+          "base_default_next" : "node_34",
+          "next_tables" : {
+            "act_6" : "node_34"
+          },
+          "default_entry" : {
+            "action_id" : 42,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
           "name" : "tbl_act_8",
           "id" : 20,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [43],
-          "actions" : ["act_7"],
-          "base_default_next" : "node_37",
-          "next_tables" : {
-            "act_7" : "node_37"
-          },
-          "default_entry" : {
-            "action_id" : 43,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_9",
-          "id" : 21,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [44],
-          "actions" : ["act_8"],
-          "base_default_next" : "node_37",
-          "next_tables" : {
-            "act_8" : "node_37"
-          },
-          "default_entry" : {
-            "action_id" : 44,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_10",
-          "id" : 22,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 123,
@@ -5028,14 +4944,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [46],
-          "actions" : ["act_10"],
-          "base_default_next" : "node_39",
+          "action_ids" : [44],
+          "actions" : ["act_8"],
+          "base_default_next" : "node_36",
           "next_tables" : {
-            "act_10" : "node_39"
+            "act_8" : "node_36"
           },
           "default_entry" : {
-            "action_id" : 46,
+            "action_id" : 44,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5043,7 +4959,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4",
-          "id" : 23,
+          "id" : 21,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 84,
@@ -5080,7 +4996,7 @@
           "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_11",
+            "FabricIngress.bng_ingress.upstream.term_disabled" : "tbl_act_9",
             "FabricIngress.bng_ingress.upstream.term_enabled_v4" : null
           },
           "default_entry" : {
@@ -5091,8 +5007,8 @@
           }
         },
         {
-          "name" : "tbl_act_11",
-          "id" : 24,
+          "name" : "tbl_act_9",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 128,
@@ -5106,14 +5022,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [47],
-          "actions" : ["act_11"],
+          "action_ids" : [45],
+          "actions" : ["act_9"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_11" : null
+            "act_9" : null
           },
           "default_entry" : {
-            "action_id" : 47,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5121,7 +5037,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_line_session_map",
-          "id" : 25,
+          "id" : 23,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 166,
@@ -5146,8 +5062,8 @@
           "actions" : ["nop", "FabricIngress.bng_ingress.downstream.set_session", "FabricIngress.bng_ingress.downstream.drop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_12",
-            "__MISS__" : "tbl_act_13"
+            "__HIT__" : "tbl_act_10",
+            "__MISS__" : "tbl_act_11"
           },
           "default_entry" : {
             "action_id" : 1,
@@ -5157,8 +5073,8 @@
           }
         },
         {
-          "name" : "tbl_act_12",
-          "id" : 26,
+          "name" : "tbl_act_10",
+          "id" : 24,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5166,22 +5082,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [48],
-          "actions" : ["act_12"],
-          "base_default_next" : "node_46",
+          "action_ids" : [46],
+          "actions" : ["act_10"],
+          "base_default_next" : "node_43",
           "next_tables" : {
-            "act_12" : "node_46"
+            "act_10" : "node_43"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 27,
+          "name" : "tbl_act_11",
+          "id" : 25,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5189,14 +5105,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49],
-          "actions" : ["act_13"],
-          "base_default_next" : "node_46",
+          "action_ids" : [47],
+          "actions" : ["act_11"],
+          "base_default_next" : "node_43",
           "next_tables" : {
-            "act_13" : "node_46"
+            "act_11" : "node_43"
           },
           "default_entry" : {
-            "action_id" : 49,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5204,7 +5120,7 @@
         },
         {
           "name" : "FabricIngress.bng_ingress.downstream.t_qos_v4",
-          "id" : 28,
+          "id" : 26,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 191,
@@ -5247,8 +5163,8 @@
           "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_14",
-            "FabricIngress.bng_ingress.downstream.qos_besteff" : "tbl_act_15"
+            "FabricIngress.bng_ingress.downstream.qos_prio" : "tbl_act_12",
+            "FabricIngress.bng_ingress.downstream.qos_besteff" : "tbl_act_13"
           },
           "default_entry" : {
             "action_id" : 14,
@@ -5258,8 +5174,8 @@
           }
         },
         {
-          "name" : "tbl_act_14",
-          "id" : 29,
+          "name" : "tbl_act_12",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 235,
@@ -5273,22 +5189,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50],
-          "actions" : ["act_14"],
+          "action_ids" : [48],
+          "actions" : ["act_12"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_14" : null
+            "act_12" : null
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 30,
+          "name" : "tbl_act_13",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 238,
@@ -5302,14 +5218,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
-          "actions" : ["act_15"],
+          "action_ids" : [49],
+          "actions" : ["act_13"],
           "base_default_next" : null,
           "next_tables" : {
-            "act_15" : null
+            "act_13" : null
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5322,7 +5238,7 @@
           "id" : 0,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 179,
+            "line" : 183,
             "column" : 57,
             "source_fragment" : "hashed_selector"
           },
@@ -5383,7 +5299,7 @@
           "id" : 1,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 108,
+            "line" : 110,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.isValid()"
           },
@@ -5406,7 +5322,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 114,
+            "line" : 116,
             "column" : 12,
             "source_fragment" : "hdr.inner_vlan_tag.isValid()"
           },
@@ -5429,7 +5345,7 @@
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 120,
+            "line" : 122,
             "column" : 12,
             "source_fragment" : "!hdr.mpls.isValid()"
           },
@@ -5596,7 +5512,7 @@
             }
           },
           "true_next" : "FabricIngress.next.hashed",
-          "false_next" : "node_28"
+          "false_next" : "FabricIngress.bng_ingress.t_line_map"
         },
         {
           "name" : "node_24",
@@ -5648,37 +5564,14 @@
             }
           },
           "true_next" : "tbl_act_4",
-          "false_next" : "node_28"
+          "false_next" : "FabricIngress.bng_ingress.t_line_map"
         },
         {
-          "name" : "node_28",
+          "name" : "node_29",
           "id" : 11,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 337,
-            "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_5",
-          "false_next" : "tbl_act_6"
-        },
-        {
-          "name" : "node_32",
-          "id" : 12,
-          "source_info" : {
-            "filename" : "include/bng.p4",
-            "line" : 351,
+            "line" : 338,
             "column" : 16,
             "source_fragment" : "hdr.pppoe.isValid()"
           },
@@ -5693,12 +5586,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_7",
+          "true_next" : "tbl_act_5",
           "false_next" : "FabricIngress.bng_ingress.downstream.t_line_session_map"
         },
         {
-          "name" : "node_37",
-          "id" : 13,
+          "name" : "node_34",
+          "id" : 12,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -5710,12 +5603,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_10",
-          "false_next" : "node_39"
+          "true_next" : "tbl_act_8",
+          "false_next" : "node_36"
         },
         {
-          "name" : "node_39",
-          "id" : 14,
+          "name" : "node_36",
+          "id" : 13,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -5735,11 +5628,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_40"
+          "true_next" : "node_37"
         },
         {
-          "name" : "node_40",
-          "id" : 15,
+          "name" : "node_37",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 125,
@@ -5761,8 +5654,8 @@
           "true_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4"
         },
         {
-          "name" : "node_46",
-          "id" : 16,
+          "name" : "node_43",
+          "id" : 15,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -5775,11 +5668,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_47"
+          "true_next" : "node_44"
         },
         {
-          "name" : "node_47",
-          "id" : 17,
+          "name" : "node_44",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 232,
@@ -5811,11 +5704,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_53",
+      "init_table" : "node_50",
       "tables" : [
         {
-          "name" : "tbl_act_16",
-          "id" : 31,
+          "name" : "tbl_act_14",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 41,
@@ -5829,22 +5722,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_55",
+          "action_ids" : [58],
+          "actions" : ["act_14"],
+          "base_default_next" : "node_52",
           "next_tables" : {
-            "act_16" : "node_55"
+            "act_14" : "node_52"
           },
           "default_entry" : {
-            "action_id" : 60,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 32,
+          "name" : "tbl_act_15",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 44,
@@ -5858,25 +5751,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_57",
+          "action_ids" : [59],
+          "actions" : ["act_15"],
+          "base_default_next" : "node_54",
           "next_tables" : {
-            "act_17" : "node_57"
+            "act_15" : "node_54"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 33,
+          "name" : "tbl_act_16",
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 333,
+            "line" : 337,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -5887,14 +5780,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
-          "actions" : ["act_18"],
-          "base_default_next" : "node_59",
+          "action_ids" : [60],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_56",
           "next_tables" : {
-            "act_18" : "node_59"
+            "act_16" : "node_56"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 60,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5902,10 +5795,10 @@
         },
         {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 34,
+          "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 337,
+            "line" : 341,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -5916,14 +5809,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [52],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
-          "base_default_next" : "node_63",
+          "base_default_next" : "node_60",
           "next_tables" : {
-            "FabricEgress.egress_next.pop_mpls_if_present" : "node_63"
+            "FabricEgress.egress_next.pop_mpls_if_present" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5931,10 +5824,10 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 35,
+          "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 339,
+            "line" : 343,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -5945,14 +5838,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [55],
+          "action_ids" : [53],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
-          "base_default_next" : "node_63",
+          "base_default_next" : "node_60",
           "next_tables" : {
-            "FabricEgress.egress_next.set_mpls" : "node_63"
+            "FabricEgress.egress_next.set_mpls" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 55,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5960,10 +5853,10 @@
         },
         {
           "name" : "tbl_egress_next_push_vlan",
-          "id" : 36,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 345,
+            "line" : 349,
             "column" : 12,
             "source_fragment" : "push_vlan()"
           },
@@ -5974,14 +5867,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56],
+          "action_ids" : [54],
           "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" : 56,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5989,10 +5882,10 @@
         },
         {
           "name" : "tbl_egress_next_push_inner_vlan",
-          "id" : 37,
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 346,
+            "line" : 350,
             "column" : 12,
             "source_fragment" : "push_inner_vlan()"
           },
@@ -6003,25 +5896,25 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
+          "action_ids" : [56],
           "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
-          "base_default_next" : "node_73",
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "FabricEgress.egress_next.push_inner_vlan" : "node_73"
+            "FabricEgress.egress_next.push_inner_vlan" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_19",
-          "id" : 38,
+          "name" : "tbl_act_17",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 349,
+            "line" : 353,
             "column" : 12,
             "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
           },
@@ -6032,14 +5925,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
-          "actions" : ["act_21"],
+          "action_ids" : [63],
+          "actions" : ["act_19"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
-            "act_21" : "FabricEgress.egress_next.egress_vlan"
+            "act_19" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6047,10 +5940,10 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 39,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 316,
+            "line" : 320,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -6074,23 +5967,23 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59, 52],
+          "action_ids" : [57, 50],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_20",
-            "__MISS__" : "tbl_act_21"
+            "__HIT__" : "tbl_act_18",
+            "__MISS__" : "tbl_act_19"
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_20",
-          "id" : 40,
+          "name" : "tbl_act_18",
+          "id" : 38,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6098,22 +5991,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_70",
+          "action_ids" : [61],
+          "actions" : ["act_17"],
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "act_19" : "node_70"
+            "act_17" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_21",
-          "id" : 41,
+          "name" : "tbl_act_19",
+          "id" : 39,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6121,14 +6014,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
-          "actions" : ["act_20"],
-          "base_default_next" : "node_70",
+          "action_ids" : [62],
+          "actions" : ["act_18"],
+          "base_default_next" : "node_67",
           "next_tables" : {
-            "act_20" : "node_70"
+            "act_18" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6136,10 +6029,10 @@
         },
         {
           "name" : "tbl_egress_next_push_vlan_0",
-          "id" : 42,
+          "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 356,
+            "line" : 360,
             "column" : 20,
             "source_fragment" : "push_vlan()"
           },
@@ -6150,14 +6043,72 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [57],
+          "action_ids" : [55],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_73",
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_73"
+            "FabricEgress.egress_next.push_vlan" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 55,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_20",
+          "id" : 41,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 369,
+            "column" : 25,
+            "source_fragment" : "="
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [65],
+          "actions" : ["act_21"],
+          "base_default_next" : "node_72",
+          "next_tables" : {
+            "act_21" : "node_72"
+          },
+          "default_entry" : {
+            "action_id" : 65,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_21",
+          "id" : 42,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 370,
+            "column" : 35,
+            "source_fragment" : "mark_to_drop(standard_metadata)"
+          },
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [64],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_78",
+          "next_tables" : {
+            "act_20" : "node_78"
+          },
+          "default_entry" : {
+            "action_id" : 64,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6168,8 +6119,8 @@
           "id" : 43,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 365,
-            "column" : 25,
+            "line" : 373,
+            "column" : 29,
             "source_fragment" : "="
           },
           "key" : [],
@@ -6181,9 +6132,9 @@
           "direct_meters" : null,
           "action_ids" : [67],
           "actions" : ["act_23"],
-          "base_default_next" : "node_75",
+          "base_default_next" : "node_76",
           "next_tables" : {
-            "act_23" : "node_75"
+            "act_23" : "node_76"
           },
           "default_entry" : {
             "action_id" : 67,
@@ -6197,8 +6148,8 @@
           "id" : 44,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 366,
-            "column" : 35,
+            "line" : 374,
+            "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
           "key" : [],
@@ -6210,9 +6161,9 @@
           "direct_meters" : null,
           "action_ids" : [66],
           "actions" : ["act_22"],
-          "base_default_next" : "node_81",
+          "base_default_next" : "node_78",
           "next_tables" : {
-            "act_22" : "node_81"
+            "act_22" : "node_78"
           },
           "default_entry" : {
             "action_id" : 66,
@@ -6222,66 +6173,8 @@
           }
         },
         {
-          "name" : "tbl_act_24",
-          "id" : 45,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 369,
-            "column" : 29,
-            "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_25"],
-          "base_default_next" : "node_79",
-          "next_tables" : {
-            "act_25" : "node_79"
-          },
-          "default_entry" : {
-            "action_id" : 69,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_25",
-          "id" : 46,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 370,
-            "column" : 39,
-            "source_fragment" : "mark_to_drop(standard_metadata)"
-          },
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [68],
-          "actions" : ["act_24"],
-          "base_default_next" : "node_81",
-          "next_tables" : {
-            "act_24" : "node_81"
-          },
-          "default_entry" : {
-            "action_id" : 68,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "tbl_bng_egress_downstream_encap_v4",
-          "id" : 47,
+          "id" : 45,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 294,
@@ -6295,14 +6188,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [51],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.bng_egress.downstream.encap_v4" : null
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6312,8 +6205,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_53",
-          "id" : 18,
+          "name" : "node_50",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 39,
@@ -6341,12 +6234,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_55"
+          "true_next" : "tbl_act_14",
+          "false_next" : "node_52"
         },
         {
-          "name" : "node_55",
-          "id" : 19,
+          "name" : "node_52",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -6367,15 +6260,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_17",
-          "false_next" : "node_57"
+          "true_next" : "tbl_act_15",
+          "false_next" : "node_54"
         },
         {
-          "name" : "node_57",
-          "id" : 20,
+          "name" : "node_54",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 331,
+            "line" : 335,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -6420,15 +6313,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_18",
-          "false_next" : "node_59"
+          "true_next" : "tbl_act_16",
+          "false_next" : "node_56"
         },
         {
-          "name" : "node_59",
-          "id" : 21,
+          "name" : "node_56",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 336,
+            "line" : 340,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -6446,15 +6339,15 @@
               }
             }
           },
-          "true_next" : "node_60",
+          "true_next" : "node_57",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_60",
-          "id" : 22,
+          "name" : "node_57",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 337,
+            "line" : 341,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6470,14 +6363,14 @@
             }
           },
           "true_next" : "tbl_egress_next_pop_mpls_if_present",
-          "false_next" : "node_63"
+          "false_next" : "node_60"
         },
         {
-          "name" : "node_63",
-          "id" : 23,
+          "name" : "node_60",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 343,
+            "line" : 347,
             "column" : 12,
             "source_fragment" : "fabric_metadata.push_double_vlan == true"
           },
@@ -6503,14 +6396,14 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "tbl_act_19"
+          "false_next" : "tbl_act_17"
         },
         {
-          "name" : "node_70",
-          "id" : 24,
+          "name" : "node_67",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 353,
+            "line" : 357,
             "column" : 16,
             "source_fragment" : "!egress_vlan.apply().hit"
           },
@@ -6532,15 +6425,15 @@
               }
             }
           },
-          "true_next" : "node_71",
-          "false_next" : "node_73"
+          "true_next" : "node_68",
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_71",
-          "id" : 25,
+          "name" : "node_68",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 355,
+            "line" : 359,
             "column" : 20,
             "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
           },
@@ -6559,14 +6452,14 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan_0",
-          "false_next" : "node_73"
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_73",
-          "id" : 26,
+          "name" : "node_70",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 364,
+            "line" : 368,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6581,15 +6474,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_22",
-          "false_next" : "node_77"
+          "true_next" : "tbl_act_20",
+          "false_next" : "node_74"
         },
         {
-          "name" : "node_75",
-          "id" : 27,
+          "name" : "node_72",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 366,
+            "line" : 370,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -6607,15 +6500,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_23",
-          "false_next" : "node_81"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_78"
         },
         {
-          "name" : "node_77",
-          "id" : 28,
+          "name" : "node_74",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 368,
+            "line" : 372,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -6630,15 +6523,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_24",
-          "false_next" : "node_81"
+          "true_next" : "tbl_act_22",
+          "false_next" : "node_78"
         },
         {
-          "name" : "node_79",
-          "id" : 29,
+          "name" : "node_76",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 370,
+            "line" : 374,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -6656,15 +6549,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_25",
-          "false_next" : "node_81"
+          "true_next" : "tbl_act_23",
+          "false_next" : "node_78"
         },
         {
-          "name" : "node_81",
-          "id" : 30,
+          "name" : "node_78",
+          "id" : 29,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 368,
+            "line" : 355,
             "column" : 12,
             "source_fragment" : "fmeta.bng.type == BNG_TYPE_DOWNSTREAM"
           },
@@ -6683,11 +6576,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_82"
+          "true_next" : "node_79"
         },
         {
-          "name" : "node_82",
-          "id" : 31,
+          "name" : "node_79",
+          "id" : 30,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 293,