[AETHER-1032] Backport AETHER-538 to fabric.p4

AETHER-538 introduces a new design for the egress pipeline
where the tagged ports are explicitily matched in the
egress_vlan table. Moreover, no match means dropped with
this new design.

Change-Id: If6f8c73aad0effd01f18c87c147535378e8db84c
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 a44e179..9086045 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
@@ -4,15 +4,14 @@
       "name" : "scalars_0",
       "id" : 0,
       "fields" : [
+        ["tmp", 16, false],
         ["tmp_0", 16, false],
-        ["tmp_1", 16, false],
-        ["tmp_2", 4, false],
-        ["tmp", 32, false],
+        ["tmp_1", 4, false],
+        ["tmp_2", 32, false],
         ["tmp_3", 32, false],
         ["bng_ingress_upstream_tmp", 1, false],
         ["bng_ingress_downstream_tmp", 1, false],
         ["bng_ingress_upstream_hasReturned", 1, false],
-        ["egress_next_tmp", 1, false],
         ["fabric_metadata_t._ip_eth_type0", 16, false],
         ["fabric_metadata_t._vlan_id1", 12, false],
         ["fabric_metadata_t._vlan_pri2", 3, false],
@@ -40,7 +39,7 @@
         ["fabric_metadata_t._bng_ds_meter_result24", 32, false],
         ["fabric_metadata_t._bng_s_tag25", 12, false],
         ["fabric_metadata_t._bng_c_tag26", 12, false],
-        ["_padding_0", 2, false]
+        ["_padding_0", 3, false]
       ]
     },
     {
@@ -409,7 +408,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "tmp_0"]
+                  "value" : ["scalars", "tmp"]
                 },
                 {
                   "type" : "lookahead",
@@ -447,7 +446,7 @@
           "transition_key" : [
             {
               "type" : "field",
-              "value" : ["scalars", "tmp_0"]
+              "value" : ["scalars", "tmp"]
             }
           ]
         },
@@ -481,7 +480,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "tmp_1"]
+                  "value" : ["scalars", "tmp_0"]
                 },
                 {
                   "type" : "lookahead",
@@ -507,7 +506,7 @@
           "transition_key" : [
             {
               "type" : "field",
-              "value" : ["scalars", "tmp_1"]
+              "value" : ["scalars", "tmp_0"]
             }
           ]
         },
@@ -682,7 +681,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "tmp_2"]
+                  "value" : ["scalars", "tmp_1"]
                 },
                 {
                   "type" : "lookahead",
@@ -708,7 +707,7 @@
           "transition_key" : [
             {
               "type" : "field",
-              "value" : ["scalars", "tmp_2"]
+              "value" : ["scalars", "tmp_1"]
             }
           ]
         },
@@ -1171,7 +1170,7 @@
       "binding" : "FabricEgress.egress_next.egress_vlan",
       "source_info" : {
         "filename" : "include/control/next.p4",
-        "line" : 313,
+        "line" : 314,
         "column" : 50,
         "source_fragment" : "egress_vlan_counter"
       }
@@ -2778,7 +2777,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "tmp"]
+              "value" : ["scalars", "tmp_2"]
             },
             {
               "type" : "expression",
@@ -2814,7 +2813,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "tmp"]
+              "value" : ["scalars", "tmp_2"]
             }
           ],
           "source_info" : {
@@ -3176,14 +3175,8 @@
       ]
     },
     {
-      "name" : "nop",
-      "id" : 50,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
       "name" : "FabricEgress.bng_egress.downstream.encap_v4",
-      "id" : 51,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3380,7 +3373,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 52,
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3421,7 +3414,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 53,
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3537,106 +3530,8 @@
       ]
     },
     {
-      "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 54,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "add_header",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "vlan_tag"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 289,
-            "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_cfi3"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 290,
-            "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_pri2"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 291,
-            "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "eth_type"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x8100"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 115,
-            "column" : 31,
-            "source_fragment" : "0x8100; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["vlan_tag", "vlan_id"]
-            },
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._vlan_id1"]
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 293,
-            "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
-          }
-        }
-      ]
-    },
-    {
-      "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 55,
+      "name" : "FabricEgress.egress_next.push_outer_vlan",
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3734,7 +3629,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_inner_vlan",
-      "id" : 56,
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3850,8 +3745,106 @@
       ]
     },
     {
+      "name" : "FabricEgress.egress_next.push_vlan",
+      "id" : 55,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "add_header",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "vlan_tag"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 289,
+            "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_cfi3"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 290,
+            "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_pri2"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 291,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "eth_type"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x8100"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 115,
+            "column" : 31,
+            "source_fragment" : "0x8100; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["vlan_tag", "vlan_id"]
+            },
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._vlan_id1"]
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 293,
+            "column" : 8,
+            "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
+          }
+        }
+      ]
+    },
+    {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 57,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3864,7 +3857,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 316,
+            "line" : 322,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
           }
@@ -3872,6 +3865,28 @@
       ]
     },
     {
+      "name" : "FabricEgress.egress_next.drop",
+      "id" : 57,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "mark_to_drop",
+          "parameters" : [
+            {
+              "type" : "header",
+              "value" : "standard_metadata"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 327,
+            "column" : 8,
+            "source_fragment" : "mark_to_drop(standard_metadata)"
+          }
+        }
+      ]
+    },
+    {
       "name" : "act_14",
       "id" : 58,
       "runtime_data" : [],
@@ -3954,7 +3969,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 337,
+            "line" : 349,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -3967,66 +3982,6 @@
       "runtime_data" : [],
       "primitives" : [
         {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "egress_next_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_18",
-      "id" : 62,
-      "runtime_data" : [],
-      "primitives" : [
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "egress_next_tmp"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          ]
-        }
-      ]
-    },
-    {
-      "name" : "act_19",
-      "id" : 63,
-      "runtime_data" : [],
-      "primitives" : [
-        {
           "op" : "remove_header",
           "parameters" : [
             {
@@ -4036,7 +3991,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 353,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
           }
@@ -4044,8 +3999,8 @@
       ]
     },
     {
-      "name" : "act_20",
-      "id" : 64,
+      "name" : "act_18",
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4058,7 +4013,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 370,
+            "line" : 376,
             "column" : 35,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4066,8 +4021,8 @@
       ]
     },
     {
-      "name" : "act_21",
-      "id" : 65,
+      "name" : "act_19",
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4107,7 +4062,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 369,
+            "line" : 375,
             "column" : 12,
             "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1"
           }
@@ -4115,8 +4070,8 @@
       ]
     },
     {
-      "name" : "act_22",
-      "id" : 66,
+      "name" : "act_20",
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4129,7 +4084,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 374,
+            "line" : 380,
             "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           }
@@ -4137,8 +4092,8 @@
       ]
     },
     {
-      "name" : "act_23",
-      "id" : 67,
+      "name" : "act_21",
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4178,7 +4133,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 373,
+            "line" : 379,
             "column" : 16,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
           }
@@ -5816,7 +5771,7 @@
           "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 337,
+            "line" : 349,
             "column" : 12,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
@@ -5845,7 +5800,7 @@
           "id" : 32,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 341,
+            "line" : 353,
             "column" : 36,
             "source_fragment" : "pop_mpls_if_present()"
           },
@@ -5856,14 +5811,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
+          "action_ids" : [51],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "node_60",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5874,7 +5829,7 @@
           "id" : 33,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 343,
+            "line" : 355,
             "column" : 12,
             "source_fragment" : "set_mpls()"
           },
@@ -5885,27 +5840,27 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [52],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "node_60",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "node_60"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_egress_next_push_vlan",
+          "name" : "tbl_egress_next_push_outer_vlan",
           "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 349,
+            "line" : 361,
             "column" : 12,
-            "source_fragment" : "push_vlan()"
+            "source_fragment" : "push_outer_vlan()"
           },
           "key" : [],
           "match_type" : "exact",
@@ -5914,14 +5869,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
-          "actions" : ["FabricEgress.egress_next.push_vlan"],
+          "action_ids" : [53],
+          "actions" : ["FabricEgress.egress_next.push_outer_vlan"],
           "base_default_next" : "tbl_egress_next_push_inner_vlan",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "tbl_egress_next_push_inner_vlan"
+            "FabricEgress.egress_next.push_outer_vlan" : "tbl_egress_next_push_inner_vlan"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5932,7 +5887,7 @@
           "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 350,
+            "line" : 362,
             "column" : 12,
             "source_fragment" : "push_inner_vlan()"
           },
@@ -5943,14 +5898,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56],
+          "action_ids" : [54],
           "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
-          "base_default_next" : "node_70",
+          "base_default_next" : "node_65",
           "next_tables" : {
-            "FabricEgress.egress_next.push_inner_vlan" : "node_70"
+            "FabricEgress.egress_next.push_inner_vlan" : "node_65"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5961,7 +5916,7 @@
           "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 353,
+            "line" : 365,
             "column" : 12,
             "source_fragment" : "hdr.inner_vlan_tag.setInvalid()"
           },
@@ -5972,14 +5927,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
-          "actions" : ["act_19"],
+          "action_ids" : [61],
+          "actions" : ["act_17"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
-            "act_19" : "FabricEgress.egress_next.egress_vlan"
+            "act_17" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5990,7 +5945,7 @@
           "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 320,
+            "line" : 331,
             "column" : 10,
             "source_fragment" : "egress_vlan"
           },
@@ -6014,15 +5969,16 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [57, 50],
-          "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
-          "base_default_next" : null,
+          "action_ids" : [55, 56, 57],
+          "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
+          "base_default_next" : "node_65",
           "next_tables" : {
-            "__HIT__" : "tbl_act_18",
-            "__MISS__" : "tbl_act_19"
+            "FabricEgress.egress_next.push_vlan" : "node_65",
+            "FabricEgress.egress_next.pop_vlan" : "node_65",
+            "FabricEgress.egress_next.drop" : "node_65"
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6031,6 +5987,12 @@
         {
           "name" : "tbl_act_18",
           "id" : 38,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 375,
+            "column" : 25,
+            "source_fragment" : "="
+          },
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6038,14 +6000,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
-          "actions" : ["act_17"],
+          "action_ids" : [63],
+          "actions" : ["act_19"],
           "base_default_next" : "node_67",
           "next_tables" : {
-            "act_17" : "node_67"
+            "act_19" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6054,6 +6016,12 @@
         {
           "name" : "tbl_act_19",
           "id" : 39,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 376,
+            "column" : 35,
+            "source_fragment" : "mark_to_drop(standard_metadata)"
+          },
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6063,9 +6031,9 @@
           "direct_meters" : null,
           "action_ids" : [62],
           "actions" : ["act_18"],
-          "base_default_next" : "node_67",
+          "base_default_next" : "node_73",
           "next_tables" : {
-            "act_18" : "node_67"
+            "act_18" : "node_73"
           },
           "default_entry" : {
             "action_id" : 62,
@@ -6075,41 +6043,12 @@
           }
         },
         {
-          "name" : "tbl_egress_next_push_vlan_0",
+          "name" : "tbl_act_20",
           "id" : 40,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 360,
-            "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" : [55],
-          "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_70",
-          "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_70"
-          },
-          "default_entry" : {
-            "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,
+            "line" : 379,
+            "column" : 29,
             "source_fragment" : "="
           },
           "key" : [],
@@ -6121,9 +6060,9 @@
           "direct_meters" : null,
           "action_ids" : [65],
           "actions" : ["act_21"],
-          "base_default_next" : "node_72",
+          "base_default_next" : "node_71",
           "next_tables" : {
-            "act_21" : "node_72"
+            "act_21" : "node_71"
           },
           "default_entry" : {
             "action_id" : 65,
@@ -6134,11 +6073,11 @@
         },
         {
           "name" : "tbl_act_21",
-          "id" : 42,
+          "id" : 41,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 370,
-            "column" : 35,
+            "line" : 380,
+            "column" : 39,
             "source_fragment" : "mark_to_drop(standard_metadata)"
           },
           "key" : [],
@@ -6150,9 +6089,9 @@
           "direct_meters" : null,
           "action_ids" : [64],
           "actions" : ["act_20"],
-          "base_default_next" : "node_78",
+          "base_default_next" : "node_73",
           "next_tables" : {
-            "act_20" : "node_78"
+            "act_20" : "node_73"
           },
           "default_entry" : {
             "action_id" : 64,
@@ -6162,66 +6101,8 @@
           }
         },
         {
-          "name" : "tbl_act_22",
-          "id" : 43,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 373,
-            "column" : 29,
-            "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_23"],
-          "base_default_next" : "node_76",
-          "next_tables" : {
-            "act_23" : "node_76"
-          },
-          "default_entry" : {
-            "action_id" : 67,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_23",
-          "id" : 44,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 374,
-            "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" : [66],
-          "actions" : ["act_22"],
-          "base_default_next" : "node_78",
-          "next_tables" : {
-            "act_22" : "node_78"
-          },
-          "default_entry" : {
-            "action_id" : 66,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "tbl_bng_egress_downstream_encap_v4",
-          "id" : 45,
+          "id" : 42,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 297,
@@ -6235,14 +6116,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
+          "action_ids" : [50],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.bng_egress.downstream.encap_v4" : null
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6315,7 +6196,7 @@
           "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 335,
+            "line" : 347,
             "column" : 12,
             "source_fragment" : "fabric_metadata.is_multicast == true ..."
           },
@@ -6368,7 +6249,7 @@
           "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 340,
+            "line" : 352,
             "column" : 12,
             "source_fragment" : "fabric_metadata.mpls_label == 0"
           },
@@ -6394,7 +6275,7 @@
           "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 341,
+            "line" : 353,
             "column" : 16,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6417,7 +6298,7 @@
           "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 347,
+            "line" : 359,
             "column" : 12,
             "source_fragment" : "fabric_metadata.push_double_vlan == true"
           },
@@ -6442,71 +6323,15 @@
               }
             }
           },
-          "true_next" : "tbl_egress_next_push_vlan",
+          "true_next" : "tbl_egress_next_push_outer_vlan",
           "false_next" : "tbl_act_17"
         },
         {
-          "name" : "node_67",
+          "name" : "node_65",
           "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 357,
-            "column" : 16,
-            "source_fragment" : "!egress_vlan.apply().hit"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "not",
-              "left" : null,
-              "right" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "d2b",
-                  "left" : null,
-                  "right" : {
-                    "type" : "field",
-                    "value" : ["scalars", "egress_next_tmp"]
-                  }
-                }
-              }
-            }
-          },
-          "true_next" : "node_68",
-          "false_next" : "node_70"
-        },
-        {
-          "name" : "node_68",
-          "id" : 24,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 359,
-            "column" : 20,
-            "source_fragment" : "fabric_metadata.vlan_id != DEFAULT_VLAN_ID"
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "!=",
-              "left" : {
-                "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._vlan_id1"]
-              },
-              "right" : {
-                "type" : "hexstr",
-                "value" : "0x0ffe"
-              }
-            }
-          },
-          "true_next" : "tbl_egress_next_push_vlan_0",
-          "false_next" : "node_70"
-        },
-        {
-          "name" : "node_70",
-          "id" : 25,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 368,
+            "line" : 374,
             "column" : 12,
             "source_fragment" : "hdr.mpls.isValid()"
           },
@@ -6521,15 +6346,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_20",
-          "false_next" : "node_74"
+          "true_next" : "tbl_act_18",
+          "false_next" : "node_69"
         },
         {
-          "name" : "node_72",
-          "id" : 26,
+          "name" : "node_67",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 370,
+            "line" : 376,
             "column" : 16,
             "source_fragment" : "hdr.mpls.ttl == 0"
           },
@@ -6547,15 +6372,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_21",
-          "false_next" : "node_78"
+          "true_next" : "tbl_act_19",
+          "false_next" : "node_73"
         },
         {
-          "name" : "node_74",
-          "id" : 27,
+          "name" : "node_69",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 372,
+            "line" : 378,
             "column" : 15,
             "source_fragment" : "hdr.ipv4.isValid() && fabric_metadata.fwd_type != FWD_BRIDGING"
           },
@@ -6590,15 +6415,15 @@
               }
             }
           },
-          "true_next" : "tbl_act_22",
-          "false_next" : "node_78"
+          "true_next" : "tbl_act_20",
+          "false_next" : "node_73"
         },
         {
-          "name" : "node_76",
-          "id" : 28,
+          "name" : "node_71",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
-            "line" : 374,
+            "line" : 380,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl == 0"
           },
@@ -6616,12 +6441,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_23",
-          "false_next" : "node_78"
+          "true_next" : "tbl_act_21",
+          "false_next" : "node_73"
         },
         {
-          "name" : "node_78",
-          "id" : 29,
+          "name" : "node_73",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 358,
@@ -6643,11 +6468,11 @@
             }
           },
           "false_next" : null,
-          "true_next" : "node_79"
+          "true_next" : "node_74"
         },
         {
-          "name" : "node_79",
-          "id" : 30,
+          "name" : "node_74",
+          "id" : 28,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 296,