Add default VLAN 4094 tag to all untagged traffic in fabric.p4

Also fix nop action in ingres_port_vlan table not invoking direct
counter.

This allows processing LLDP packets before any SR-related flow rule is
pushed

Change-Id: Ic6c33ff0c74e643d9e7c853e029bff924ba6f2ac
(cherry picked from commit 0433a9d002c6a9533ffd55de709aba5a6ca26f04)
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index 285ac8c..af8acf0 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -10,6 +10,7 @@
         ["tmp_2", 32, false],
         ["spgw_ingress_tmp_1", 1, false],
         ["spgw_ingress_tmp_2", 1, false],
+        ["filtering_tmp_0", 1, false],
         ["next_tmp_2", 1, false],
         ["next_tmp_3", 1, false],
         ["next_tmp_4", 1, false],
@@ -24,7 +25,7 @@
         ["fabric_metadata_t.ip_proto", 8, false],
         ["fabric_metadata_t.l4_src_port", 16, false],
         ["fabric_metadata_t.l4_dst_port", 16, false],
-        ["_padding_1", 6, false]
+        ["_padding_1", 5, false]
       ]
     },
     {
@@ -1277,14 +1278,8 @@
       "primitives" : []
     },
     {
-      "name" : "nop",
-      "id" : 9,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
       "name" : "drop_now",
-      "id" : 10,
+      "id" : 9,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1311,7 +1306,7 @@
     },
     {
       "name" : "FabricIngress.spgw_ingress.gtpu_decap",
-      "id" : 11,
+      "id" : 10,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1363,7 +1358,7 @@
     },
     {
       "name" : "FabricIngress.spgw_ingress.set_dl_sess_info",
-      "id" : 12,
+      "id" : 11,
       "runtime_data" : [
         {
           "name" : "teid",
@@ -1440,7 +1435,7 @@
     },
     {
       "name" : "FabricIngress.filtering.drop",
-      "id" : 13,
+      "id" : 12,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -1457,7 +1452,7 @@
     },
     {
       "name" : "FabricIngress.filtering.set_vlan",
-      "id" : 14,
+      "id" : 13,
       "runtime_data" : [
         {
           "name" : "new_vlan_id",
@@ -1488,7 +1483,7 @@
     },
     {
       "name" : "FabricIngress.filtering.push_internal_vlan",
-      "id" : 15,
+      "id" : 14,
       "runtime_data" : [
         {
           "name" : "new_vlan_id",
@@ -1638,6 +1633,12 @@
       ]
     },
     {
+      "name" : "FabricIngress.filtering.nop_ingress_port_vlan",
+      "id" : 15,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
       "name" : "FabricIngress.filtering.set_forwarding_type",
       "id" : 16,
       "runtime_data" : [
@@ -1661,7 +1662,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 94,
+            "line" : 99,
             "column" : 8,
             "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
           }
@@ -2279,7 +2280,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 110,
+            "line" : 113,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2470,7 +2471,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 110,
+            "line" : 113,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2838,7 +2839,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 110,
+            "line" : 113,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3029,7 +3030,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 110,
+            "line" : 113,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3424,7 +3425,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 119,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -3510,7 +3511,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 117,
+            "line" : 120,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -3536,7 +3537,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -3638,19 +3639,23 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["vlan_tag", "ether_type"]
+              "value" : ["scalars", "filtering_tmp_0"]
             },
             {
-              "type" : "hexstr",
-              "value" : "0x0800"
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
             }
-          ],
-          "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 92,
-            "column" : 31,
-            "source_fragment" : "0x0800; ..."
-          }
+          ]
         }
       ]
     },
@@ -3664,7 +3669,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "next_hasReturned_0"]
+              "value" : ["scalars", "filtering_tmp_0"]
             },
             {
               "type" : "expression",
@@ -3694,23 +3699,19 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "next_tmp_4"]
+              "value" : ["scalars", "fabric_metadata_t.fwd_type"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
+              "type" : "hexstr",
+              "value" : "0x07"
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 109,
+            "column" : 31,
+            "source_fragment" : "7; ..."
+          }
         }
       ]
     },
@@ -3724,23 +3725,19 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "next_tmp_4"]
+              "value" : ["vlan_tag", "ether_type"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
+              "type" : "hexstr",
+              "value" : "0x0800"
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/control/../define.p4",
+            "line" : 92,
+            "column" : 31,
+            "source_fragment" : "0x0800; ..."
+          }
         }
       ]
     },
@@ -3754,7 +3751,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "next_tmp_3"]
+              "value" : ["scalars", "next_hasReturned_0"]
             },
             {
               "type" : "expression",
@@ -3765,7 +3762,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "bool",
-                    "value" : true
+                    "value" : false
                   }
                 }
               }
@@ -3784,6 +3781,96 @@
           "parameters" : [
             {
               "type" : "field",
+              "value" : ["scalars", "next_tmp_4"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_20",
+      "id" : 57,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "next_tmp_4"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : false
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_21",
+      "id" : 58,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "next_tmp_3"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "name" : "act_22",
+      "id" : 59,
+      "runtime_data" : [],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
               "value" : ["scalars", "next_tmp_3"]
             },
             {
@@ -3805,8 +3892,8 @@
       ]
     },
     {
-      "name" : "act_20",
-      "id" : 57,
+      "name" : "act_23",
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3835,8 +3922,8 @@
       ]
     },
     {
-      "name" : "act_21",
-      "id" : 58,
+      "name" : "act_24",
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3865,8 +3952,8 @@
       ]
     },
     {
-      "name" : "act_22",
-      "id" : 59,
+      "name" : "act_25",
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3901,8 +3988,8 @@
       ]
     },
     {
-      "name" : "act_23",
-      "id" : 60,
+      "name" : "act_26",
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3950,8 +4037,8 @@
       ]
     },
     {
-      "name" : "act_24",
-      "id" : 61,
+      "name" : "act_27",
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4008,8 +4095,8 @@
       ]
     },
     {
-      "name" : "act_25",
-      "id" : 62,
+      "name" : "act_28",
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4067,13 +4154,13 @@
     },
     {
       "name" : "nop",
-      "id" : 63,
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "drop_now",
-      "id" : 64,
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4100,7 +4187,7 @@
     },
     {
       "name" : "drop_now",
-      "id" : 65,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4127,7 +4214,7 @@
     },
     {
       "name" : "FabricEgress.spgw_egress.gtpu_encap",
-      "id" : 66,
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4334,7 +4421,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 111,
+            "line" : 114,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -4719,7 +4806,7 @@
     },
     {
       "name" : "FabricEgress.pkt_io_egress.pop_vlan",
-      "id" : 67,
+      "id" : 70,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4760,7 +4847,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 68,
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4800,8 +4887,8 @@
       ]
     },
     {
-      "name" : "act_26",
-      "id" : 69,
+      "name" : "act_29",
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5107,14 +5194,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [10],
+          "action_ids" : [9],
           "actions" : ["drop_now"],
           "base_default_next" : "tbl_act_8",
           "next_tables" : {
             "drop_now" : "tbl_act_8"
           },
           "default_entry" : {
-            "action_id" : 10,
+            "action_id" : 9,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5153,14 +5240,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [11],
+          "action_ids" : [10],
           "actions" : ["FabricIngress.spgw_ingress.gtpu_decap"],
           "base_default_next" : "node_27",
           "next_tables" : {
             "FabricIngress.spgw_ingress.gtpu_decap" : "node_27"
           },
           "default_entry" : {
-            "action_id" : 11,
+            "action_id" : 10,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5189,7 +5276,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [12, 0],
+          "action_ids" : [11, 0],
           "actions" : ["FabricIngress.spgw_ingress.set_dl_sess_info", "NoAction"],
           "base_default_next" : null,
           "next_tables" : {
@@ -5323,7 +5410,7 @@
           "id" : 19,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 61,
+            "line" : 66,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
           },
@@ -5353,17 +5440,61 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [15, 14, 8, 13],
-          "actions" : ["FabricIngress.filtering.push_internal_vlan", "FabricIngress.filtering.set_vlan", "nop", "FabricIngress.filtering.drop"],
-          "base_default_next" : "FabricIngress.filtering.fwd_classifier",
+          "action_ids" : [14, 13, 12, 15],
+          "actions" : ["FabricIngress.filtering.push_internal_vlan", "FabricIngress.filtering.set_vlan", "FabricIngress.filtering.drop", "FabricIngress.filtering.nop_ingress_port_vlan"],
+          "base_default_next" : null,
           "next_tables" : {
-            "FabricIngress.filtering.push_internal_vlan" : "FabricIngress.filtering.fwd_classifier",
-            "FabricIngress.filtering.set_vlan" : "FabricIngress.filtering.fwd_classifier",
-            "nop" : "FabricIngress.filtering.fwd_classifier",
-            "FabricIngress.filtering.drop" : "FabricIngress.filtering.fwd_classifier"
+            "__HIT__" : "tbl_act_14",
+            "__MISS__" : "tbl_act_15"
           },
           "default_entry" : {
-            "action_id" : 8,
+            "action_id" : 14,
+            "action_const" : true,
+            "action_data" : ["0xffe"],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_14",
+          "id" : 20,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [51],
+          "actions" : ["act_14"],
+          "base_default_next" : "node_32",
+          "next_tables" : {
+            "act_14" : "node_32"
+          },
+          "default_entry" : {
+            "action_id" : 51,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_15",
+          "id" : 21,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [52],
+          "actions" : ["act_15"],
+          "base_default_next" : "node_32",
+          "next_tables" : {
+            "act_15" : "node_32"
+          },
+          "default_entry" : {
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5371,10 +5502,10 @@
         },
         {
           "name" : "FabricIngress.filtering.fwd_classifier",
-          "id" : 20,
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/filtering.p4",
-            "line" : 98,
+            "line" : 103,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
           },
@@ -5406,9 +5537,9 @@
           "direct_meters" : null,
           "action_ids" : [16],
           "actions" : ["FabricIngress.filtering.set_forwarding_type"],
-          "base_default_next" : "node_31",
+          "base_default_next" : "node_35",
           "next_tables" : {
-            "FabricIngress.filtering.set_forwarding_type" : "node_31"
+            "FabricIngress.filtering.set_forwarding_type" : "node_35"
           },
           "default_entry" : {
             "action_id" : 16,
@@ -5418,8 +5549,31 @@
           }
         },
         {
+          "name" : "tbl_act_16",
+          "id" : 23,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [53],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_35",
+          "next_tables" : {
+            "act_16" : "node_35"
+          },
+          "default_entry" : {
+            "action_id" : 53,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
           "name" : "FabricIngress.forwarding.bridging",
-          "id" : 21,
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 41,
@@ -5462,7 +5616,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.mpls",
-          "id" : 22,
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 65,
@@ -5485,10 +5639,10 @@
           "direct_meters" : null,
           "action_ids" : [18, 3],
           "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "NoAction"],
-          "base_default_next" : "tbl_act_14",
+          "base_default_next" : "tbl_act_17",
           "next_tables" : {
-            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_act_14",
-            "NoAction" : "tbl_act_14"
+            "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_act_17",
+            "NoAction" : "tbl_act_17"
           },
           "default_entry" : {
             "action_id" : 3,
@@ -5498,8 +5652,8 @@
           }
         },
         {
-          "name" : "tbl_act_14",
-          "id" : 23,
+          "name" : "tbl_act_17",
+          "id" : 26,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5507,14 +5661,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
-          "actions" : ["act_14"],
+          "action_ids" : [54],
+          "actions" : ["act_17"],
           "base_default_next" : "FabricIngress.forwarding.acl",
           "next_tables" : {
-            "act_14" : "FabricIngress.forwarding.acl"
+            "act_17" : "FabricIngress.forwarding.acl"
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5522,7 +5676,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.unicast_v4",
-          "id" : 24,
+          "id" : 27,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 87,
@@ -5559,7 +5713,7 @@
         },
         {
           "name" : "FabricIngress.forwarding.acl",
-          "id" : 25,
+          "id" : 28,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 131,
@@ -5648,13 +5802,13 @@
           "direct_meters" : null,
           "action_ids" : [20, 21, 22, 23, 24],
           "actions" : ["FabricIngress.forwarding.set_next_id_acl", "FabricIngress.forwarding.punt_to_cpu", "FabricIngress.forwarding.clone_to_cpu", "FabricIngress.forwarding.drop", "FabricIngress.forwarding.nop_acl"],
-          "base_default_next" : "tbl_act_15",
+          "base_default_next" : "tbl_act_18",
           "next_tables" : {
-            "FabricIngress.forwarding.set_next_id_acl" : "tbl_act_15",
-            "FabricIngress.forwarding.punt_to_cpu" : "tbl_act_15",
-            "FabricIngress.forwarding.clone_to_cpu" : "tbl_act_15",
-            "FabricIngress.forwarding.drop" : "tbl_act_15",
-            "FabricIngress.forwarding.nop_acl" : "tbl_act_15"
+            "FabricIngress.forwarding.set_next_id_acl" : "tbl_act_18",
+            "FabricIngress.forwarding.punt_to_cpu" : "tbl_act_18",
+            "FabricIngress.forwarding.clone_to_cpu" : "tbl_act_18",
+            "FabricIngress.forwarding.drop" : "tbl_act_18",
+            "FabricIngress.forwarding.nop_acl" : "tbl_act_18"
           },
           "default_entry" : {
             "action_id" : 24,
@@ -5664,8 +5818,8 @@
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 26,
+          "name" : "tbl_act_18",
+          "id" : 29,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5673,14 +5827,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
-          "actions" : ["act_15"],
+          "action_ids" : [55],
+          "actions" : ["act_18"],
           "base_default_next" : "FabricIngress.next.vlan_meta",
           "next_tables" : {
-            "act_15" : "FabricIngress.next.vlan_meta"
+            "act_18" : "FabricIngress.next.vlan_meta"
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 55,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5688,7 +5842,7 @@
         },
         {
           "name" : "FabricIngress.next.vlan_meta",
-          "id" : 27,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 65,
@@ -5709,7 +5863,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [25, 9],
+          "action_ids" : [25, 8],
           "actions" : ["FabricIngress.next.set_vlan", "nop"],
           "base_default_next" : "FabricIngress.next.simple",
           "next_tables" : {
@@ -5717,7 +5871,7 @@
             "nop" : "FabricIngress.next.simple"
           },
           "default_entry" : {
-            "action_id" : 9,
+            "action_id" : 8,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -5725,7 +5879,7 @@
         },
         {
           "name" : "FabricIngress.next.simple",
-          "id" : 28,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 122,
@@ -5750,8 +5904,8 @@
           "actions" : ["FabricIngress.next.output_simple", "FabricIngress.next.set_vlan_output", "FabricIngress.next.l3_routing_simple", "FabricIngress.next.mpls_routing_v4_simple", "FabricIngress.next.mpls_routing_v6_simple", "FabricIngress.next.l3_routing_vlan", "NoAction"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_16",
-            "__MISS__" : "tbl_act_17"
+            "__HIT__" : "tbl_act_19",
+            "__MISS__" : "tbl_act_20"
           },
           "default_entry" : {
             "action_id" : 5,
@@ -5761,8 +5915,8 @@
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 29,
+          "name" : "tbl_act_19",
+          "id" : 32,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5770,22 +5924,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_44",
+          "action_ids" : [56],
+          "actions" : ["act_19"],
+          "base_default_next" : "node_48",
           "next_tables" : {
-            "act_16" : "node_44"
+            "act_19" : "node_48"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 30,
+          "name" : "tbl_act_20",
+          "id" : 33,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5793,14 +5947,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_44",
+          "action_ids" : [57],
+          "actions" : ["act_20"],
+          "base_default_next" : "node_48",
           "next_tables" : {
-            "act_17" : "node_44"
+            "act_20" : "node_48"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5808,7 +5962,7 @@
         },
         {
           "name" : "FabricIngress.next.hashed",
-          "id" : 31,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 175,
@@ -5834,13 +5988,13 @@
           "actions" : ["FabricIngress.next.l3_routing_hashed", "FabricIngress.next.mpls_routing_v4_hashed", "FabricIngress.next.mpls_routing_v6_hashed", "NoAction"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_18",
-            "__MISS__" : "tbl_act_19"
+            "__HIT__" : "tbl_act_21",
+            "__MISS__" : "tbl_act_22"
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 32,
+          "name" : "tbl_act_21",
+          "id" : 35,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5848,22 +6002,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [55],
-          "actions" : ["act_18"],
-          "base_default_next" : "node_48",
+          "action_ids" : [58],
+          "actions" : ["act_21"],
+          "base_default_next" : "node_52",
           "next_tables" : {
-            "act_18" : "node_48"
+            "act_21" : "node_52"
           },
           "default_entry" : {
-            "action_id" : 55,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_19",
-          "id" : 33,
+          "name" : "tbl_act_22",
+          "id" : 36,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -5871,14 +6025,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [56],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_48",
+          "action_ids" : [59],
+          "actions" : ["act_22"],
+          "base_default_next" : "node_52",
           "next_tables" : {
-            "act_19" : "node_48"
+            "act_22" : "node_52"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -5886,7 +6040,7 @@
         },
         {
           "name" : "FabricIngress.next.multicast",
-          "id" : 34,
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 207,
@@ -5911,8 +6065,8 @@
           "actions" : ["FabricIngress.next.set_mcast_group", "NoAction"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_20",
-            "__MISS__" : "tbl_act_21"
+            "__HIT__" : "tbl_act_23",
+            "__MISS__" : "tbl_act_24"
           },
           "default_entry" : {
             "action_id" : 7,
@@ -5922,75 +6076,6 @@
           }
         },
         {
-          "name" : "tbl_act_20",
-          "id" : 35,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [57],
-          "actions" : ["act_20"],
-          "base_default_next" : "node_52",
-          "next_tables" : {
-            "act_20" : "node_52"
-          },
-          "default_entry" : {
-            "action_id" : 57,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_21",
-          "id" : 36,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [58],
-          "actions" : ["act_21"],
-          "base_default_next" : "node_52",
-          "next_tables" : {
-            "act_21" : "node_52"
-          },
-          "default_entry" : {
-            "action_id" : 58,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_22",
-          "id" : 37,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [59],
-          "actions" : ["act_22"],
-          "base_default_next" : "node_54",
-          "next_tables" : {
-            "act_22" : "node_54"
-          },
-          "default_entry" : {
-            "action_id" : 59,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "tbl_act_23",
           "id" : 38,
           "key" : [],
@@ -6002,9 +6087,9 @@
           "direct_meters" : null,
           "action_ids" : [60],
           "actions" : ["act_23"],
-          "base_default_next" : "node_58",
+          "base_default_next" : "node_56",
           "next_tables" : {
-            "act_23" : "node_58"
+            "act_23" : "node_56"
           },
           "default_entry" : {
             "action_id" : 60,
@@ -6025,9 +6110,9 @@
           "direct_meters" : null,
           "action_ids" : [61],
           "actions" : ["act_24"],
-          "base_default_next" : "node_60",
+          "base_default_next" : "node_56",
           "next_tables" : {
-            "act_24" : "node_60"
+            "act_24" : "node_56"
           },
           "default_entry" : {
             "action_id" : 61,
@@ -6048,9 +6133,9 @@
           "direct_meters" : null,
           "action_ids" : [62],
           "actions" : ["act_25"],
-          "base_default_next" : null,
+          "base_default_next" : "node_58",
           "next_tables" : {
-            "act_25" : null
+            "act_25" : "node_58"
           },
           "default_entry" : {
             "action_id" : 62,
@@ -6058,6 +6143,75 @@
             "action_data" : [],
             "action_entry_const" : true
           }
+        },
+        {
+          "name" : "tbl_act_26",
+          "id" : 41,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [63],
+          "actions" : ["act_26"],
+          "base_default_next" : "node_62",
+          "next_tables" : {
+            "act_26" : "node_62"
+          },
+          "default_entry" : {
+            "action_id" : 63,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_27",
+          "id" : 42,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [64],
+          "actions" : ["act_27"],
+          "base_default_next" : "node_64",
+          "next_tables" : {
+            "act_27" : "node_64"
+          },
+          "default_entry" : {
+            "action_id" : 64,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_28",
+          "id" : 43,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [65],
+          "actions" : ["act_28"],
+          "base_default_next" : null,
+          "next_tables" : {
+            "act_28" : null
+          },
+          "default_entry" : {
+            "action_id" : 65,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
         }
       ],
       "action_profiles" : [
@@ -6288,8 +6442,25 @@
           "false_next" : "FabricIngress.filtering.ingress_port_vlan"
         },
         {
-          "name" : "node_31",
+          "name" : "node_32",
           "id" : 8,
+          "expression" : {
+            "type" : "expression",
+            "value" : {
+              "op" : "d2b",
+              "left" : null,
+              "right" : {
+                "type" : "field",
+                "value" : ["scalars", "filtering_tmp_0"]
+              }
+            }
+          },
+          "true_next" : "FabricIngress.filtering.fwd_classifier",
+          "false_next" : "tbl_act_16"
+        },
+        {
+          "name" : "node_35",
+          "id" : 9,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 235,
@@ -6311,11 +6482,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.bridging",
-          "false_next" : "node_33"
+          "false_next" : "node_37"
         },
         {
-          "name" : "node_33",
-          "id" : 9,
+          "name" : "node_37",
+          "id" : 10,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 236,
@@ -6337,11 +6508,11 @@
             }
           },
           "true_next" : "FabricIngress.forwarding.mpls",
-          "false_next" : "node_36"
+          "false_next" : "node_40"
         },
         {
-          "name" : "node_36",
-          "id" : 10,
+          "name" : "node_40",
+          "id" : 11,
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 250,
@@ -6366,8 +6537,8 @@
           "false_next" : "FabricIngress.forwarding.acl"
         },
         {
-          "name" : "node_44",
-          "id" : 11,
+          "name" : "node_48",
+          "id" : 12,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 219,
@@ -6393,11 +6564,11 @@
             }
           },
           "true_next" : "FabricIngress.next.hashed",
-          "false_next" : "node_54"
+          "false_next" : "node_58"
         },
         {
-          "name" : "node_48",
-          "id" : 12,
+          "name" : "node_52",
+          "id" : 13,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 220,
@@ -6423,11 +6594,11 @@
             }
           },
           "true_next" : "FabricIngress.next.multicast",
-          "false_next" : "node_54"
+          "false_next" : "node_58"
         },
         {
-          "name" : "node_52",
-          "id" : 13,
+          "name" : "node_56",
+          "id" : 14,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 221,
@@ -6452,12 +6623,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_22",
-          "false_next" : "node_54"
+          "true_next" : "tbl_act_25",
+          "false_next" : "node_58"
         },
         {
-          "name" : "node_54",
-          "id" : 14,
+          "name" : "node_58",
+          "id" : 15,
           "expression" : {
             "type" : "expression",
             "value" : {
@@ -6476,12 +6647,12 @@
               }
             }
           },
-          "true_next" : "node_55",
-          "false_next" : "node_58"
+          "true_next" : "node_59",
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_55",
-          "id" : 15,
+          "name" : "node_59",
+          "id" : 16,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 228,
@@ -6506,12 +6677,12 @@
               }
             }
           },
-          "true_next" : "node_56",
-          "false_next" : "node_58"
+          "true_next" : "node_60",
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_56",
-          "id" : 16,
+          "name" : "node_60",
+          "id" : 17,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 229,
@@ -6529,12 +6700,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_23",
-          "false_next" : "node_58"
+          "true_next" : "tbl_act_26",
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_58",
-          "id" : 17,
+          "name" : "node_62",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 27,
@@ -6555,12 +6726,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_24",
-          "false_next" : "node_60"
+          "true_next" : "tbl_act_27",
+          "false_next" : "node_64"
         },
         {
-          "name" : "node_60",
-          "id" : 18,
+          "name" : "node_64",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/port_counter.p4",
             "line" : 30,
@@ -6582,7 +6753,7 @@
             }
           },
           "false_next" : null,
-          "true_next" : "tbl_act_25"
+          "true_next" : "tbl_act_28"
         }
       ]
     },
@@ -6595,11 +6766,11 @@
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
-      "init_table" : "node_64",
+      "init_table" : "node_68",
       "tables" : [
         {
           "name" : "tbl_drop_now_0",
-          "id" : 41,
+          "id" : 44,
           "key" : [],
           "match_type" : "exact",
           "type" : "simple",
@@ -6607,14 +6778,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
+          "action_ids" : [67],
           "actions" : ["drop_now"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "drop_now" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 67,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6622,7 +6793,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 42,
+          "id" : 45,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 258,
@@ -6649,15 +6820,15 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [68, 63],
+          "action_ids" : [71, 66],
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
-          "base_default_next" : "node_67",
+          "base_default_next" : "node_71",
           "next_tables" : {
-            "FabricEgress.egress_next.pop_vlan" : "node_67",
-            "nop" : "node_67"
+            "FabricEgress.egress_next.pop_vlan" : "node_71",
+            "nop" : "node_71"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 66,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -6665,75 +6836,6 @@
         },
         {
           "name" : "tbl_pkt_io_egress_pop_vlan",
-          "id" : 43,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [67],
-          "actions" : ["FabricEgress.pkt_io_egress.pop_vlan"],
-          "base_default_next" : "node_70",
-          "next_tables" : {
-            "FabricEgress.pkt_io_egress.pop_vlan" : "node_70"
-          },
-          "default_entry" : {
-            "action_id" : 67,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_drop_now_1",
-          "id" : 44,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [65],
-          "actions" : ["drop_now"],
-          "base_default_next" : "tbl_act_26",
-          "next_tables" : {
-            "drop_now" : "tbl_act_26"
-          },
-          "default_entry" : {
-            "action_id" : 65,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_act_26",
-          "id" : 45,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [69],
-          "actions" : ["act_26"],
-          "base_default_next" : "node_73",
-          "next_tables" : {
-            "act_26" : "node_73"
-          },
-          "default_entry" : {
-            "action_id" : 69,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
-          "name" : "tbl_spgw_egress_gtpu_encap",
           "id" : 46,
           "key" : [],
           "match_type" : "exact",
@@ -6742,14 +6844,83 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [66],
+          "action_ids" : [70],
+          "actions" : ["FabricEgress.pkt_io_egress.pop_vlan"],
+          "base_default_next" : "node_74",
+          "next_tables" : {
+            "FabricEgress.pkt_io_egress.pop_vlan" : "node_74"
+          },
+          "default_entry" : {
+            "action_id" : 70,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_drop_now_1",
+          "id" : 47,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [68],
+          "actions" : ["drop_now"],
+          "base_default_next" : "tbl_act_29",
+          "next_tables" : {
+            "drop_now" : "tbl_act_29"
+          },
+          "default_entry" : {
+            "action_id" : 68,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_act_29",
+          "id" : 48,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [72],
+          "actions" : ["act_29"],
+          "base_default_next" : "node_77",
+          "next_tables" : {
+            "act_29" : "node_77"
+          },
+          "default_entry" : {
+            "action_id" : 72,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
+          "name" : "tbl_spgw_egress_gtpu_encap",
+          "id" : 49,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [69],
           "actions" : ["FabricEgress.spgw_egress.gtpu_encap"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.spgw_egress.gtpu_encap" : null
           },
           "default_entry" : {
-            "action_id" : 66,
+            "action_id" : 69,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6759,8 +6930,8 @@
       "action_profiles" : [],
       "conditionals" : [
         {
-          "name" : "node_64",
-          "id" : 19,
+          "name" : "node_68",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 272,
@@ -6812,8 +6983,8 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_67",
-          "id" : 20,
+          "name" : "node_71",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 42,
@@ -6834,12 +7005,12 @@
               }
             }
           },
-          "true_next" : "node_68",
-          "false_next" : "node_73"
+          "true_next" : "node_72",
+          "false_next" : "node_77"
         },
         {
-          "name" : "node_68",
-          "id" : 21,
+          "name" : "node_72",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 43,
@@ -6885,11 +7056,11 @@
             }
           },
           "true_next" : "tbl_pkt_io_egress_pop_vlan",
-          "false_next" : "node_70"
+          "false_next" : "node_74"
         },
         {
-          "name" : "node_70",
-          "id" : 22,
+          "name" : "node_74",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 46,
@@ -6945,11 +7116,11 @@
             }
           },
           "true_next" : "tbl_drop_now_1",
-          "false_next" : "tbl_act_26"
+          "false_next" : "tbl_act_29"
         },
         {
-          "name" : "node_73",
-          "id" : 23,
+          "name" : "node_77",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 221,