First stab at BNG support in fabric.p4

This implementation is derived from Deutsche Telekom contribution:
https://github.com/opencord/p4se

It supports basic upstream and downstream termination based on double
VLAN tags and PPPoE, including counters and downstream metering.

Change-Id: I940959f2338d7319654cf665f6cfe2de7200616b
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
new file mode 100644
index 0000000..a9885e2
--- /dev/null
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-bng/bmv2/default/p4info.txt
@@ -0,0 +1,1178 @@
+pkg_info {
+  arch: "v1model"
+}
+tables {
+  preamble {
+    id: 33584710
+    name: "FabricIngress.bng_ingress.upstream.t_line_map"
+    alias: "t_line_map"
+  }
+  match_fields {
+    id: 1
+    name: "s_tag"
+    bitwidth: 12
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "c_tag"
+    bitwidth: 12
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  action_refs {
+    id: 16829434
+  }
+  const_default_action_id: 16819938
+  size: 8192
+}
+tables {
+  preamble {
+    id: 33603300
+    name: "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
+    alias: "t_pppoe_cp"
+  }
+  match_fields {
+    id: 1
+    name: "pppoe_code"
+    bitwidth: 8
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "pppoe_protocol"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  action_refs {
+    id: 16830893
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  size: 16
+}
+tables {
+  preamble {
+    id: 33595047
+    name: "FabricIngress.bng_ingress.upstream.t_pppoe_term_v4"
+    alias: "t_pppoe_term_v4"
+  }
+  match_fields {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "ipv4_src"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  match_fields {
+    id: 3
+    name: "pppoe_session_id"
+    bitwidth: 16
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16780562
+  }
+  action_refs {
+    id: 16785853
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16785853
+  size: 32768
+}
+tables {
+  preamble {
+    id: 33555367
+    name: "FabricIngress.bng_ingress.downstream.t_line_map_v4"
+    alias: "t_line_map_v4"
+  }
+  match_fields {
+    id: 1
+    name: "ipv4_dst"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  action_refs {
+    id: 16798636
+  }
+  action_refs {
+    id: 16842299
+  }
+  const_default_action_id: 16819938
+  size: 32768
+}
+tables {
+  preamble {
+    id: 33602462
+    name: "FabricIngress.bng_ingress.downstream.t_qos_v4"
+    alias: "t_qos_v4"
+  }
+  match_fields {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 2
+    name: "ipv4_src"
+    bitwidth: 32
+    match_type: LPM
+  }
+  match_fields {
+    id: 3
+    name: "ipv4_dscp"
+    bitwidth: 6
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 4
+    name: "ipv4_ecn"
+    bitwidth: 2
+    match_type: TERNARY
+  }
+  action_refs {
+    id: 16830304
+  }
+  action_refs {
+    id: 16804676
+  }
+  const_default_action_id: 16804676
+  size: 256
+}
+tables {
+  preamble {
+    id: 33611649
+    name: "FabricIngress.filtering.ingress_port_vlan"
+    alias: "ingress_port_vlan"
+  }
+  match_fields {
+    id: 1
+    name: "ig_port"
+    bitwidth: 9
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "vlan_is_valid"
+    bitwidth: 1
+    match_type: EXACT
+  }
+  match_fields {
+    id: 3
+    name: "vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
+  action_refs {
+    id: 16836487
+  }
+  action_refs {
+    id: 16818236
+  }
+  action_refs {
+    id: 16794911
+  }
+  const_default_action_id: 16836487
+  direct_resource_ids: 318815501
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33596298
+    name: "FabricIngress.filtering.fwd_classifier"
+    alias: "fwd_classifier"
+  }
+  match_fields {
+    id: 1
+    name: "ig_port"
+    bitwidth: 9
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "eth_dst"
+    bitwidth: 48
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 3
+    name: "eth_type"
+    bitwidth: 16
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16840921
+  }
+  const_default_action_id: 16840921
+  direct_resource_ids: 318827326
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33596749
+    name: "FabricIngress.forwarding.bridging"
+    alias: "bridging"
+  }
+  match_fields {
+    id: 1
+    name: "vlan_id"
+    bitwidth: 12
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "eth_dst"
+    bitwidth: 48
+    match_type: TERNARY
+  }
+  action_refs {
+    id: 16811012
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318770289
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33574274
+    name: "FabricIngress.forwarding.mpls"
+    alias: "mpls"
+  }
+  match_fields {
+    id: 1
+    name: "mpls_label"
+    bitwidth: 20
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16827758
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318830507
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33562650
+    name: "FabricIngress.forwarding.routing_v4"
+    alias: "routing_v4"
+  }
+  match_fields {
+    id: 1
+    name: "ipv4_dst"
+    bitwidth: 32
+    match_type: LPM
+  }
+  action_refs {
+    id: 16777434
+  }
+  action_refs {
+    id: 16804187
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318811107
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33618978
+    name: "FabricIngress.acl.acl"
+    alias: "acl"
+  }
+  match_fields {
+    id: 1
+    name: "ig_port"
+    bitwidth: 9
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 2
+    name: "ip_proto"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 3
+    name: "l4_sport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 4
+    name: "l4_dport"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 5
+    name: "eth_src"
+    bitwidth: 48
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 6
+    name: "eth_dst"
+    bitwidth: 48
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 7
+    name: "vlan_id"
+    bitwidth: 12
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 8
+    name: "eth_type"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 9
+    name: "ipv4_src"
+    bitwidth: 32
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 10
+    name: "ipv4_dst"
+    bitwidth: 32
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 11
+    name: "icmp_type"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 12
+    name: "icmp_code"
+    bitwidth: 8
+    match_type: TERNARY
+  }
+  action_refs {
+    id: 16807382
+  }
+  action_refs {
+    id: 16829684
+  }
+  action_refs {
+    id: 16790975
+  }
+  action_refs {
+    id: 16820765
+  }
+  action_refs {
+    id: 16827694
+  }
+  const_default_action_id: 16827694
+  direct_resource_ids: 318801025
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33599709
+    name: "FabricIngress.next.next_vlan"
+    alias: "next_vlan"
+  }
+  match_fields {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16790685
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318768144
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33596977
+    name: "FabricIngress.next.xconnect"
+    alias: "xconnect"
+  }
+  match_fields {
+    id: 1
+    name: "ig_port"
+    bitwidth: 9
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "next_id"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16842190
+  }
+  action_refs {
+    id: 16837052
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318778156
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33608588
+    name: "FabricIngress.next.hashed"
+    alias: "hashed"
+  }
+  match_fields {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16815357
+  }
+  action_refs {
+    id: 16791402
+  }
+  action_refs {
+    id: 16779255
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  implementation_id: 285217164
+  direct_resource_ids: 318800532
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33606828
+    name: "FabricIngress.next.multicast"
+    alias: "multicast"
+  }
+  match_fields {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16779917
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318801752
+  size: 1024
+}
+tables {
+  preamble {
+    id: 33576241
+    name: "FabricEgress.bng_egress.downstream.t_session_encap"
+    alias: "t_session_encap"
+  }
+  match_fields {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  action_refs {
+    id: 16784000
+  }
+  const_default_action_id: 16819938
+  size: 8192
+}
+tables {
+  preamble {
+    id: 33599342
+    name: "FabricEgress.egress_next.egress_vlan"
+    alias: "egress_vlan"
+  }
+  match_fields {
+    id: 1
+    name: "vlan_id"
+    bitwidth: 12
+    match_type: EXACT
+  }
+  match_fields {
+    id: 2
+    name: "eg_port"
+    bitwidth: 9
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16790030
+  }
+  action_refs {
+    id: 16819938
+    annotations: "@defaultonly"
+    scope: DEFAULT_ONLY
+  }
+  const_default_action_id: 16819938
+  direct_resource_ids: 318827144
+  size: 1024
+}
+actions {
+  preamble {
+    id: 16819938
+    name: "nop"
+    alias: "nop"
+  }
+}
+actions {
+  preamble {
+    id: 16829434
+    name: "FabricIngress.bng_ingress.upstream.set_line"
+    alias: "set_line"
+  }
+  params {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16830893
+    name: "FabricIngress.bng_ingress.upstream.punt_to_cpu"
+    alias: "upstream.punt_to_cpu"
+  }
+}
+actions {
+  preamble {
+    id: 16785853
+    name: "FabricIngress.bng_ingress.upstream.term_disabled"
+    alias: "term_disabled"
+  }
+}
+actions {
+  preamble {
+    id: 16780562
+    name: "FabricIngress.bng_ingress.upstream.term_enabled_v4"
+    alias: "term_enabled_v4"
+  }
+}
+actions {
+  preamble {
+    id: 16798636
+    name: "FabricIngress.bng_ingress.downstream.set_line_next"
+    alias: "set_line_next"
+  }
+  params {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+  }
+  params {
+    id: 2
+    name: "next_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16842299
+    name: "FabricIngress.bng_ingress.downstream.set_line_drop"
+    alias: "set_line_drop"
+  }
+  params {
+    id: 1
+    name: "line_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16830304
+    name: "FabricIngress.bng_ingress.downstream.qos_prio"
+    alias: "qos_prio"
+  }
+}
+actions {
+  preamble {
+    id: 16804676
+    name: "FabricIngress.bng_ingress.downstream.qos_besteff"
+    alias: "qos_besteff"
+  }
+}
+actions {
+  preamble {
+    id: 16836487
+    name: "FabricIngress.filtering.deny"
+    alias: "deny"
+  }
+}
+actions {
+  preamble {
+    id: 16818236
+    name: "FabricIngress.filtering.permit"
+    alias: "permit"
+  }
+}
+actions {
+  preamble {
+    id: 16794911
+    name: "FabricIngress.filtering.permit_with_internal_vlan"
+    alias: "permit_with_internal_vlan"
+  }
+  params {
+    id: 1
+    name: "vlan_id"
+    bitwidth: 12
+  }
+}
+actions {
+  preamble {
+    id: 16840921
+    name: "FabricIngress.filtering.set_forwarding_type"
+    alias: "set_forwarding_type"
+  }
+  params {
+    id: 1
+    name: "fwd_type"
+    bitwidth: 3
+  }
+}
+actions {
+  preamble {
+    id: 16811012
+    name: "FabricIngress.forwarding.set_next_id_bridging"
+    alias: "set_next_id_bridging"
+  }
+  params {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16827758
+    name: "FabricIngress.forwarding.pop_mpls_and_next"
+    alias: "pop_mpls_and_next"
+  }
+  params {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16777434
+    name: "FabricIngress.forwarding.set_next_id_routing_v4"
+    alias: "set_next_id_routing_v4"
+  }
+  params {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16804187
+    name: "FabricIngress.forwarding.nop_routing_v4"
+    alias: "nop_routing_v4"
+  }
+}
+actions {
+  preamble {
+    id: 16807382
+    name: "FabricIngress.acl.set_next_id_acl"
+    alias: "set_next_id_acl"
+  }
+  params {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16829684
+    name: "FabricIngress.acl.punt_to_cpu"
+    alias: "acl.punt_to_cpu"
+  }
+}
+actions {
+  preamble {
+    id: 16790975
+    name: "FabricIngress.acl.clone_to_cpu"
+    alias: "clone_to_cpu"
+  }
+}
+actions {
+  preamble {
+    id: 16820765
+    name: "FabricIngress.acl.drop"
+    alias: "drop"
+  }
+}
+actions {
+  preamble {
+    id: 16827694
+    name: "FabricIngress.acl.nop_acl"
+    alias: "nop_acl"
+  }
+}
+actions {
+  preamble {
+    id: 16790685
+    name: "FabricIngress.next.set_vlan"
+    alias: "set_vlan"
+  }
+  params {
+    id: 1
+    name: "vlan_id"
+    bitwidth: 12
+  }
+}
+actions {
+  preamble {
+    id: 16842190
+    name: "FabricIngress.next.output_xconnect"
+    alias: "output_xconnect"
+  }
+  params {
+    id: 1
+    name: "port_num"
+    bitwidth: 9
+  }
+}
+actions {
+  preamble {
+    id: 16837052
+    name: "FabricIngress.next.set_next_id_xconnect"
+    alias: "set_next_id_xconnect"
+  }
+  params {
+    id: 1
+    name: "next_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16815357
+    name: "FabricIngress.next.output_hashed"
+    alias: "output_hashed"
+  }
+  params {
+    id: 1
+    name: "port_num"
+    bitwidth: 9
+  }
+}
+actions {
+  preamble {
+    id: 16791402
+    name: "FabricIngress.next.routing_hashed"
+    alias: "routing_hashed"
+  }
+  params {
+    id: 1
+    name: "port_num"
+    bitwidth: 9
+  }
+  params {
+    id: 2
+    name: "smac"
+    bitwidth: 48
+  }
+  params {
+    id: 3
+    name: "dmac"
+    bitwidth: 48
+  }
+}
+actions {
+  preamble {
+    id: 16779255
+    name: "FabricIngress.next.mpls_routing_hashed"
+    alias: "mpls_routing_hashed"
+  }
+  params {
+    id: 1
+    name: "port_num"
+    bitwidth: 9
+  }
+  params {
+    id: 2
+    name: "smac"
+    bitwidth: 48
+  }
+  params {
+    id: 3
+    name: "dmac"
+    bitwidth: 48
+  }
+  params {
+    id: 4
+    name: "label"
+    bitwidth: 20
+  }
+}
+actions {
+  preamble {
+    id: 16779917
+    name: "FabricIngress.next.set_mcast_group_id"
+    alias: "set_mcast_group_id"
+  }
+  params {
+    id: 1
+    name: "group_id"
+    bitwidth: 16
+  }
+}
+actions {
+  preamble {
+    id: 16784000
+    name: "FabricEgress.bng_egress.downstream.encap_v4"
+    alias: "encap_v4"
+  }
+  params {
+    id: 1
+    name: "c_tag"
+    bitwidth: 12
+  }
+  params {
+    id: 2
+    name: "pppoe_session_id"
+    bitwidth: 16
+  }
+}
+actions {
+  preamble {
+    id: 16790030
+    name: "FabricEgress.egress_next.pop_vlan"
+    alias: "pop_vlan"
+  }
+}
+action_profiles {
+  preamble {
+    id: 285217164
+    name: "FabricIngress.next.hashed_selector"
+    alias: "hashed_selector"
+  }
+  table_ids: 33608588
+  with_selector: true
+  size: 1024
+  max_group_size: 16
+}
+counters {
+  preamble {
+    id: 302022672
+    name: "FabricIngress.bng_ingress.upstream.c_terminated"
+    alias: "c_terminated"
+  }
+  spec {
+    unit: PACKETS
+  }
+  size: 8192
+}
+counters {
+  preamble {
+    id: 302043418
+    name: "FabricIngress.bng_ingress.upstream.c_dropped"
+    alias: "c_dropped"
+  }
+  spec {
+    unit: PACKETS
+  }
+  size: 8192
+}
+counters {
+  preamble {
+    id: 302008909
+    name: "FabricIngress.bng_ingress.upstream.c_control"
+    alias: "c_control"
+  }
+  spec {
+    unit: PACKETS
+  }
+  size: 8192
+}
+counters {
+  preamble {
+    id: 302004781
+    name: "FabricIngress.bng_ingress.downstream.c_line_rx"
+    alias: "c_line_rx"
+  }
+  spec {
+    unit: BOTH
+  }
+  size: 8192
+}
+counters {
+  preamble {
+    id: 302011205
+    name: "FabricIngress.port_counters_control.egress_port_counter"
+    alias: "egress_port_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  size: 511
+}
+counters {
+  preamble {
+    id: 302002771
+    name: "FabricIngress.port_counters_control.ingress_port_counter"
+    alias: "ingress_port_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  size: 511
+}
+counters {
+  preamble {
+    id: 302046535
+    name: "FabricEgress.bng_egress.downstream.c_line_tx"
+    alias: "c_line_tx"
+  }
+  spec {
+    unit: BOTH
+  }
+  size: 8192
+}
+direct_counters {
+  preamble {
+    id: 318815501
+    name: "FabricIngress.filtering.ingress_port_vlan_counter"
+    alias: "ingress_port_vlan_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33611649
+}
+direct_counters {
+  preamble {
+    id: 318827326
+    name: "FabricIngress.filtering.fwd_classifier_counter"
+    alias: "fwd_classifier_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33596298
+}
+direct_counters {
+  preamble {
+    id: 318770289
+    name: "FabricIngress.forwarding.bridging_counter"
+    alias: "bridging_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33596749
+}
+direct_counters {
+  preamble {
+    id: 318830507
+    name: "FabricIngress.forwarding.mpls_counter"
+    alias: "mpls_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33574274
+}
+direct_counters {
+  preamble {
+    id: 318811107
+    name: "FabricIngress.forwarding.routing_v4_counter"
+    alias: "routing_v4_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33562650
+}
+direct_counters {
+  preamble {
+    id: 318801025
+    name: "FabricIngress.acl.acl_counter"
+    alias: "acl_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33618978
+}
+direct_counters {
+  preamble {
+    id: 318768144
+    name: "FabricIngress.next.next_vlan_counter"
+    alias: "next_vlan_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33599709
+}
+direct_counters {
+  preamble {
+    id: 318778156
+    name: "FabricIngress.next.xconnect_counter"
+    alias: "xconnect_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33596977
+}
+direct_counters {
+  preamble {
+    id: 318800532
+    name: "FabricIngress.next.hashed_counter"
+    alias: "hashed_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33608588
+}
+direct_counters {
+  preamble {
+    id: 318801752
+    name: "FabricIngress.next.multicast_counter"
+    alias: "multicast_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33606828
+}
+direct_counters {
+  preamble {
+    id: 318827144
+    name: "FabricEgress.egress_next.egress_vlan_counter"
+    alias: "egress_vlan_counter"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33599342
+}
+meters {
+  preamble {
+    id: 335569952
+    name: "FabricIngress.bng_ingress.downstream.m_besteff"
+    alias: "m_besteff"
+  }
+  spec {
+    unit: BYTES
+  }
+  size: 8192
+}
+meters {
+  preamble {
+    id: 335568260
+    name: "FabricIngress.bng_ingress.downstream.m_prio"
+    alias: "m_prio"
+  }
+  spec {
+    unit: BYTES
+  }
+  size: 8192
+}
+controller_packet_metadata {
+  preamble {
+    id: 67146229
+    name: "packet_in"
+    alias: "packet_in"
+    annotations: "@controller_header(\"packet_in\")"
+  }
+  metadata {
+    id: 1
+    name: "ingress_port"
+    bitwidth: 9
+  }
+  metadata {
+    id: 2
+    name: "_pad"
+    bitwidth: 7
+  }
+}
+controller_packet_metadata {
+  preamble {
+    id: 67121543
+    name: "packet_out"
+    alias: "packet_out"
+    annotations: "@controller_header(\"packet_out\")"
+  }
+  metadata {
+    id: 1
+    name: "egress_port"
+    bitwidth: 9
+  }
+  metadata {
+    id: 2
+    name: "_pad"
+    bitwidth: 7
+  }
+}
+type_info {
+}