SDFAB-193 Add packet-out routing feature to fabric-v1model

This is a port from fabric-tna:
https://github.com/stratum/fabric-tna/pull/262

By default, all packet-outs are sent straight to the egress port passed
as a controller packet-out metadata, bypassing the forwarding tables in
the ingress pipe. With this change, the control plane can set a new
packet-out metadata named `do_forwarding` to instruct the parser to
forward packet-outs as regular packets.

When handling `OutboundPacket` in ONOS, the pipeconf (interpreter) uses
the `OUTPUT` instruction with logical port `TABLE` to enable forwarding.
This is consistent with the OpenFlow behavior, from the spec:

    Required: TABLE: Represents the start of the OpenFlow pipeline (see
    5.1). This port is only valid in an output action in the action list
    of a packet-out message (see 7.3.7), and submits the packet to the
    first flow table so that the packet can be processed through the
    regular OpenFlow pipeline.

We also rename some test classes for consistency with main classes.
Before we had a FabricPipelinerTest class that was used for a different
purpose than testing FabricPipeliner.

Change-Id: I1b47c4b4f233df5b67d1a6dc743dea27c54772b2
(cherry picked from commit db347377bec8bf6f71fb9828f4dc552731e562f7)
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index 7e482b4..7e04957 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -3,7 +3,7 @@
 }
 tables {
   preamble {
-    id: 33581620
+    id: 44526132
     name: "FabricIngress.process_set_source_sink.tb_set_source"
     alias: "tb_set_source"
   }
@@ -14,20 +14,20 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16778827
+    id: 21235275
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318787614
+  const_default_action_id: 28485346
+  direct_resource_ids: 318984222
   size: 511
 }
 tables {
   preamble {
-    id: 33561619
+    id: 35265555
     name: "FabricIngress.process_set_source_sink.tb_set_sink"
     alias: "tb_set_sink"
   }
@@ -38,20 +38,20 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16788951
+    id: 25570775
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318770551
+  const_default_action_id: 28485346
+  direct_resource_ids: 324013431
   size: 511
 }
 tables {
   preamble {
-    id: 33603300
+    id: 34520804
     name: "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
     alias: "t_pppoe_cp"
   }
@@ -68,19 +68,19 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16830893
+    id: 19321261
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
+  const_default_action_id: 28485346
   size: 16
 }
 tables {
   preamble {
-    id: 33595047
+    id: 48668327
     name: "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4"
     alias: "t_pppoe_term_v4"
   }
@@ -103,19 +103,19 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16780562
+    id: 32574738
   }
   action_refs {
-    id: 16785853
+    id: 27468221
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16785853
+  const_default_action_id: 27468221
   size: 32768
 }
 tables {
   preamble {
-    id: 33579386
+    id: 38756730
     name: "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6"
     alias: "t_pppoe_term_v6"
   }
@@ -138,19 +138,19 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16824882
+    id: 25279026
   }
   action_refs {
-    id: 16785853
+    id: 27468221
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16785853
+  const_default_action_id: 27468221
   size: 32768
 }
 tables {
   preamble {
-    id: 33594775
+    id: 43294103
     name: "FabricIngress.bng_ingress.downstream.t_line_session_map"
     alias: "t_line_session_map"
   }
@@ -161,22 +161,22 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
   action_refs {
-    id: 16795395
+    id: 29640451
   }
   action_refs {
-    id: 16822844
+    id: 32944700
   }
-  const_default_action_id: 16819938
+  const_default_action_id: 28485346
   size: 8192
 }
 tables {
   preamble {
-    id: 33602462
+    id: 37862302
     name: "FabricIngress.bng_ingress.downstream.t_qos_v4"
     alias: "t_qos_v4"
   }
@@ -205,17 +205,17 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16830304
+    id: 21221216
   }
   action_refs {
-    id: 16804676
+    id: 27355972
   }
-  const_default_action_id: 16804676
+  const_default_action_id: 27355972
   size: 256
 }
 tables {
   preamble {
-    id: 33616597
+    id: 48034517
     name: "FabricIngress.bng_ingress.downstream.t_qos_v6"
     alias: "t_qos_v6"
   }
@@ -238,17 +238,17 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16830304
+    id: 21221216
   }
   action_refs {
-    id: 16804676
+    id: 27355972
   }
-  const_default_action_id: 16804676
+  const_default_action_id: 27355972
   size: 256
 }
 tables {
   preamble {
-    id: 33592041
+    id: 39686889
     name: "FabricIngress.bng_ingress.t_line_map"
     alias: "t_line_map"
   }
@@ -265,14 +265,14 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16829385
+    id: 29084617
   }
-  const_default_action_id: 16829385
+  const_default_action_id: 29084617
   size: 8192
 }
 tables {
   preamble {
-    id: 33611649
+    id: 43310977
     name: "FabricIngress.filtering.ingress_port_vlan"
     alias: "ingress_port_vlan"
   }
@@ -301,21 +301,21 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16836487
+    id: 17164167
   }
   action_refs {
-    id: 16818236
+    id: 24158268
   }
   action_refs {
-    id: 16794911
+    id: 24266015
   }
-  const_default_action_id: 16836487
-  direct_resource_ids: 318815501
+  const_default_action_id: 17164167
+  direct_resource_ids: 326221069
   size: 8192
 }
 tables {
   preamble {
-    id: 33596298
+    id: 49718154
     name: "FabricIngress.filtering.fwd_classifier"
     alias: "fwd_classifier"
   }
@@ -344,15 +344,15 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16840921
+    id: 25032921
   }
-  const_default_action_id: 16840921
-  direct_resource_ids: 318827326
+  const_default_action_id: 25032921
+  direct_resource_ids: 335473470
   size: 1024
 }
 tables {
   preamble {
-    id: 33596749
+    id: 43623757
     name: "FabricIngress.forwarding.bridging"
     alias: "bridging"
   }
@@ -369,20 +369,20 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16811012
+    id: 21791748
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318770289
+  const_default_action_id: 28485346
+  direct_resource_ids: 330959985
   size: 1024
 }
 tables {
   preamble {
-    id: 33574274
+    id: 37768578
     name: "FabricIngress.forwarding.mpls"
     alias: "mpls"
   }
@@ -393,20 +393,20 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16827758
+    id: 30066030
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318830507
+  const_default_action_id: 28485346
+  direct_resource_ids: 318961579
   size: 1024
 }
 tables {
   preamble {
-    id: 33562650
+    id: 41754650
     name: "FabricIngress.forwarding.routing_v4"
     alias: "routing_v4"
   }
@@ -417,13 +417,13 @@
     match_type: LPM
   }
   action_refs {
-    id: 16777434
+    id: 19792090
   }
   action_refs {
-    id: 16804187
+    id: 29124955
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
@@ -431,7 +431,7 @@
 }
 tables {
   preamble {
-    id: 33614081
+    id: 49342721
     name: "FabricIngress.forwarding.routing_v6"
     alias: "routing_v6"
   }
@@ -442,20 +442,20 @@
     match_type: LPM
   }
   action_refs {
-    id: 16809751
+    id: 21856023
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318799210
+  const_default_action_id: 28485346
+  direct_resource_ids: 324042090
   size: 1024
 }
 tables {
   preamble {
-    id: 33618978
+    id: 44104738
     name: "FabricIngress.acl.acl"
     alias: "acl"
   }
@@ -532,27 +532,27 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16807382
+    id: 23623126
   }
   action_refs {
-    id: 16829684
+    id: 23579892
   }
   action_refs {
-    id: 16781601
+    id: 16912673
   }
   action_refs {
-    id: 16820765
+    id: 23570973
   }
   action_refs {
-    id: 16827694
+    id: 29607214
   }
-  const_default_action_id: 16827694
-  direct_resource_ids: 318801025
+  const_default_action_id: 29607214
+  direct_resource_ids: 319194241
   size: 1024
 }
 tables {
   preamble {
-    id: 33599709
+    id: 35696861
     name: "FabricIngress.next.next_vlan"
     alias: "next_vlan"
   }
@@ -563,23 +563,23 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16790685
+    id: 22099101
   }
   action_refs {
-    id: 16803337
+    id: 17655305
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318768144
+  const_default_action_id: 28485346
+  direct_resource_ids: 326370320
   size: 1024
 }
 tables {
   preamble {
-    id: 33596977
+    id: 48735793
     name: "FabricIngress.next.xconnect"
     alias: "xconnect"
   }
@@ -596,23 +596,23 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16842190
+    id: 24640974
   }
   action_refs {
-    id: 16837052
+    id: 30599612
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318778156
+  const_default_action_id: 28485346
+  direct_resource_ids: 321989420
   size: 1024
 }
 tables {
   preamble {
-    id: 33571723
+    id: 39142283
     name: "FabricIngress.next.simple"
     alias: "simple"
   }
@@ -623,26 +623,26 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16802668
+    id: 19358572
   }
   action_refs {
-    id: 16814145
+    id: 31887425
   }
   action_refs {
-    id: 16783036
+    id: 26875580
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318769096
+  const_default_action_id: 28485346
+  direct_resource_ids: 326633416
   size: 1024
 }
 tables {
   preamble {
-    id: 33608588
+    id: 47960972
     name: "FabricIngress.next.hashed"
     alias: "hashed"
   }
@@ -653,27 +653,27 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16815357
+    id: 27301117
   }
   action_refs {
-    id: 16791402
+    id: 20985706
   }
   action_refs {
-    id: 16779255
+    id: 27920375
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  implementation_id: 285217164
-  direct_resource_ids: 318800532
+  const_default_action_id: 28485346
+  implementation_id: 291115404
+  direct_resource_ids: 322798228
   size: 1024
 }
 tables {
   preamble {
-    id: 33606828
+    id: 40619180
     name: "FabricIngress.next.multicast"
     alias: "multicast"
   }
@@ -684,20 +684,20 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16779917
+    id: 21629581
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318801752
+  const_default_action_id: 28485346
+  direct_resource_ids: 319194968
   size: 1024
 }
 tables {
   preamble {
-    id: 33557250
+    id: 36113154
     name: "FabricIngress.spgw.interfaces"
     alias: "interfaces"
   }
@@ -714,19 +714,19 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16810012
+    id: 18186268
   }
   action_refs {
-    id: 16783042
+    id: 29103810
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16783042
+  const_default_action_id: 29103810
   size: 128
 }
 tables {
   preamble {
-    id: 33566601
+    id: 47394697
     name: "FabricIngress.spgw.downlink_pdrs"
     alias: "downlink_pdrs"
   }
@@ -737,13 +737,13 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16800614
+    id: 18504550
   }
   action_refs {
-    id: 16785920
+    id: 25764352
   }
   action_refs {
-    id: 16800567
+    id: 21257015
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
@@ -751,7 +751,7 @@
 }
 tables {
   preamble {
-    id: 33606410
+    id: 46648074
     name: "FabricIngress.spgw.uplink_pdrs"
     alias: "uplink_pdrs"
   }
@@ -768,13 +768,13 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16800614
+    id: 18504550
   }
   action_refs {
-    id: 16785920
+    id: 25764352
   }
   action_refs {
-    id: 16800567
+    id: 21257015
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
@@ -782,7 +782,7 @@
 }
 tables {
   preamble {
-    id: 33599560
+    id: 47558728
     name: "FabricIngress.spgw.fars"
     alias: "fars"
   }
@@ -793,20 +793,20 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16820307
+    id: 24881235
   }
   action_refs {
-    id: 16814785
+    id: 29659841
   }
   action_refs {
-    id: 16814681
+    id: 30642777
   }
-  const_default_action_id: 16820307
+  const_default_action_id: 24881235
   size: 2048
 }
 tables {
   preamble {
-    id: 33612258
+    id: 44818914
     name: "FabricEgress.process_int_main.process_int_source.tb_int_source"
     alias: "tb_int_source"
   }
@@ -835,20 +835,20 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16785857
+    id: 20062657
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
-  direct_resource_ids: 318800047
+  const_default_action_id: 28485346
+  direct_resource_ids: 322470063
   size: 1024
 }
 tables {
   preamble {
-    id: 33599867
+    id: 34910587
     name: "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
     alias: "tb_int_insert"
   }
@@ -859,27 +859,27 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16780783
+    id: 29232623
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16819938
+  const_default_action_id: 28485346
   size: 1
 }
 tables {
   preamble {
-    id: 33618104
+    id: 48232632
     name: "FabricEgress.process_int_main.process_int_report.tb_generate_report"
     alias: "tb_generate_report"
   }
   action_refs {
-    id: 16788620
+    id: 19999884
   }
   action_refs {
-    id: 16819938
+    id: 28485346
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
@@ -887,7 +887,7 @@
 }
 tables {
   preamble {
-    id: 33599342
+    id: 49262446
     name: "FabricEgress.egress_next.egress_vlan"
     alias: "egress_vlan"
   }
@@ -904,79 +904,80 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16807339
+    id: 30307755
   }
   action_refs {
-    id: 16790030
+    id: 17183246
   }
   action_refs {
-    id: 16787838
+    id: 30812542
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
   }
-  const_default_action_id: 16787838
-  direct_resource_ids: 318827144
+  const_default_action_id: 30812542
+  direct_resource_ids: 318892680
   size: 1024
 }
 actions {
   preamble {
-    id: 16819938
+    id: 28485346
     name: "nop"
     alias: "nop"
   }
 }
 actions {
   preamble {
-    id: 16800567
+    id: 21257015
     name: "NoAction"
     alias: "NoAction"
+    annotations: "@noWarn(\"unused\")"
   }
 }
 actions {
   preamble {
-    id: 16778827
+    id: 21235275
     name: "FabricIngress.process_set_source_sink.int_set_source"
     alias: "int_set_source"
   }
 }
 actions {
   preamble {
-    id: 16788951
+    id: 25570775
     name: "FabricIngress.process_set_source_sink.int_set_sink"
     alias: "int_set_sink"
   }
 }
 actions {
   preamble {
-    id: 16830893
+    id: 19321261
     name: "FabricIngress.bng_ingress.upstream.punt_to_cpu"
     alias: "upstream.punt_to_cpu"
   }
 }
 actions {
   preamble {
-    id: 16785853
+    id: 27468221
     name: "FabricIngress.bng_ingress.upstream.term_disabled"
     alias: "term_disabled"
   }
 }
 actions {
   preamble {
-    id: 16780562
+    id: 32574738
     name: "FabricIngress.bng_ingress.upstream.term_enabled_v4"
     alias: "term_enabled_v4"
   }
 }
 actions {
   preamble {
-    id: 16824882
+    id: 25279026
     name: "FabricIngress.bng_ingress.upstream.term_enabled_v6"
     alias: "term_enabled_v6"
   }
 }
 actions {
   preamble {
-    id: 16795395
+    id: 29640451
     name: "FabricIngress.bng_ingress.downstream.set_session"
     alias: "set_session"
   }
@@ -988,28 +989,28 @@
 }
 actions {
   preamble {
-    id: 16822844
+    id: 32944700
     name: "FabricIngress.bng_ingress.downstream.drop"
     alias: "downstream.drop"
   }
 }
 actions {
   preamble {
-    id: 16830304
+    id: 21221216
     name: "FabricIngress.bng_ingress.downstream.qos_prio"
     alias: "qos_prio"
   }
 }
 actions {
   preamble {
-    id: 16804676
+    id: 27355972
     name: "FabricIngress.bng_ingress.downstream.qos_besteff"
     alias: "qos_besteff"
   }
 }
 actions {
   preamble {
-    id: 16829385
+    id: 29084617
     name: "FabricIngress.bng_ingress.set_line"
     alias: "set_line"
   }
@@ -1021,21 +1022,21 @@
 }
 actions {
   preamble {
-    id: 16836487
+    id: 17164167
     name: "FabricIngress.filtering.deny"
     alias: "deny"
   }
 }
 actions {
   preamble {
-    id: 16818236
+    id: 24158268
     name: "FabricIngress.filtering.permit"
     alias: "permit"
   }
 }
 actions {
   preamble {
-    id: 16794911
+    id: 24266015
     name: "FabricIngress.filtering.permit_with_internal_vlan"
     alias: "permit_with_internal_vlan"
   }
@@ -1047,7 +1048,7 @@
 }
 actions {
   preamble {
-    id: 16840921
+    id: 25032921
     name: "FabricIngress.filtering.set_forwarding_type"
     alias: "set_forwarding_type"
   }
@@ -1059,7 +1060,7 @@
 }
 actions {
   preamble {
-    id: 16811012
+    id: 21791748
     name: "FabricIngress.forwarding.set_next_id_bridging"
     alias: "set_next_id_bridging"
   }
@@ -1071,7 +1072,7 @@
 }
 actions {
   preamble {
-    id: 16827758
+    id: 30066030
     name: "FabricIngress.forwarding.pop_mpls_and_next"
     alias: "pop_mpls_and_next"
   }
@@ -1083,7 +1084,7 @@
 }
 actions {
   preamble {
-    id: 16777434
+    id: 19792090
     name: "FabricIngress.forwarding.set_next_id_routing_v4"
     alias: "set_next_id_routing_v4"
   }
@@ -1095,14 +1096,14 @@
 }
 actions {
   preamble {
-    id: 16804187
+    id: 29124955
     name: "FabricIngress.forwarding.nop_routing_v4"
     alias: "nop_routing_v4"
   }
 }
 actions {
   preamble {
-    id: 16809751
+    id: 21856023
     name: "FabricIngress.forwarding.set_next_id_routing_v6"
     alias: "set_next_id_routing_v6"
   }
@@ -1114,7 +1115,7 @@
 }
 actions {
   preamble {
-    id: 16807382
+    id: 23623126
     name: "FabricIngress.acl.set_next_id_acl"
     alias: "set_next_id_acl"
   }
@@ -1126,14 +1127,14 @@
 }
 actions {
   preamble {
-    id: 16829684
+    id: 23579892
     name: "FabricIngress.acl.punt_to_cpu"
     alias: "acl.punt_to_cpu"
   }
 }
 actions {
   preamble {
-    id: 16781601
+    id: 16912673
     name: "FabricIngress.acl.set_clone_session_id"
     alias: "set_clone_session_id"
   }
@@ -1145,21 +1146,21 @@
 }
 actions {
   preamble {
-    id: 16820765
+    id: 23570973
     name: "FabricIngress.acl.drop"
     alias: "acl.drop"
   }
 }
 actions {
   preamble {
-    id: 16827694
+    id: 29607214
     name: "FabricIngress.acl.nop_acl"
     alias: "nop_acl"
   }
 }
 actions {
   preamble {
-    id: 16790685
+    id: 22099101
     name: "FabricIngress.next.set_vlan"
     alias: "set_vlan"
   }
@@ -1171,7 +1172,7 @@
 }
 actions {
   preamble {
-    id: 16803337
+    id: 17655305
     name: "FabricIngress.next.set_double_vlan"
     alias: "set_double_vlan"
   }
@@ -1188,7 +1189,7 @@
 }
 actions {
   preamble {
-    id: 16842190
+    id: 24640974
     name: "FabricIngress.next.output_xconnect"
     alias: "output_xconnect"
   }
@@ -1200,7 +1201,7 @@
 }
 actions {
   preamble {
-    id: 16837052
+    id: 30599612
     name: "FabricIngress.next.set_next_id_xconnect"
     alias: "set_next_id_xconnect"
   }
@@ -1212,7 +1213,7 @@
 }
 actions {
   preamble {
-    id: 16802668
+    id: 19358572
     name: "FabricIngress.next.output_simple"
     alias: "output_simple"
   }
@@ -1224,7 +1225,7 @@
 }
 actions {
   preamble {
-    id: 16814145
+    id: 31887425
     name: "FabricIngress.next.routing_simple"
     alias: "routing_simple"
   }
@@ -1246,7 +1247,7 @@
 }
 actions {
   preamble {
-    id: 16783036
+    id: 26875580
     name: "FabricIngress.next.mpls_routing_simple"
     alias: "mpls_routing_simple"
   }
@@ -1273,7 +1274,7 @@
 }
 actions {
   preamble {
-    id: 16815357
+    id: 27301117
     name: "FabricIngress.next.output_hashed"
     alias: "output_hashed"
   }
@@ -1285,7 +1286,7 @@
 }
 actions {
   preamble {
-    id: 16791402
+    id: 20985706
     name: "FabricIngress.next.routing_hashed"
     alias: "routing_hashed"
   }
@@ -1307,7 +1308,7 @@
 }
 actions {
   preamble {
-    id: 16779255
+    id: 27920375
     name: "FabricIngress.next.mpls_routing_hashed"
     alias: "mpls_routing_hashed"
   }
@@ -1334,7 +1335,7 @@
 }
 actions {
   preamble {
-    id: 16779917
+    id: 21629581
     name: "FabricIngress.next.set_mcast_group_id"
     alias: "set_mcast_group_id"
   }
@@ -1346,7 +1347,7 @@
 }
 actions {
   preamble {
-    id: 16810012
+    id: 18186268
     name: "FabricIngress.spgw.load_iface"
     alias: "load_iface"
   }
@@ -1358,14 +1359,14 @@
 }
 actions {
   preamble {
-    id: 16783042
+    id: 29103810
     name: "FabricIngress.spgw.iface_miss"
     alias: "iface_miss"
   }
 }
 actions {
   preamble {
-    id: 16800614
+    id: 18504550
     name: "FabricIngress.spgw.load_pdr"
     alias: "load_pdr"
   }
@@ -1387,7 +1388,7 @@
 }
 actions {
   preamble {
-    id: 16785920
+    id: 25764352
     name: "FabricIngress.spgw.load_pdr_qos"
     alias: "load_pdr_qos"
   }
@@ -1414,7 +1415,7 @@
 }
 actions {
   preamble {
-    id: 16820307
+    id: 24881235
     name: "FabricIngress.spgw.load_normal_far"
     alias: "load_normal_far"
   }
@@ -1431,7 +1432,7 @@
 }
 actions {
   preamble {
-    id: 16814785
+    id: 29659841
     name: "FabricIngress.spgw.load_tunnel_far"
     alias: "load_tunnel_far"
   }
@@ -1468,7 +1469,7 @@
 }
 actions {
   preamble {
-    id: 16814681
+    id: 30642777
     name: "FabricIngress.spgw.load_dbuf_far"
     alias: "load_dbuf_far"
   }
@@ -1505,21 +1506,21 @@
 }
 actions {
   preamble {
-    id: 16784000
+    id: 20781696
     name: "FabricEgress.bng_egress.downstream.encap_v4"
     alias: "encap_v4"
   }
 }
 actions {
   preamble {
-    id: 16801306
+    id: 17456666
     name: "FabricEgress.bng_egress.downstream.encap_v6"
     alias: "encap_v6"
   }
 }
 actions {
   preamble {
-    id: 16785857
+    id: 20062657
     name: "FabricEgress.process_int_main.process_int_source.int_source_dscp"
     alias: "int_source_dscp"
   }
@@ -1546,7 +1547,7 @@
 }
 actions {
   preamble {
-    id: 16780783
+    id: 29232623
     name: "FabricEgress.process_int_main.process_int_transit.init_metadata"
     alias: "init_metadata"
   }
@@ -1558,7 +1559,7 @@
 }
 actions {
   preamble {
-    id: 16788620
+    id: 19999884
     name: "FabricEgress.process_int_main.process_int_report.do_report_encapsulation"
     alias: "do_report_encapsulation"
   }
@@ -1590,39 +1591,39 @@
 }
 actions {
   preamble {
-    id: 16807339
+    id: 30307755
     name: "FabricEgress.egress_next.push_vlan"
     alias: "push_vlan"
   }
 }
 actions {
   preamble {
-    id: 16790030
+    id: 17183246
     name: "FabricEgress.egress_next.pop_vlan"
     alias: "pop_vlan"
   }
 }
 actions {
   preamble {
-    id: 16787838
+    id: 30812542
     name: "FabricEgress.egress_next.drop"
     alias: "egress_next.drop"
   }
 }
 action_profiles {
   preamble {
-    id: 285217164
+    id: 291115404
     name: "FabricIngress.next.hashed_selector"
     alias: "hashed_selector"
   }
-  table_ids: 33608588
+  table_ids: 47960972
   with_selector: true
   size: 1024
   max_group_size: 16
 }
 counters {
   preamble {
-    id: 302022672
+    id: 316309520
     name: "FabricIngress.bng_ingress.upstream.c_terminated"
     alias: "c_terminated"
   }
@@ -1633,7 +1634,7 @@
 }
 counters {
   preamble {
-    id: 302043418
+    id: 310956314
     name: "FabricIngress.bng_ingress.upstream.c_dropped"
     alias: "c_dropped"
   }
@@ -1644,7 +1645,7 @@
 }
 counters {
   preamble {
-    id: 302008909
+    id: 302467661
     name: "FabricIngress.bng_ingress.upstream.c_control"
     alias: "c_control"
   }
@@ -1655,7 +1656,7 @@
 }
 counters {
   preamble {
-    id: 302004781
+    id: 304364077
     name: "FabricIngress.bng_ingress.downstream.c_line_rx"
     alias: "c_line_rx"
   }
@@ -1666,7 +1667,7 @@
 }
 counters {
   preamble {
-    id: 302011205
+    id: 314528581
     name: "FabricIngress.port_counters_control.egress_port_counter"
     alias: "egress_port_counter"
   }
@@ -1677,7 +1678,7 @@
 }
 counters {
   preamble {
-    id: 302002771
+    id: 312947283
     name: "FabricIngress.port_counters_control.ingress_port_counter"
     alias: "ingress_port_counter"
   }
@@ -1688,7 +1689,7 @@
 }
 counters {
   preamble {
-    id: 302043952
+    id: 308925232
     name: "FabricIngress.spgw.pdr_counter"
     alias: "FabricIngress.spgw.pdr_counter"
   }
@@ -1699,7 +1700,7 @@
 }
 counters {
   preamble {
-    id: 302046535
+    id: 311942471
     name: "FabricEgress.bng_egress.downstream.c_line_tx"
     alias: "c_line_tx"
   }
@@ -1721,172 +1722,172 @@
 }
 direct_counters {
   preamble {
-    id: 318787614
+    id: 318984222
     name: "FabricIngress.process_set_source_sink.counter_set_source"
     alias: "counter_set_source"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33581620
+  direct_table_id: 44526132
 }
 direct_counters {
   preamble {
-    id: 318770551
+    id: 324013431
     name: "FabricIngress.process_set_source_sink.counter_set_sink"
     alias: "counter_set_sink"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33561619
+  direct_table_id: 35265555
 }
 direct_counters {
   preamble {
-    id: 318815501
+    id: 326221069
     name: "FabricIngress.filtering.ingress_port_vlan_counter"
     alias: "ingress_port_vlan_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33611649
+  direct_table_id: 43310977
 }
 direct_counters {
   preamble {
-    id: 318827326
+    id: 335473470
     name: "FabricIngress.filtering.fwd_classifier_counter"
     alias: "fwd_classifier_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33596298
+  direct_table_id: 49718154
 }
 direct_counters {
   preamble {
-    id: 318770289
+    id: 330959985
     name: "FabricIngress.forwarding.bridging_counter"
     alias: "bridging_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33596749
+  direct_table_id: 43623757
 }
 direct_counters {
   preamble {
-    id: 318830507
+    id: 318961579
     name: "FabricIngress.forwarding.mpls_counter"
     alias: "mpls_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33574274
+  direct_table_id: 37768578
 }
 direct_counters {
   preamble {
-    id: 318799210
+    id: 324042090
     name: "FabricIngress.forwarding.routing_v6_counter"
     alias: "routing_v6_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33614081
+  direct_table_id: 49342721
 }
 direct_counters {
   preamble {
-    id: 318801025
+    id: 319194241
     name: "FabricIngress.acl.acl_counter"
     alias: "acl_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33618978
+  direct_table_id: 44104738
 }
 direct_counters {
   preamble {
-    id: 318768144
+    id: 326370320
     name: "FabricIngress.next.next_vlan_counter"
     alias: "next_vlan_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33599709
+  direct_table_id: 35696861
 }
 direct_counters {
   preamble {
-    id: 318778156
+    id: 321989420
     name: "FabricIngress.next.xconnect_counter"
     alias: "xconnect_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33596977
+  direct_table_id: 48735793
 }
 direct_counters {
   preamble {
-    id: 318769096
+    id: 326633416
     name: "FabricIngress.next.simple_counter"
     alias: "simple_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33571723
+  direct_table_id: 39142283
 }
 direct_counters {
   preamble {
-    id: 318800532
+    id: 322798228
     name: "FabricIngress.next.hashed_counter"
     alias: "hashed_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33608588
+  direct_table_id: 47960972
 }
 direct_counters {
   preamble {
-    id: 318801752
+    id: 319194968
     name: "FabricIngress.next.multicast_counter"
     alias: "multicast_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33606828
+  direct_table_id: 40619180
 }
 direct_counters {
   preamble {
-    id: 318800047
+    id: 322470063
     name: "FabricEgress.process_int_main.process_int_source.counter_int_source"
     alias: "counter_int_source"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33612258
+  direct_table_id: 44818914
 }
 direct_counters {
   preamble {
-    id: 318827144
+    id: 318892680
     name: "FabricEgress.egress_next.egress_vlan_counter"
     alias: "egress_vlan_counter"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33599342
+  direct_table_id: 49262446
 }
 meters {
   preamble {
-    id: 335569952
+    id: 337077280
     name: "FabricIngress.bng_ingress.downstream.m_besteff"
     alias: "m_besteff"
   }
@@ -1897,7 +1898,7 @@
 }
 meters {
   preamble {
-    id: 335568260
+    id: 349920644
     name: "FabricIngress.bng_ingress.downstream.m_prio"
     alias: "m_prio"
   }
@@ -1908,7 +1909,7 @@
 }
 controller_packet_metadata {
   preamble {
-    id: 67146229
+    id: 81826293
     name: "packet_in"
     alias: "packet_in"
     annotations: "@controller_header(\"packet_in\")"
@@ -1926,7 +1927,7 @@
 }
 controller_packet_metadata {
   preamble {
-    id: 67121543
+    id: 76689799
     name: "packet_out"
     alias: "packet_out"
     annotations: "@controller_header(\"packet_out\")"
@@ -1938,8 +1939,13 @@
   }
   metadata {
     id: 2
+    name: "do_forwarding"
+    bitwidth: 1
+  }
+  metadata {
+    id: 3
     name: "_pad"
-    bitwidth: 7
+    bitwidth: 6
   }
 }
 type_info {