Added support for clone session on fabric.p4

Now on ACL table in fabric.p4 you can clone a packet to the CPU using the clone session.

Change-Id: Ic21f948cffe553e32e7b2fe1f7af49b6a387fffb
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
index 3fff434..d141c9f 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
@@ -24,14 +24,13 @@
         ["fabric_metadata_t._next_id10", 32, false],
         ["fabric_metadata_t._is_multicast11", 1, false],
         ["fabric_metadata_t._is_controller_packet_out12", 1, false],
-        ["fabric_metadata_t._clone_to_cpu13", 1, false],
-        ["fabric_metadata_t._ip_proto14", 8, false],
-        ["fabric_metadata_t._l4_sport15", 16, false],
-        ["fabric_metadata_t._l4_dport16", 16, false],
-        ["fabric_metadata_t._bng_type17", 2, false],
-        ["fabric_metadata_t._bng_line_id18", 32, false],
-        ["fabric_metadata_t._bng_ds_meter_result19", 32, false],
-        ["_padding_0", 2, false]
+        ["fabric_metadata_t._ip_proto13", 8, false],
+        ["fabric_metadata_t._l4_sport14", 16, false],
+        ["fabric_metadata_t._l4_dport15", 16, false],
+        ["fabric_metadata_t._bng_type16", 2, false],
+        ["fabric_metadata_t._bng_line_id17", 32, false],
+        ["fabric_metadata_t._bng_ds_meter_result18", 32, false],
+        ["_padding_0", 3, false]
       ]
     },
     {
@@ -276,7 +275,108 @@
   "header_union_types" : [],
   "header_unions" : [],
   "header_union_stacks" : [],
-  "field_lists" : [],
+  "field_lists" : [
+    {
+      "id" : 1,
+      "name" : "fl",
+      "source_info" : {
+        "filename" : "fabric.p4",
+        "line" : 77,
+        "column" : 40,
+        "source_fragment" : "standard_metadata"
+      },
+      "elements" : [
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "ingress_port"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "egress_spec"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "egress_port"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "clone_spec"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "instance_type"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "drop"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "recirculate_port"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "packet_length"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "enq_timestamp"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "enq_qdepth"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "deq_timedelta"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "deq_qdepth"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "ingress_global_timestamp"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "egress_global_timestamp"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "lf_field_list"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "mcast_grp"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "resubmit_flag"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "egress_rid"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "recirculate_flag"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "checksum_error"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "parser_error"]
+        },
+        {
+          "type" : "field",
+          "value" : ["standard_metadata", "priority"]
+        }
+      ]
+    }
+  ],
   "errors" : [
     ["NoError", 1],
     ["PacketTooShort", 2],
@@ -634,7 +734,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._ip_proto14"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
                 },
                 {
                   "type" : "field",
@@ -706,7 +806,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
                 },
                 {
                   "type" : "field",
@@ -719,7 +819,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
                 },
                 {
                   "type" : "field",
@@ -755,7 +855,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
                 },
                 {
                   "type" : "field",
@@ -768,7 +868,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
                 },
                 {
                   "type" : "field",
@@ -838,7 +938,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 176,
+        "line" : 177,
         "column" : 33,
         "source_fragment" : "m_besteff"
       },
@@ -852,7 +952,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 177,
+        "line" : 178,
         "column" : 33,
         "source_fragment" : "m_prio"
       },
@@ -904,7 +1004,7 @@
       "id" : 3,
       "source_info" : {
         "filename" : "include/bng.p4",
-        "line" : 174,
+        "line" : 175,
         "column" : 49,
         "source_fragment" : "c_line_rx"
       },
@@ -1282,7 +1382,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             },
             {
               "type" : "runtime_data",
@@ -1389,7 +1489,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             }
           ],
           "source_info" : {
@@ -1411,7 +1511,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
             },
             {
               "type" : "hexstr",
@@ -1507,7 +1607,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             }
           ],
           "source_info" : {
@@ -1538,7 +1638,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 110,
+            "line" : 112,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -1557,7 +1657,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 110,
+            "line" : 112,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -1616,7 +1716,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             }
           ],
           "source_info" : {
@@ -1647,7 +1747,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
             },
             {
               "type" : "hexstr",
@@ -1666,7 +1766,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             },
             {
               "type" : "runtime_data",
@@ -1675,7 +1775,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 186,
+            "line" : 187,
             "column" : 26,
             "source_fragment" : "= line_id; ..."
           }
@@ -1694,7 +1794,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 187,
+            "line" : 188,
             "column" : 8,
             "source_fragment" : "c_line_rx.count(line_id)"
           }
@@ -1713,7 +1813,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 192,
+            "line" : 193,
             "column" : 22,
             "source_fragment" : "= next_id; ..."
           }
@@ -1742,7 +1842,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 193,
+            "line" : 194,
             "column" : 30,
             "source_fragment" : "= true; ..."
           }
@@ -1764,7 +1864,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
             },
             {
               "type" : "hexstr",
@@ -1783,7 +1883,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             },
             {
               "type" : "runtime_data",
@@ -1792,7 +1892,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 186,
+            "line" : 187,
             "column" : 26,
             "source_fragment" : "= line_id; ..."
           }
@@ -1811,7 +1911,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 187,
+            "line" : 188,
             "column" : 8,
             "source_fragment" : "c_line_rx.count(line_id)"
           }
@@ -1840,7 +1940,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 198,
+            "line" : 199,
             "column" : 30,
             "source_fragment" : "= true; ..."
           }
@@ -1869,7 +1969,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 199,
+            "line" : 200,
             "column" : 24,
             "source_fragment" : "= true; ..."
           }
@@ -1884,7 +1984,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 200,
+            "line" : 201,
             "column" : 8,
             "source_fragment" : "mark_to_drop(smeta)"
           }
@@ -1905,11 +2005,11 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result19"]
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result18"]
             }
           ],
           "source_info" : {
@@ -1935,11 +2035,11 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result19"]
+              "value" : ["scalars", "fabric_metadata_t._bng_ds_meter_result18"]
             }
           ],
           "source_info" : {
@@ -2289,37 +2389,32 @@
       ]
     },
     {
-      "name" : "FabricIngress.acl.clone_to_cpu",
+      "name" : "FabricIngress.acl.set_clone_session_id",
       "id" : 28,
-      "runtime_data" : [],
+      "runtime_data" : [
+        {
+          "name" : "clone_id",
+          "bitwidth" : 32
+        }
+      ],
       "primitives" : [
         {
-          "op" : "assign",
+          "op" : "clone_ingress_pkt_to_egress",
           "parameters" : [
             {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._clone_to_cpu13"]
+              "type" : "runtime_data",
+              "value" : 0
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
+              "type" : "hexstr",
+              "value" : "0x1"
             }
           ],
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 46,
-            "column" : 37,
-            "source_fragment" : "= true; ..."
+            "column" : 8,
+            "source_fragment" : "clone3(CloneType.I2E, clone_id, standard_metadata)"
           }
         }
       ]
@@ -2941,7 +3036,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_type17"]
+              "value" : ["scalars", "fabric_metadata_t._bng_type16"]
             },
             {
               "type" : "hexstr",
@@ -3069,7 +3164,7 @@
           ],
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 155,
+            "line" : 156,
             "column" : 12,
             "source_fragment" : "return"
           }
@@ -3292,7 +3387,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 107,
+            "line" : 109,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3345,7 +3440,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 116,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -3450,7 +3545,7 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._bng_line_id18"]
+              "value" : ["scalars", "fabric_metadata_t._bng_line_id17"]
             }
           ],
           "source_info" : {
@@ -3516,7 +3611,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 118,
             "column" : 35,
             "source_fragment" : "0x0021; ..."
           }
@@ -3674,7 +3769,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 108,
+            "line" : 110,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3791,7 +3886,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 107,
+            "line" : 109,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3862,28 +3957,6 @@
       "runtime_data" : [],
       "primitives" : [
         {
-          "op" : "mark_to_drop",
-          "parameters" : [
-            {
-              "type" : "header",
-              "value" : "standard_metadata"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/packetio.p4",
-            "line" : 47,
-            "column" : 16,
-            "source_fragment" : "mark_to_drop(standard_metadata)"
-          }
-        }
-      ]
-    },
-    {
-      "name" : "act_12",
-      "id" : 58,
-      "runtime_data" : [],
-      "primitives" : [
-        {
           "op" : "add_header",
           "parameters" : [
             {
@@ -3893,7 +3966,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/packetio.p4",
-            "line" : 49,
+            "line" : 44,
             "column" : 12,
             "source_fragment" : "hdr.packet_in.setValid()"
           }
@@ -3912,7 +3985,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/packetio.p4",
-            "line" : 50,
+            "line" : 45,
             "column" : 12,
             "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
           }
@@ -3922,7 +3995,7 @@
           "parameters" : [],
           "source_info" : {
             "filename" : "include/control/packetio.p4",
-            "line" : 52,
+            "line" : 47,
             "column" : 12,
             "source_fragment" : "exit"
           }
@@ -3930,8 +4003,8 @@
       ]
     },
     {
-      "name" : "act_13",
-      "id" : 59,
+      "name" : "act_12",
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3952,8 +4025,8 @@
       ]
     },
     {
-      "name" : "act_14",
-      "id" : 60,
+      "name" : "act_13",
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -3982,8 +4055,8 @@
       ]
     },
     {
-      "name" : "act_15",
-      "id" : 61,
+      "name" : "act_14",
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4012,8 +4085,8 @@
       ]
     },
     {
-      "name" : "act_16",
-      "id" : 62,
+      "name" : "act_15",
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4034,8 +4107,8 @@
       ]
     },
     {
-      "name" : "act_17",
-      "id" : 63,
+      "name" : "act_16",
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4083,8 +4156,8 @@
       ]
     },
     {
-      "name" : "act_18",
-      "id" : 64,
+      "name" : "act_17",
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4105,8 +4178,8 @@
       ]
     },
     {
-      "name" : "act_19",
-      "id" : 65,
+      "name" : "act_18",
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -4517,7 +4590,7 @@
           "id" : 10,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 155,
+            "line" : 156,
             "column" : 12,
             "source_fragment" : "return"
           },
@@ -4554,7 +4627,7 @@
             {
               "match_type" : "exact",
               "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id18"],
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id17"],
               "mask" : null
             },
             {
@@ -4595,7 +4668,7 @@
           "id" : 12,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 203,
+            "line" : 204,
             "column" : 10,
             "source_fragment" : "t_line_map_v4"
           },
@@ -4686,7 +4759,7 @@
             {
               "match_type" : "ternary",
               "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id18"],
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id17"],
               "mask" : null
             },
             {
@@ -4865,19 +4938,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t._ip_proto14"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto13"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t._l4_sport15"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport14"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t._l4_dport16"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport15"],
               "mask" : null
             },
             {
@@ -4936,12 +5009,12 @@
           "support_timeout" : false,
           "direct_meters" : null,
           "action_ids" : [26, 27, 28, 29, 30],
-          "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.clone_to_cpu", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
+          "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.set_clone_session_id", "FabricIngress.acl.drop", "FabricIngress.acl.nop_acl"],
           "base_default_next" : "node_35",
           "next_tables" : {
             "FabricIngress.acl.set_next_id_acl" : "node_35",
             "FabricIngress.acl.punt_to_cpu" : "node_35",
-            "FabricIngress.acl.clone_to_cpu" : "node_35",
+            "FabricIngress.acl.set_clone_session_id" : "node_35",
             "FabricIngress.acl.drop" : "node_35",
             "FabricIngress.acl.nop_acl" : "node_35"
           },
@@ -5187,15 +5260,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._ip_proto14"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto13"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport14"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport15"]
               }
             ]
           }
@@ -5347,7 +5420,7 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/bng.p4",
-            "line" : 158,
+            "line" : 159,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -5648,9 +5721,9 @@
           "id" : 27,
           "source_info" : {
             "filename" : "include/control/packetio.p4",
-            "line" : 47,
-            "column" : 16,
-            "source_fragment" : "mark_to_drop(standard_metadata)"
+            "line" : 44,
+            "column" : 12,
+            "source_fragment" : "hdr.packet_in.setValid(); ..."
           },
           "key" : [],
           "match_type" : "exact",
@@ -5661,9 +5734,9 @@
           "direct_meters" : null,
           "action_ids" : [57],
           "actions" : ["act_11"],
-          "base_default_next" : "tbl_act_12",
+          "base_default_next" : "node_50",
           "next_tables" : {
-            "act_11" : "tbl_act_12"
+            "act_11" : "node_50"
           },
           "default_entry" : {
             "action_id" : 57,
@@ -5676,10 +5749,10 @@
           "name" : "tbl_act_12",
           "id" : 28,
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
-            "line" : 49,
+            "filename" : "include/control/next.p4",
+            "line" : 308,
             "column" : 12,
-            "source_fragment" : "hdr.packet_in.setValid(); ..."
+            "source_fragment" : "mark_to_drop(standard_metadata)"
           },
           "key" : [],
           "match_type" : "exact",
@@ -5702,37 +5775,8 @@
           }
         },
         {
-          "name" : "tbl_act_13",
-          "id" : 29,
-          "source_info" : {
-            "filename" : "include/control/next.p4",
-            "line" : 308,
-            "column" : 12,
-            "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" : [59],
-          "actions" : ["act_13"],
-          "base_default_next" : "node_54",
-          "next_tables" : {
-            "act_13" : "node_54"
-          },
-          "default_entry" : {
-            "action_id" : 59,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "tbl_egress_next_pop_mpls_if_present",
-          "id" : 30,
+          "id" : 29,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 312,
@@ -5761,7 +5805,7 @@
         },
         {
           "name" : "tbl_egress_next_set_mpls",
-          "id" : 31,
+          "id" : 30,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 314,
@@ -5790,7 +5834,7 @@
         },
         {
           "name" : "FabricEgress.egress_next.egress_vlan",
-          "id" : 32,
+          "id" : 31,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 291,
@@ -5821,8 +5865,8 @@
           "actions" : ["FabricEgress.egress_next.pop_vlan", "nop"],
           "base_default_next" : null,
           "next_tables" : {
-            "__HIT__" : "tbl_act_14",
-            "__MISS__" : "tbl_act_15"
+            "__HIT__" : "tbl_act_13",
+            "__MISS__" : "tbl_act_14"
           },
           "default_entry" : {
             "action_id" : 50,
@@ -5832,6 +5876,29 @@
           }
         },
         {
+          "name" : "tbl_act_13",
+          "id" : 32,
+          "key" : [],
+          "match_type" : "exact",
+          "type" : "simple",
+          "max_size" : 1024,
+          "with_counters" : false,
+          "support_timeout" : false,
+          "direct_meters" : null,
+          "action_ids" : [59],
+          "actions" : ["act_13"],
+          "base_default_next" : "node_59",
+          "next_tables" : {
+            "act_13" : "node_59"
+          },
+          "default_entry" : {
+            "action_id" : 59,
+            "action_const" : true,
+            "action_data" : [],
+            "action_entry_const" : true
+          }
+        },
+        {
           "name" : "tbl_act_14",
           "id" : 33,
           "key" : [],
@@ -5843,9 +5910,9 @@
           "direct_meters" : null,
           "action_ids" : [60],
           "actions" : ["act_14"],
-          "base_default_next" : "node_61",
+          "base_default_next" : "node_59",
           "next_tables" : {
-            "act_14" : "node_61"
+            "act_14" : "node_59"
           },
           "default_entry" : {
             "action_id" : 60,
@@ -5855,31 +5922,8 @@
           }
         },
         {
-          "name" : "tbl_act_15",
-          "id" : 34,
-          "key" : [],
-          "match_type" : "exact",
-          "type" : "simple",
-          "max_size" : 1024,
-          "with_counters" : false,
-          "support_timeout" : false,
-          "direct_meters" : null,
-          "action_ids" : [61],
-          "actions" : ["act_15"],
-          "base_default_next" : "node_61",
-          "next_tables" : {
-            "act_15" : "node_61"
-          },
-          "default_entry" : {
-            "action_id" : 61,
-            "action_const" : true,
-            "action_data" : [],
-            "action_entry_const" : true
-          }
-        },
-        {
           "name" : "tbl_egress_next_push_vlan",
-          "id" : 35,
+          "id" : 34,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 320,
@@ -5895,9 +5939,9 @@
           "direct_meters" : null,
           "action_ids" : [54],
           "actions" : ["FabricEgress.egress_next.push_vlan"],
-          "base_default_next" : "node_64",
+          "base_default_next" : "node_62",
           "next_tables" : {
-            "FabricEgress.egress_next.push_vlan" : "node_64"
+            "FabricEgress.egress_next.push_vlan" : "node_62"
           },
           "default_entry" : {
             "action_id" : 54,
@@ -5907,8 +5951,8 @@
           }
         },
         {
-          "name" : "tbl_act_16",
-          "id" : 36,
+          "name" : "tbl_act_15",
+          "id" : 35,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 326,
@@ -5922,22 +5966,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
-          "actions" : ["act_17"],
-          "base_default_next" : "node_66",
+          "action_ids" : [62],
+          "actions" : ["act_16"],
+          "base_default_next" : "node_64",
           "next_tables" : {
-            "act_17" : "node_66"
+            "act_16" : "node_64"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_17",
-          "id" : 37,
+          "name" : "tbl_act_16",
+          "id" : 36,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 327,
@@ -5951,22 +5995,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
-          "actions" : ["act_16"],
-          "base_default_next" : "node_72",
+          "action_ids" : [61],
+          "actions" : ["act_15"],
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "act_16" : "node_72"
+            "act_15" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_18",
-          "id" : 38,
+          "name" : "tbl_act_17",
+          "id" : 37,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 330,
@@ -5980,22 +6024,22 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
-          "actions" : ["act_19"],
-          "base_default_next" : "node_70",
+          "action_ids" : [64],
+          "actions" : ["act_18"],
+          "base_default_next" : "node_68",
           "next_tables" : {
-            "act_19" : "node_70"
+            "act_18" : "node_68"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 64,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
           }
         },
         {
-          "name" : "tbl_act_19",
-          "id" : 39,
+          "name" : "tbl_act_18",
+          "id" : 38,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -6009,14 +6053,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
-          "actions" : ["act_18"],
-          "base_default_next" : "node_72",
+          "action_ids" : [63],
+          "actions" : ["act_17"],
+          "base_default_next" : "node_70",
           "next_tables" : {
-            "act_18" : "node_72"
+            "act_17" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6024,7 +6068,7 @@
         },
         {
           "name" : "FabricEgress.bng_egress.downstream.t_session_encap",
-          "id" : 40,
+          "id" : 39,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 337,
@@ -6035,7 +6079,7 @@
             {
               "match_type" : "exact",
               "name" : "line_id",
-              "target" : ["scalars", "fabric_metadata_t._bng_line_id18"],
+              "target" : ["scalars", "fabric_metadata_t._bng_line_id17"],
               "mask" : null
             }
           ],
@@ -6118,72 +6162,12 @@
               }
             }
           },
-          "true_next" : "node_49",
-          "false_next" : "node_52"
-        },
-        {
-          "name" : "node_49",
-          "id" : 18,
-          "source_info" : {
-            "filename" : "include/control/packetio.p4",
-            "line" : 44,
-            "column" : 16,
-            "source_fragment" : "fabric_metadata.is_multicast == true && ..."
-          },
-          "expression" : {
-            "type" : "expression",
-            "value" : {
-              "op" : "and",
-              "left" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "==",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "d2b",
-                      "left" : null,
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              },
-              "right" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "==",
-                  "left" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "d2b",
-                      "left" : null,
-                      "right" : {
-                        "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t._clone_to_cpu13"]
-                      }
-                    }
-                  },
-                  "right" : {
-                    "type" : "bool",
-                    "value" : false
-                  }
-                }
-              }
-            }
-          },
           "true_next" : "tbl_act_11",
-          "false_next" : "tbl_act_12"
+          "false_next" : "node_50"
         },
         {
-          "name" : "node_52",
-          "id" : 19,
+          "name" : "node_50",
+          "id" : 18,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 306,
@@ -6231,12 +6215,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_13",
-          "false_next" : "node_54"
+          "true_next" : "tbl_act_12",
+          "false_next" : "node_52"
         },
         {
-          "name" : "node_54",
-          "id" : 20,
+          "name" : "node_52",
+          "id" : 19,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 311,
@@ -6257,12 +6241,12 @@
               }
             }
           },
-          "true_next" : "node_55",
+          "true_next" : "node_53",
           "false_next" : "tbl_egress_next_set_mpls"
         },
         {
-          "name" : "node_55",
-          "id" : 21,
+          "name" : "node_53",
+          "id" : 20,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 312,
@@ -6284,8 +6268,8 @@
           "false_next" : "FabricEgress.egress_next.egress_vlan"
         },
         {
-          "name" : "node_61",
-          "id" : 22,
+          "name" : "node_59",
+          "id" : 21,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 317,
@@ -6310,12 +6294,12 @@
               }
             }
           },
-          "true_next" : "node_62",
-          "false_next" : "node_64"
+          "true_next" : "node_60",
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_62",
-          "id" : 23,
+          "name" : "node_60",
+          "id" : 22,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 319,
@@ -6337,11 +6321,11 @@
             }
           },
           "true_next" : "tbl_egress_next_push_vlan",
-          "false_next" : "node_64"
+          "false_next" : "node_62"
         },
         {
-          "name" : "node_64",
-          "id" : 24,
+          "name" : "node_62",
+          "id" : 23,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 325,
@@ -6359,12 +6343,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_16",
-          "false_next" : "node_68"
+          "true_next" : "tbl_act_15",
+          "false_next" : "node_66"
         },
         {
-          "name" : "node_66",
-          "id" : 25,
+          "name" : "node_64",
+          "id" : 24,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 327,
@@ -6385,12 +6369,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_17",
-          "false_next" : "node_72"
+          "true_next" : "tbl_act_16",
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_68",
-          "id" : 26,
+          "name" : "node_66",
+          "id" : 25,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 329,
@@ -6408,12 +6392,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_18",
-          "false_next" : "node_72"
+          "true_next" : "tbl_act_17",
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_70",
-          "id" : 27,
+          "name" : "node_68",
+          "id" : 26,
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 331,
@@ -6434,12 +6418,12 @@
               }
             }
           },
-          "true_next" : "tbl_act_19",
-          "false_next" : "node_72"
+          "true_next" : "tbl_act_18",
+          "false_next" : "node_70"
         },
         {
-          "name" : "node_72",
-          "id" : 28,
+          "name" : "node_70",
+          "id" : 27,
           "source_info" : {
             "filename" : "include/bng.p4",
             "line" : 386,
@@ -6452,7 +6436,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t._bng_type17"]
+                "value" : ["scalars", "fabric_metadata_t._bng_type16"]
               },
               "right" : {
                 "type" : "hexstr",