Integrating INT into fabric pipeline

Change-Id: I9555de0852de79d1a3c7302ecaa17ff112fc5107
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index 42a17dc..0f0948b 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -81,6 +81,52 @@
 }
 tables {
   preamble {
+    id: 33581620
+    name: "FabricIngress.process_set_source_sink.tb_set_source"
+    alias: "tb_set_source"
+  }
+  match_fields {
+    id: 1
+    name: "standard_metadata.ingress_port"
+    bitwidth: 9
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16778827
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  direct_resource_ids: 318787614
+  size: 256
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
+    id: 33561619
+    name: "FabricIngress.process_set_source_sink.tb_set_sink"
+    alias: "tb_set_sink"
+  }
+  match_fields {
+    id: 1
+    name: "standard_metadata.egress_spec"
+    bitwidth: 9
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16788951
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  direct_resource_ids: 318770551
+  size: 256
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
     id: 33611649
     name: "FabricIngress.filtering.ingress_port_vlan"
     alias: "ingress_port_vlan"
@@ -524,6 +570,216 @@
 }
 tables {
   preamble {
+    id: 33566961
+    name: "FabricEgress.process_int_source.tb_int_source"
+    alias: "tb_int_source"
+  }
+  match_fields {
+    id: 1
+    name: "hdr.ipv4.src_addr"
+    bitwidth: 32
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 2
+    name: "hdr.ipv4.dst_addr"
+    bitwidth: 32
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 3
+    name: "fabric_metadata.l4_src_port"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  match_fields {
+    id: 4
+    name: "fabric_metadata.l4_dst_port"
+    bitwidth: 16
+    match_type: TERNARY
+  }
+  action_refs {
+    id: 16807851
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  direct_resource_ids: 318776637
+  size: 1024
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
+    id: 33602084
+    name: "FabricEgress.process_int_transit.tb_int_insert"
+    alias: "tb_int_insert"
+  }
+  action_refs {
+    id: 16806530
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  direct_resource_ids: 318794595
+  size: 2
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
+    id: 33561642
+    name: "FabricEgress.process_int_transit.tb_int_inst_0003"
+    alias: "tb_int_inst_0003"
+  }
+  match_fields {
+    id: 1
+    name: "hdr.int_header.instruction_mask_0003"
+    bitwidth: 4
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16788439
+  }
+  action_refs {
+    id: 16792702
+  }
+  action_refs {
+    id: 16834796
+  }
+  action_refs {
+    id: 16815381
+  }
+  action_refs {
+    id: 16824457
+  }
+  action_refs {
+    id: 16796364
+  }
+  action_refs {
+    id: 16806322
+  }
+  action_refs {
+    id: 16819063
+  }
+  action_refs {
+    id: 16828306
+  }
+  action_refs {
+    id: 16799786
+  }
+  action_refs {
+    id: 16796975
+  }
+  action_refs {
+    id: 16801652
+  }
+  action_refs {
+    id: 16778440
+  }
+  action_refs {
+    id: 16790887
+  }
+  action_refs {
+    id: 16783849
+  }
+  action_refs {
+    id: 16837726
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  direct_resource_ids: 318777781
+  size: 16
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
+    id: 33571998
+    name: "FabricEgress.process_int_transit.tb_int_inst_0407"
+    alias: "tb_int_inst_0407"
+  }
+  match_fields {
+    id: 1
+    name: "hdr.int_header.instruction_mask_0407"
+    bitwidth: 4
+    match_type: EXACT
+  }
+  action_refs {
+    id: 16839298
+  }
+  action_refs {
+    id: 16837018
+  }
+  action_refs {
+    id: 16827414
+  }
+  action_refs {
+    id: 16786021
+  }
+  action_refs {
+    id: 16785131
+  }
+  action_refs {
+    id: 16808652
+  }
+  action_refs {
+    id: 16799296
+  }
+  action_refs {
+    id: 16780668
+  }
+  action_refs {
+    id: 16805625
+  }
+  action_refs {
+    id: 16778495
+  }
+  action_refs {
+    id: 16784981
+  }
+  action_refs {
+    id: 16806353
+  }
+  action_refs {
+    id: 16802140
+  }
+  action_refs {
+    id: 16827601
+  }
+  action_refs {
+    id: 16820295
+  }
+  action_refs {
+    id: 16810955
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  direct_resource_ids: 318818305
+  size: 16
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
+    id: 33607792
+    name: "FabricEgress.process_int_report.tb_generate_report"
+    alias: "tb_generate_report"
+  }
+  action_refs {
+    id: 16814383
+  }
+  action_refs {
+    id: 16800567
+    annotations: "@defaultonly()"
+  }
+  size: 1024
+  idle_timeout_behavior: NO_TIMEOUT
+}
+tables {
+  preamble {
     id: 33599342
     name: "FabricEgress.egress_next.egress_vlan"
     alias: "egress_vlan"
@@ -610,6 +866,20 @@
 }
 actions {
   preamble {
+    id: 16778827
+    name: "FabricIngress.process_set_source_sink.int_set_source"
+    alias: "int_set_source"
+  }
+}
+actions {
+  preamble {
+    id: 16788951
+    name: "FabricIngress.process_set_source_sink.int_set_sink"
+    alias: "int_set_sink"
+  }
+}
+actions {
+  preamble {
     id: 16798734
     name: "FabricIngress.filtering.drop"
     alias: "filtering.drop"
@@ -997,6 +1267,343 @@
 }
 actions {
   preamble {
+    id: 16807851
+    name: "FabricEgress.process_int_source.int_source_dscp"
+    alias: "int_source_dscp"
+  }
+  params {
+    id: 1
+    name: "max_hop"
+    bitwidth: 8
+  }
+  params {
+    id: 2
+    name: "ins_cnt"
+    bitwidth: 5
+  }
+  params {
+    id: 3
+    name: "ins_mask0003"
+    bitwidth: 4
+  }
+  params {
+    id: 4
+    name: "ins_mask0407"
+    bitwidth: 4
+  }
+}
+actions {
+  preamble {
+    id: 16806280
+    name: "FabricEgress.process_int_transit.int_update_total_hop_cnt"
+    alias: "int_update_total_hop_cnt"
+  }
+}
+actions {
+  preamble {
+    id: 16806530
+    name: "FabricEgress.process_int_transit.int_transit"
+    alias: "int_transit"
+  }
+  params {
+    id: 1
+    name: "switch_id"
+    bitwidth: 32
+  }
+}
+actions {
+  preamble {
+    id: 16788439
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i0"
+    alias: "int_set_header_0003_i0"
+  }
+}
+actions {
+  preamble {
+    id: 16792702
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i1"
+    alias: "int_set_header_0003_i1"
+  }
+}
+actions {
+  preamble {
+    id: 16834796
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i2"
+    alias: "int_set_header_0003_i2"
+  }
+}
+actions {
+  preamble {
+    id: 16815381
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i3"
+    alias: "int_set_header_0003_i3"
+  }
+}
+actions {
+  preamble {
+    id: 16824457
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i4"
+    alias: "int_set_header_0003_i4"
+  }
+}
+actions {
+  preamble {
+    id: 16796364
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i5"
+    alias: "int_set_header_0003_i5"
+  }
+}
+actions {
+  preamble {
+    id: 16806322
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i6"
+    alias: "int_set_header_0003_i6"
+  }
+}
+actions {
+  preamble {
+    id: 16819063
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i7"
+    alias: "int_set_header_0003_i7"
+  }
+}
+actions {
+  preamble {
+    id: 16828306
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i8"
+    alias: "int_set_header_0003_i8"
+  }
+}
+actions {
+  preamble {
+    id: 16799786
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i9"
+    alias: "int_set_header_0003_i9"
+  }
+}
+actions {
+  preamble {
+    id: 16796975
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i10"
+    alias: "int_set_header_0003_i10"
+  }
+}
+actions {
+  preamble {
+    id: 16801652
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i11"
+    alias: "int_set_header_0003_i11"
+  }
+}
+actions {
+  preamble {
+    id: 16778440
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i12"
+    alias: "int_set_header_0003_i12"
+  }
+}
+actions {
+  preamble {
+    id: 16790887
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i13"
+    alias: "int_set_header_0003_i13"
+  }
+}
+actions {
+  preamble {
+    id: 16783849
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i14"
+    alias: "int_set_header_0003_i14"
+  }
+}
+actions {
+  preamble {
+    id: 16837726
+    name: "FabricEgress.process_int_transit.int_set_header_0003_i15"
+    alias: "int_set_header_0003_i15"
+  }
+}
+actions {
+  preamble {
+    id: 16839298
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i0"
+    alias: "int_set_header_0407_i0"
+  }
+}
+actions {
+  preamble {
+    id: 16837018
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i1"
+    alias: "int_set_header_0407_i1"
+  }
+}
+actions {
+  preamble {
+    id: 16827414
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i2"
+    alias: "int_set_header_0407_i2"
+  }
+}
+actions {
+  preamble {
+    id: 16786021
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i3"
+    alias: "int_set_header_0407_i3"
+  }
+}
+actions {
+  preamble {
+    id: 16785131
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i4"
+    alias: "int_set_header_0407_i4"
+  }
+}
+actions {
+  preamble {
+    id: 16808652
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i5"
+    alias: "int_set_header_0407_i5"
+  }
+}
+actions {
+  preamble {
+    id: 16799296
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i6"
+    alias: "int_set_header_0407_i6"
+  }
+}
+actions {
+  preamble {
+    id: 16780668
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i7"
+    alias: "int_set_header_0407_i7"
+  }
+}
+actions {
+  preamble {
+    id: 16805625
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i8"
+    alias: "int_set_header_0407_i8"
+  }
+}
+actions {
+  preamble {
+    id: 16778495
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i9"
+    alias: "int_set_header_0407_i9"
+  }
+}
+actions {
+  preamble {
+    id: 16784981
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i10"
+    alias: "int_set_header_0407_i10"
+  }
+}
+actions {
+  preamble {
+    id: 16806353
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i11"
+    alias: "int_set_header_0407_i11"
+  }
+}
+actions {
+  preamble {
+    id: 16802140
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i12"
+    alias: "int_set_header_0407_i12"
+  }
+}
+actions {
+  preamble {
+    id: 16827601
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i13"
+    alias: "int_set_header_0407_i13"
+  }
+}
+actions {
+  preamble {
+    id: 16820295
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i14"
+    alias: "int_set_header_0407_i14"
+  }
+}
+actions {
+  preamble {
+    id: 16810955
+    name: "FabricEgress.process_int_transit.int_set_header_0407_i15"
+    alias: "int_set_header_0407_i15"
+  }
+}
+actions {
+  preamble {
+    id: 16816602
+    name: "FabricEgress.process_int_outer_encap.int_update_ipv4"
+    alias: "int_update_ipv4"
+  }
+}
+actions {
+  preamble {
+    id: 16829666
+    name: "FabricEgress.process_int_outer_encap.int_update_udp"
+    alias: "int_update_udp"
+  }
+}
+actions {
+  preamble {
+    id: 16826978
+    name: "FabricEgress.process_int_outer_encap.int_update_shim"
+    alias: "int_update_shim"
+  }
+}
+actions {
+  preamble {
+    id: 16814383
+    name: "FabricEgress.process_int_report.do_report_encapsulation"
+    alias: "do_report_encapsulation"
+  }
+  params {
+    id: 1
+    name: "src_mac"
+    bitwidth: 48
+  }
+  params {
+    id: 2
+    name: "mon_mac"
+    bitwidth: 48
+  }
+  params {
+    id: 3
+    name: "src_ip"
+    bitwidth: 32
+  }
+  params {
+    id: 4
+    name: "mon_ip"
+    bitwidth: 32
+  }
+  params {
+    id: 5
+    name: "mon_port"
+    bitwidth: 16
+  }
+}
+actions {
+  preamble {
+    id: 16810741
+    name: "FabricEgress.process_int_sink.restore_header"
+    alias: "restore_header"
+  }
+}
+actions {
+  preamble {
+    id: 16787662
+    name: "FabricEgress.process_int_sink.int_sink"
+    alias: "int_sink"
+  }
+}
+actions {
+  preamble {
     id: 16801047
     name: "FabricEgress.pkt_io_egress.pop_vlan"
     alias: "pkt_io_egress.pop_vlan"
@@ -1054,6 +1661,28 @@
 }
 direct_counters {
   preamble {
+    id: 318787614
+    name: "FabricIngress.process_set_source_sink.counter_set_source"
+    alias: "counter_set_source"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33581620
+}
+direct_counters {
+  preamble {
+    id: 318770551
+    name: "FabricIngress.process_set_source_sink.counter_set_sink"
+    alias: "counter_set_sink"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33561619
+}
+direct_counters {
+  preamble {
     id: 318815501
     name: "FabricIngress.filtering.ingress_port_vlan_counter"
     alias: "ingress_port_vlan_counter"
@@ -1197,6 +1826,50 @@
 }
 direct_counters {
   preamble {
+    id: 318776637
+    name: "FabricEgress.process_int_source.counter_int_source"
+    alias: "counter_int_source"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33566961
+}
+direct_counters {
+  preamble {
+    id: 318794595
+    name: "FabricEgress.process_int_transit.counter_int_insert"
+    alias: "counter_int_insert"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33602084
+}
+direct_counters {
+  preamble {
+    id: 318777781
+    name: "FabricEgress.process_int_transit.counter_int_inst_0003"
+    alias: "counter_int_inst_0003"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33561642
+}
+direct_counters {
+  preamble {
+    id: 318818305
+    name: "FabricEgress.process_int_transit.counter_int_inst_0407"
+    alias: "counter_int_inst_0407"
+  }
+  spec {
+    unit: BOTH
+  }
+  direct_table_id: 33571998
+}
+direct_counters {
+  preamble {
     id: 318827144
     name: "FabricEgress.egress_next.egress_vlan_counter"
     alias: "egress_vlan_counter"