Bump version of P4Runtime to 1.0.0rc3 and P4 tools

Change-Id: I3082b4bd772d692830bd5af8e326a0fd5fb2f167
diff --git a/pipelines/basic/src/main/resources/p4c-out/bmv2/basic.json b/pipelines/basic/src/main/resources/p4c-out/bmv2/basic.json
index 5769494..2e428be 100644
--- a/pipelines/basic/src/main/resources/p4c-out/bmv2/basic.json
+++ b/pipelines/basic/src/main/resources/p4c-out/bmv2/basic.json
@@ -40,6 +40,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding_0", 5, false]
       ]
     },
@@ -178,7 +179,14 @@
   "header_unions" : [],
   "header_union_stacks" : [],
   "field_lists" : [],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -485,13 +493,25 @@
       "name" : "ingress.table0_control.table0_counter",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "ingress.table0_control.table0"
+      "binding" : "ingress.table0_control.table0",
+      "source_info" : {
+        "filename" : "include/table0.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "table0_counter"
+      }
     },
     {
       "name" : "ingress.wcmp_control.wcmp_table_counter",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "ingress.wcmp_control.wcmp_table"
+      "binding" : "ingress.wcmp_control.wcmp_table",
+      "source_info" : {
+        "filename" : "include/wcmp.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "wcmp_table_counter"
+      }
     },
     {
       "name" : "egress.port_counters_egress.egress_port_counter",
@@ -1338,6 +1358,12 @@
         {
           "name" : "ingress.wcmp_control.wcmp_selector",
           "id" : 0,
+          "source_info" : {
+            "filename" : "include/wcmp.p4",
+            "line" : 28,
+            "column" : 55,
+            "source_fragment" : "wcmp_selector"
+          },
           "max_size" : 64,
           "selector" : {
             "algo" : "crc16",
diff --git a/pipelines/basic/src/main/resources/p4c-out/bmv2/int.json b/pipelines/basic/src/main/resources/p4c-out/bmv2/int.json
index 13a1d41..f83c2ea 100644
--- a/pipelines/basic/src/main/resources/p4c-out/bmv2/int.json
+++ b/pipelines/basic/src/main/resources/p4c-out/bmv2/int.json
@@ -40,6 +40,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding_0", 5, false]
       ]
     },
@@ -388,7 +389,14 @@
   "header_unions" : [],
   "header_union_stacks" : [],
   "field_lists" : [],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -970,43 +978,85 @@
       "name" : "ingress.table0_control.table0_counter",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "ingress.table0_control.table0"
+      "binding" : "ingress.table0_control.table0",
+      "source_info" : {
+        "filename" : "include/table0.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "table0_counter"
+      }
     },
     {
       "name" : "egress.process_set_source_sink.counter_set_source",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "egress.process_set_source_sink.tb_set_source"
+      "binding" : "egress.process_set_source_sink.tb_set_source",
+      "source_info" : {
+        "filename" : "include/int_source.p4",
+        "line" : 90,
+        "column" : 50,
+        "source_fragment" : "counter_set_source"
+      }
     },
     {
       "name" : "egress.process_set_source_sink.counter_set_sink",
       "id" : 3,
       "is_direct" : true,
-      "binding" : "egress.process_set_source_sink.tb_set_sink"
+      "binding" : "egress.process_set_source_sink.tb_set_sink",
+      "source_info" : {
+        "filename" : "include/int_source.p4",
+        "line" : 91,
+        "column" : 50,
+        "source_fragment" : "counter_set_sink"
+      }
     },
     {
       "name" : "egress.process_int_source.counter_int_source",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "egress.process_int_source.tb_int_source"
+      "binding" : "egress.process_int_source.tb_int_source",
+      "source_info" : {
+        "filename" : "include/int_source.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "counter_int_source"
+      }
     },
     {
       "name" : "egress.process_int_transit.counter_int_insert",
       "id" : 5,
       "is_direct" : true,
-      "binding" : "egress.process_int_transit.tb_int_insert"
+      "binding" : "egress.process_int_transit.tb_int_insert",
+      "source_info" : {
+        "filename" : "include/int_transit.p4",
+        "line" : 25,
+        "column" : 50,
+        "source_fragment" : "counter_int_insert"
+      }
     },
     {
       "name" : "egress.process_int_transit.counter_int_inst_0003",
       "id" : 6,
       "is_direct" : true,
-      "binding" : "egress.process_int_transit.tb_int_inst_0003"
+      "binding" : "egress.process_int_transit.tb_int_inst_0003",
+      "source_info" : {
+        "filename" : "include/int_transit.p4",
+        "line" : 26,
+        "column" : 50,
+        "source_fragment" : "counter_int_inst_0003"
+      }
     },
     {
       "name" : "egress.process_int_transit.counter_int_inst_0407",
       "id" : 7,
       "is_direct" : true,
-      "binding" : "egress.process_int_transit.tb_int_inst_0407"
+      "binding" : "egress.process_int_transit.tb_int_inst_0407",
+      "source_info" : {
+        "filename" : "include/int_transit.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "counter_int_inst_0407"
+      }
     },
     {
       "name" : "egress.port_counters_egress.egress_port_counter",
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
index c7d78e8..b20a1ff 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
@@ -56,6 +56,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding", 5, false]
       ]
     },
@@ -345,6 +346,8 @@
         ["switch_id", 32, false],
         ["new_words", 8, false],
         ["new_bytes", 16, false],
+        ["ig_tstamp", 32, false],
+        ["eg_tstamp", 32, false],
         ["_padding_1", 5, false]
       ]
     }
@@ -614,7 +617,14 @@
       "elements" : []
     }
   ],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -1529,85 +1539,169 @@
       "name" : "FabricIngress.spgw_ingress.ue_counter",
       "id" : 0,
       "is_direct" : true,
-      "binding" : "FabricIngress.spgw_ingress.dl_sess_lookup"
+      "binding" : "FabricIngress.spgw_ingress.dl_sess_lookup",
+      "source_info" : {
+        "filename" : "include/spgw.p4",
+        "line" : 51,
+        "column" : 50,
+        "source_fragment" : "ue_counter"
+      }
     },
     {
       "name" : "FabricIngress.process_set_source_sink.counter_set_source",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "FabricIngress.process_set_source_sink.tb_set_source"
+      "binding" : "FabricIngress.process_set_source_sink.tb_set_source",
+      "source_info" : {
+        "filename" : "include/int/int_main.p4",
+        "line" : 39,
+        "column" : 50,
+        "source_fragment" : "counter_set_source"
+      }
     },
     {
       "name" : "FabricIngress.process_set_source_sink.counter_set_sink",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "FabricIngress.process_set_source_sink.tb_set_sink"
+      "binding" : "FabricIngress.process_set_source_sink.tb_set_sink",
+      "source_info" : {
+        "filename" : "include/int/int_main.p4",
+        "line" : 58,
+        "column" : 50,
+        "source_fragment" : "counter_set_sink"
+      }
     },
     {
       "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
       "id" : 3,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.ingress_port_vlan"
+      "binding" : "FabricIngress.filtering.ingress_port_vlan",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "ingress_port_vlan_counter"
+      }
     },
     {
       "name" : "FabricIngress.filtering.fwd_classifier_counter",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.fwd_classifier"
+      "binding" : "FabricIngress.filtering.fwd_classifier",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 96,
+        "column" : 50,
+        "source_fragment" : "fwd_classifier_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.bridging_counter",
       "id" : 5,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.bridging"
+      "binding" : "FabricIngress.forwarding.bridging",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "bridging_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.mpls_counter",
       "id" : 6,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.mpls"
+      "binding" : "FabricIngress.forwarding.mpls",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 57,
+        "column" : 50,
+        "source_fragment" : "mpls_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.routing_v4_counter",
       "id" : 7,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.routing_v4"
+      "binding" : "FabricIngress.forwarding.routing_v4",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 80,
+        "column" : 50,
+        "source_fragment" : "routing_v4_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.acl_counter",
       "id" : 8,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.acl"
+      "binding" : "FabricIngress.forwarding.acl",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 107,
+        "column" : 50,
+        "source_fragment" : "acl_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.routing_v6_counter",
       "id" : 9,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.routing_v6"
+      "binding" : "FabricIngress.forwarding.routing_v6",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 171,
+        "column" : 50,
+        "source_fragment" : "routing_v6_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.vlan_meta_counter",
       "id" : 10,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.vlan_meta"
+      "binding" : "FabricIngress.next.vlan_meta",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 58,
+        "column" : 50,
+        "source_fragment" : "vlan_meta_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.simple_counter",
       "id" : 11,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.simple"
+      "binding" : "FabricIngress.next.simple",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 82,
+        "column" : 50,
+        "source_fragment" : "simple_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.hashed_counter",
       "id" : 12,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.hashed"
+      "binding" : "FabricIngress.next.hashed",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 146,
+        "column" : 50,
+        "source_fragment" : "hashed_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.multicast_counter",
       "id" : 13,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.multicast"
+      "binding" : "FabricIngress.next.multicast",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 199,
+        "column" : 50,
+        "source_fragment" : "multicast_counter"
+      }
     },
     {
       "name" : "FabricIngress.port_counters_control.egress_port_counter",
@@ -1637,13 +1731,25 @@
       "name" : "FabricEgress.process_int_main.process_int_source.counter_int_source",
       "id" : 16,
       "is_direct" : true,
-      "binding" : "FabricEgress.process_int_main.process_int_source.tb_int_source"
+      "binding" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
+      "source_info" : {
+        "filename" : "include/int/int_source.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "counter_int_source"
+      }
     },
     {
       "name" : "FabricEgress.egress_next.egress_vlan_counter",
       "id" : 17,
       "is_direct" : true,
-      "binding" : "FabricEgress.egress_next.egress_vlan"
+      "binding" : "FabricEgress.egress_next.egress_vlan",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 250,
+        "column" : 50,
+        "source_fragment" : "egress_vlan_counter"
+      }
     }
   ],
   "register_arrays" : [],
@@ -2278,7 +2384,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 91,
+            "line" : 99,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -2942,7 +3048,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3018,7 +3124,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3133,7 +3239,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3209,7 +3315,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3501,7 +3607,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3577,7 +3683,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3692,7 +3798,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3768,7 +3874,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3886,7 +3992,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 54,
+            "line" : 55,
             "column" : 50,
             "source_fragment" : "hdr.gtpu_ipv4"
           }
@@ -3901,7 +4007,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 54,
+            "line" : 55,
             "column" : 65,
             "source_fragment" : "hdr.gtpu_udp"
           }
@@ -4192,7 +4298,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 121,
+            "line" : 129,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -4278,7 +4384,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 122,
+            "line" : 130,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -4304,7 +4410,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 120,
+            "line" : 128,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -4475,7 +4581,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 111,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "7; ..."
           }
@@ -4501,7 +4607,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 94,
+            "line" : 102,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4984,7 +5090,13 @@
               "type" : "hexstr",
               "value" : "0x1"
             }
-          ]
+          ],
+          "source_info" : {
+            "filename" : "include/int/int_main.p4",
+            "line" : 85,
+            "column" : 12,
+            "source_fragment" : "clone(CloneType.I2E, REPORT_MIRROR_SESSION_ID)"
+          }
         }
       ]
     },
@@ -5131,7 +5243,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 103,
+            "line" : 111,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -5287,7 +5399,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 124,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -5306,7 +5418,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 100,
+            "line" : 108,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -5740,7 +5852,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 131,
+            "line" : 139,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -6158,7 +6270,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 127,
+            "line" : 135,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -12188,7 +12300,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 94,
+            "line" : 102,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -12416,7 +12528,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 100,
+            "line" : 108,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -12602,7 +12714,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 137,
+            "line" : 145,
             "column" : 31,
             "source_fragment" : "0; ..."
           }
@@ -12697,7 +12809,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 141,
+            "line" : 149,
             "column" : 21,
             "source_fragment" : "1; ..."
           }
@@ -13300,7 +13412,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 374,
+            "line" : 376,
             "column" : 12,
             "source_fragment" : "return"
           }
@@ -13349,7 +13461,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 382,
+            "line" : 384,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.total_len = hdr.ipv4.total_len + fmeta.int_meta.new_bytes"
           }
@@ -13398,7 +13510,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 379,
+            "line" : 381,
             "column" : 8,
             "source_fragment" : "hdr.int_header.total_hop_cnt = hdr.int_header.total_hop_cnt + 1"
           }
@@ -13447,7 +13559,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 385,
+            "line" : 387,
             "column" : 12,
             "source_fragment" : "hdr.udp.len = hdr.udp.len + fmeta.int_meta.new_bytes"
           }
@@ -13496,7 +13608,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 388,
+            "line" : 390,
             "column" : 12,
             "source_fragment" : "hdr.intl4_shim.len_words = hdr.intl4_shim.len_words + fmeta.int_meta.new_words"
           }
@@ -14952,6 +15064,12 @@
         {
           "name" : "FabricIngress.next.ecmp_selector",
           "id" : 0,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 145,
+            "column" : 55,
+            "source_fragment" : "ecmp_selector"
+          },
           "max_size" : 64,
           "selector" : {
             "algo" : "crc16",
@@ -15578,7 +15696,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 79,
+        "line" : 80,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
@@ -15885,7 +16003,7 @@
           "id" : 59,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 284,
+            "line" : 286,
             "column" : 10,
             "source_fragment" : "tb_int_inst_0003"
           },
@@ -15899,7 +16017,7 @@
           ],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 16,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
@@ -15933,6 +16051,12 @@
           },
           "entries" : [
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 310,
+                "column" : 12,
+                "source_fragment" : "(0x0) : int_set_header_0003_i0()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -15946,6 +16070,12 @@
               "priority" : 1
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 311,
+                "column" : 12,
+                "source_fragment" : "(0x1) : int_set_header_0003_i1()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -15959,6 +16089,12 @@
               "priority" : 2
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 312,
+                "column" : 12,
+                "source_fragment" : "(0x2) : int_set_header_0003_i2()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -15972,6 +16108,12 @@
               "priority" : 3
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 313,
+                "column" : 12,
+                "source_fragment" : "(0x3) : int_set_header_0003_i3()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -15985,6 +16127,12 @@
               "priority" : 4
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 314,
+                "column" : 12,
+                "source_fragment" : "(0x4) : int_set_header_0003_i4()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -15998,6 +16146,12 @@
               "priority" : 5
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 315,
+                "column" : 12,
+                "source_fragment" : "(0x5) : int_set_header_0003_i5()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16011,6 +16165,12 @@
               "priority" : 6
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 316,
+                "column" : 12,
+                "source_fragment" : "(0x6) : int_set_header_0003_i6()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16024,6 +16184,12 @@
               "priority" : 7
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 317,
+                "column" : 12,
+                "source_fragment" : "(0x7) : int_set_header_0003_i7()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16037,6 +16203,12 @@
               "priority" : 8
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 318,
+                "column" : 12,
+                "source_fragment" : "(0x8) : int_set_header_0003_i8()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16050,6 +16222,12 @@
               "priority" : 9
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 319,
+                "column" : 12,
+                "source_fragment" : "(0x9) : int_set_header_0003_i9()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16063,6 +16241,12 @@
               "priority" : 10
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 320,
+                "column" : 12,
+                "source_fragment" : "(0xA) : int_set_header_0003_i10()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16076,6 +16260,12 @@
               "priority" : 11
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 321,
+                "column" : 12,
+                "source_fragment" : "(0xB) : int_set_header_0003_i11()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16089,6 +16279,12 @@
               "priority" : 12
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 322,
+                "column" : 12,
+                "source_fragment" : "(0xC) : int_set_header_0003_i12()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16102,6 +16298,12 @@
               "priority" : 13
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 323,
+                "column" : 12,
+                "source_fragment" : "(0xD) : int_set_header_0003_i13()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16115,6 +16317,12 @@
               "priority" : 14
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 324,
+                "column" : 12,
+                "source_fragment" : "(0xE) : int_set_header_0003_i14()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16128,6 +16336,12 @@
               "priority" : 15
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 325,
+                "column" : 12,
+                "source_fragment" : "(0xF) : int_set_header_0003_i15()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16147,7 +16361,7 @@
           "id" : 60,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 328,
+            "line" : 330,
             "column" : 10,
             "source_fragment" : "tb_int_inst_0407"
           },
@@ -16161,7 +16375,7 @@
           ],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 16,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
@@ -16195,6 +16409,12 @@
           },
           "entries" : [
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 354,
+                "column" : 12,
+                "source_fragment" : "(0x0) : int_set_header_0407_i0()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16208,6 +16428,12 @@
               "priority" : 1
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 355,
+                "column" : 12,
+                "source_fragment" : "(0x1) : int_set_header_0407_i1()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16221,6 +16447,12 @@
               "priority" : 2
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 356,
+                "column" : 12,
+                "source_fragment" : "(0x2) : int_set_header_0407_i2()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16234,6 +16466,12 @@
               "priority" : 3
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 357,
+                "column" : 12,
+                "source_fragment" : "(0x3) : int_set_header_0407_i3()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16247,6 +16485,12 @@
               "priority" : 4
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 358,
+                "column" : 12,
+                "source_fragment" : "(0x4) : int_set_header_0407_i4()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16260,6 +16504,12 @@
               "priority" : 5
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 359,
+                "column" : 12,
+                "source_fragment" : "(0x5) : int_set_header_0407_i5()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16273,6 +16523,12 @@
               "priority" : 6
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 360,
+                "column" : 12,
+                "source_fragment" : "(0x6) : int_set_header_0407_i6()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16286,6 +16542,12 @@
               "priority" : 7
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 361,
+                "column" : 12,
+                "source_fragment" : "(0x7) : int_set_header_0407_i7()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16299,6 +16561,12 @@
               "priority" : 8
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 362,
+                "column" : 12,
+                "source_fragment" : "(0x8) : int_set_header_0407_i8()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16312,6 +16580,12 @@
               "priority" : 9
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 363,
+                "column" : 12,
+                "source_fragment" : "(0x9) : int_set_header_0407_i9()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16325,6 +16599,12 @@
               "priority" : 10
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 364,
+                "column" : 12,
+                "source_fragment" : "(0xA) : int_set_header_0407_i10()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16338,6 +16618,12 @@
               "priority" : 11
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 365,
+                "column" : 12,
+                "source_fragment" : "(0xB) : int_set_header_0407_i11()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16351,6 +16637,12 @@
               "priority" : 12
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 366,
+                "column" : 12,
+                "source_fragment" : "(0xC) : int_set_header_0407_i12()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16364,6 +16656,12 @@
               "priority" : 13
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 367,
+                "column" : 12,
+                "source_fragment" : "(0xD) : int_set_header_0407_i13()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16377,6 +16675,12 @@
               "priority" : 14
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 368,
+                "column" : 12,
+                "source_fragment" : "(0xE) : int_set_header_0407_i14()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16390,6 +16694,12 @@
               "priority" : 15
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 369,
+                "column" : 12,
+                "source_fragment" : "(0xF) : int_set_header_0407_i15()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -16964,7 +17274,7 @@
           "id" : 32,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 373,
+            "line" : 375,
             "column" : 12,
             "source_fragment" : "fmeta.int_meta.transit == false"
           },
@@ -17021,7 +17331,7 @@
           "id" : 34,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 381,
+            "line" : 383,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -17044,7 +17354,7 @@
           "id" : 35,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 384,
+            "line" : 386,
             "column" : 12,
             "source_fragment" : "hdr.udp.isValid()"
           },
@@ -17067,7 +17377,7 @@
           "id" : 36,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 387,
+            "line" : 389,
             "column" : 12,
             "source_fragment" : "hdr.intl4_shim.isValid()"
           },
@@ -17151,6 +17461,12 @@
     {
       "name" : "cksum",
       "id" : 0,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 28,
+        "column" : 8,
+        "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc",
@@ -17169,6 +17485,12 @@
     {
       "name" : "cksum_0",
       "id" : 1,
+      "source_info" : {
+        "filename" : "include/spgw.p4",
+        "line" : 237,
+        "column" : 8,
+        "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
+      },
       "target" : ["gtpu_ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_0",
@@ -17187,6 +17509,12 @@
     {
       "name" : "cksum_1",
       "id" : 2,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 57,
+        "column" : 8,
+        "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_1",
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
index 293212f..4f390ee 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
@@ -50,6 +50,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding", 5, false]
       ]
     },
@@ -283,6 +284,8 @@
         ["switch_id", 32, false],
         ["new_words", 8, false],
         ["new_bytes", 16, false],
+        ["ig_tstamp", 32, false],
+        ["eg_tstamp", 32, false],
         ["_padding_0", 5, false]
       ]
     }
@@ -469,7 +472,14 @@
   "header_unions" : [],
   "header_union_stacks" : [],
   "field_lists" : [],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -1016,67 +1026,133 @@
       "name" : "FabricIngress.process_set_source_sink.counter_set_source",
       "id" : 0,
       "is_direct" : true,
-      "binding" : "FabricIngress.process_set_source_sink.tb_set_source"
+      "binding" : "FabricIngress.process_set_source_sink.tb_set_source",
+      "source_info" : {
+        "filename" : "include/int/int_main.p4",
+        "line" : 39,
+        "column" : 50,
+        "source_fragment" : "counter_set_source"
+      }
     },
     {
       "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.ingress_port_vlan"
+      "binding" : "FabricIngress.filtering.ingress_port_vlan",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "ingress_port_vlan_counter"
+      }
     },
     {
       "name" : "FabricIngress.filtering.fwd_classifier_counter",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.fwd_classifier"
+      "binding" : "FabricIngress.filtering.fwd_classifier",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 96,
+        "column" : 50,
+        "source_fragment" : "fwd_classifier_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.bridging_counter",
       "id" : 3,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.bridging"
+      "binding" : "FabricIngress.forwarding.bridging",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "bridging_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.mpls_counter",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.mpls"
+      "binding" : "FabricIngress.forwarding.mpls",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 57,
+        "column" : 50,
+        "source_fragment" : "mpls_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.routing_v4_counter",
       "id" : 5,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.routing_v4"
+      "binding" : "FabricIngress.forwarding.routing_v4",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 80,
+        "column" : 50,
+        "source_fragment" : "routing_v4_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.acl_counter",
       "id" : 6,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.acl"
+      "binding" : "FabricIngress.forwarding.acl",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 107,
+        "column" : 50,
+        "source_fragment" : "acl_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.vlan_meta_counter",
       "id" : 7,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.vlan_meta"
+      "binding" : "FabricIngress.next.vlan_meta",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 58,
+        "column" : 50,
+        "source_fragment" : "vlan_meta_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.simple_counter",
       "id" : 8,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.simple"
+      "binding" : "FabricIngress.next.simple",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 82,
+        "column" : 50,
+        "source_fragment" : "simple_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.hashed_counter",
       "id" : 9,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.hashed"
+      "binding" : "FabricIngress.next.hashed",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 146,
+        "column" : 50,
+        "source_fragment" : "hashed_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.multicast_counter",
       "id" : 10,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.multicast"
+      "binding" : "FabricIngress.next.multicast",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 199,
+        "column" : 50,
+        "source_fragment" : "multicast_counter"
+      }
     },
     {
       "name" : "FabricIngress.port_counters_control.egress_port_counter",
@@ -1106,13 +1182,25 @@
       "name" : "FabricEgress.process_int_main.process_int_source.counter_int_source",
       "id" : 13,
       "is_direct" : true,
-      "binding" : "FabricEgress.process_int_main.process_int_source.tb_int_source"
+      "binding" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
+      "source_info" : {
+        "filename" : "include/int/int_source.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "counter_int_source"
+      }
     },
     {
       "name" : "FabricEgress.egress_next.egress_vlan_counter",
       "id" : 14,
       "is_direct" : true,
-      "binding" : "FabricEgress.egress_next.egress_vlan"
+      "binding" : "FabricEgress.egress_next.egress_vlan",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 250,
+        "column" : 50,
+        "source_fragment" : "egress_vlan_counter"
+      }
     }
   ],
   "register_arrays" : [],
@@ -1470,7 +1558,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 91,
+            "line" : 99,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -2103,7 +2191,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2179,7 +2267,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2294,7 +2382,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2370,7 +2458,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2662,7 +2750,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2738,7 +2826,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2853,7 +2941,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2929,7 +3017,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3145,7 +3233,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 111,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "7; ..."
           }
@@ -3171,7 +3259,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 94,
+            "line" : 102,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3743,7 +3831,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 131,
+            "line" : 139,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -4161,7 +4249,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 127,
+            "line" : 135,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -10280,7 +10368,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 374,
+            "line" : 376,
             "column" : 12,
             "source_fragment" : "return"
           }
@@ -10329,7 +10417,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 382,
+            "line" : 384,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.total_len = hdr.ipv4.total_len + fmeta.int_meta.new_bytes"
           }
@@ -10378,7 +10466,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 379,
+            "line" : 381,
             "column" : 8,
             "source_fragment" : "hdr.int_header.total_hop_cnt = hdr.int_header.total_hop_cnt + 1"
           }
@@ -10427,7 +10515,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 385,
+            "line" : 387,
             "column" : 12,
             "source_fragment" : "hdr.udp.len = hdr.udp.len + fmeta.int_meta.new_bytes"
           }
@@ -10476,7 +10564,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 388,
+            "line" : 390,
             "column" : 12,
             "source_fragment" : "hdr.intl4_shim.len_words = hdr.intl4_shim.len_words + fmeta.int_meta.new_words"
           }
@@ -11370,6 +11458,12 @@
         {
           "name" : "FabricIngress.next.ecmp_selector",
           "id" : 0,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 145,
+            "column" : 55,
+            "source_fragment" : "ecmp_selector"
+          },
           "max_size" : 64,
           "selector" : {
             "algo" : "crc16",
@@ -11743,7 +11837,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 79,
+        "line" : 80,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
@@ -12027,7 +12121,7 @@
           "id" : 36,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 284,
+            "line" : 286,
             "column" : 10,
             "source_fragment" : "tb_int_inst_0003"
           },
@@ -12041,7 +12135,7 @@
           ],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 16,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
@@ -12075,6 +12169,12 @@
           },
           "entries" : [
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 310,
+                "column" : 12,
+                "source_fragment" : "(0x0) : int_set_header_0003_i0()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12088,6 +12188,12 @@
               "priority" : 1
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 311,
+                "column" : 12,
+                "source_fragment" : "(0x1) : int_set_header_0003_i1()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12101,6 +12207,12 @@
               "priority" : 2
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 312,
+                "column" : 12,
+                "source_fragment" : "(0x2) : int_set_header_0003_i2()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12114,6 +12226,12 @@
               "priority" : 3
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 313,
+                "column" : 12,
+                "source_fragment" : "(0x3) : int_set_header_0003_i3()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12127,6 +12245,12 @@
               "priority" : 4
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 314,
+                "column" : 12,
+                "source_fragment" : "(0x4) : int_set_header_0003_i4()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12140,6 +12264,12 @@
               "priority" : 5
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 315,
+                "column" : 12,
+                "source_fragment" : "(0x5) : int_set_header_0003_i5()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12153,6 +12283,12 @@
               "priority" : 6
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 316,
+                "column" : 12,
+                "source_fragment" : "(0x6) : int_set_header_0003_i6()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12166,6 +12302,12 @@
               "priority" : 7
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 317,
+                "column" : 12,
+                "source_fragment" : "(0x7) : int_set_header_0003_i7()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12179,6 +12321,12 @@
               "priority" : 8
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 318,
+                "column" : 12,
+                "source_fragment" : "(0x8) : int_set_header_0003_i8()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12192,6 +12340,12 @@
               "priority" : 9
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 319,
+                "column" : 12,
+                "source_fragment" : "(0x9) : int_set_header_0003_i9()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12205,6 +12359,12 @@
               "priority" : 10
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 320,
+                "column" : 12,
+                "source_fragment" : "(0xA) : int_set_header_0003_i10()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12218,6 +12378,12 @@
               "priority" : 11
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 321,
+                "column" : 12,
+                "source_fragment" : "(0xB) : int_set_header_0003_i11()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12231,6 +12397,12 @@
               "priority" : 12
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 322,
+                "column" : 12,
+                "source_fragment" : "(0xC) : int_set_header_0003_i12()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12244,6 +12416,12 @@
               "priority" : 13
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 323,
+                "column" : 12,
+                "source_fragment" : "(0xD) : int_set_header_0003_i13()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12257,6 +12435,12 @@
               "priority" : 14
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 324,
+                "column" : 12,
+                "source_fragment" : "(0xE) : int_set_header_0003_i14()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12270,6 +12454,12 @@
               "priority" : 15
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 325,
+                "column" : 12,
+                "source_fragment" : "(0xF) : int_set_header_0003_i15()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12289,7 +12479,7 @@
           "id" : 37,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 328,
+            "line" : 330,
             "column" : 10,
             "source_fragment" : "tb_int_inst_0407"
           },
@@ -12303,7 +12493,7 @@
           ],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 16,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
@@ -12337,6 +12527,12 @@
           },
           "entries" : [
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 354,
+                "column" : 12,
+                "source_fragment" : "(0x0) : int_set_header_0407_i0()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12350,6 +12546,12 @@
               "priority" : 1
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 355,
+                "column" : 12,
+                "source_fragment" : "(0x1) : int_set_header_0407_i1()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12363,6 +12565,12 @@
               "priority" : 2
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 356,
+                "column" : 12,
+                "source_fragment" : "(0x2) : int_set_header_0407_i2()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12376,6 +12584,12 @@
               "priority" : 3
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 357,
+                "column" : 12,
+                "source_fragment" : "(0x3) : int_set_header_0407_i3()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12389,6 +12603,12 @@
               "priority" : 4
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 358,
+                "column" : 12,
+                "source_fragment" : "(0x4) : int_set_header_0407_i4()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12402,6 +12622,12 @@
               "priority" : 5
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 359,
+                "column" : 12,
+                "source_fragment" : "(0x5) : int_set_header_0407_i5()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12415,6 +12641,12 @@
               "priority" : 6
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 360,
+                "column" : 12,
+                "source_fragment" : "(0x6) : int_set_header_0407_i6()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12428,6 +12660,12 @@
               "priority" : 7
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 361,
+                "column" : 12,
+                "source_fragment" : "(0x7) : int_set_header_0407_i7()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12441,6 +12679,12 @@
               "priority" : 8
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 362,
+                "column" : 12,
+                "source_fragment" : "(0x8) : int_set_header_0407_i8()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12454,6 +12698,12 @@
               "priority" : 9
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 363,
+                "column" : 12,
+                "source_fragment" : "(0x9) : int_set_header_0407_i9()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12467,6 +12717,12 @@
               "priority" : 10
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 364,
+                "column" : 12,
+                "source_fragment" : "(0xA) : int_set_header_0407_i10()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12480,6 +12736,12 @@
               "priority" : 11
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 365,
+                "column" : 12,
+                "source_fragment" : "(0xB) : int_set_header_0407_i11()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12493,6 +12755,12 @@
               "priority" : 12
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 366,
+                "column" : 12,
+                "source_fragment" : "(0xC) : int_set_header_0407_i12()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12506,6 +12774,12 @@
               "priority" : 13
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 367,
+                "column" : 12,
+                "source_fragment" : "(0xD) : int_set_header_0407_i13()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12519,6 +12793,12 @@
               "priority" : 14
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 368,
+                "column" : 12,
+                "source_fragment" : "(0xE) : int_set_header_0407_i14()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -12532,6 +12812,12 @@
               "priority" : 15
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 369,
+                "column" : 12,
+                "source_fragment" : "(0xF) : int_set_header_0407_i15()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -13004,7 +13290,7 @@
           "id" : 21,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 373,
+            "line" : 375,
             "column" : 12,
             "source_fragment" : "fmeta.int_meta.transit == false"
           },
@@ -13061,7 +13347,7 @@
           "id" : 23,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 381,
+            "line" : 383,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -13084,7 +13370,7 @@
           "id" : 24,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 384,
+            "line" : 386,
             "column" : 12,
             "source_fragment" : "hdr.udp.isValid()"
           },
@@ -13107,7 +13393,7 @@
           "id" : 25,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 387,
+            "line" : 389,
             "column" : 12,
             "source_fragment" : "hdr.intl4_shim.isValid()"
           },
@@ -13132,6 +13418,12 @@
     {
       "name" : "cksum",
       "id" : 0,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 28,
+        "column" : 8,
+        "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc",
@@ -13150,6 +13442,12 @@
     {
       "name" : "cksum_0",
       "id" : 1,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 57,
+        "column" : 8,
+        "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_0",
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
index 97da4eb..a4cce10 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
@@ -55,6 +55,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding", 5, false]
       ]
     },
@@ -315,6 +316,8 @@
         ["switch_id", 32, false],
         ["new_words", 8, false],
         ["new_bytes", 16, false],
+        ["ig_tstamp", 32, false],
+        ["eg_tstamp", 32, false],
         ["_padding_1", 5, false]
       ]
     }
@@ -543,7 +546,14 @@
   "header_unions" : [],
   "header_union_stacks" : [],
   "field_lists" : [],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -1284,73 +1294,145 @@
       "name" : "FabricIngress.spgw_ingress.ue_counter",
       "id" : 0,
       "is_direct" : true,
-      "binding" : "FabricIngress.spgw_ingress.dl_sess_lookup"
+      "binding" : "FabricIngress.spgw_ingress.dl_sess_lookup",
+      "source_info" : {
+        "filename" : "include/spgw.p4",
+        "line" : 51,
+        "column" : 50,
+        "source_fragment" : "ue_counter"
+      }
     },
     {
       "name" : "FabricIngress.process_set_source_sink.counter_set_source",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "FabricIngress.process_set_source_sink.tb_set_source"
+      "binding" : "FabricIngress.process_set_source_sink.tb_set_source",
+      "source_info" : {
+        "filename" : "include/int/int_main.p4",
+        "line" : 39,
+        "column" : 50,
+        "source_fragment" : "counter_set_source"
+      }
     },
     {
       "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.ingress_port_vlan"
+      "binding" : "FabricIngress.filtering.ingress_port_vlan",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "ingress_port_vlan_counter"
+      }
     },
     {
       "name" : "FabricIngress.filtering.fwd_classifier_counter",
       "id" : 3,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.fwd_classifier"
+      "binding" : "FabricIngress.filtering.fwd_classifier",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 96,
+        "column" : 50,
+        "source_fragment" : "fwd_classifier_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.bridging_counter",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.bridging"
+      "binding" : "FabricIngress.forwarding.bridging",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "bridging_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.mpls_counter",
       "id" : 5,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.mpls"
+      "binding" : "FabricIngress.forwarding.mpls",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 57,
+        "column" : 50,
+        "source_fragment" : "mpls_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.routing_v4_counter",
       "id" : 6,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.routing_v4"
+      "binding" : "FabricIngress.forwarding.routing_v4",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 80,
+        "column" : 50,
+        "source_fragment" : "routing_v4_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.acl_counter",
       "id" : 7,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.acl"
+      "binding" : "FabricIngress.forwarding.acl",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 107,
+        "column" : 50,
+        "source_fragment" : "acl_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.vlan_meta_counter",
       "id" : 8,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.vlan_meta"
+      "binding" : "FabricIngress.next.vlan_meta",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 58,
+        "column" : 50,
+        "source_fragment" : "vlan_meta_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.simple_counter",
       "id" : 9,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.simple"
+      "binding" : "FabricIngress.next.simple",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 82,
+        "column" : 50,
+        "source_fragment" : "simple_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.hashed_counter",
       "id" : 10,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.hashed"
+      "binding" : "FabricIngress.next.hashed",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 146,
+        "column" : 50,
+        "source_fragment" : "hashed_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.multicast_counter",
       "id" : 11,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.multicast"
+      "binding" : "FabricIngress.next.multicast",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 199,
+        "column" : 50,
+        "source_fragment" : "multicast_counter"
+      }
     },
     {
       "name" : "FabricIngress.port_counters_control.egress_port_counter",
@@ -1380,13 +1462,25 @@
       "name" : "FabricEgress.process_int_main.process_int_source.counter_int_source",
       "id" : 14,
       "is_direct" : true,
-      "binding" : "FabricEgress.process_int_main.process_int_source.tb_int_source"
+      "binding" : "FabricEgress.process_int_main.process_int_source.tb_int_source",
+      "source_info" : {
+        "filename" : "include/int/int_source.p4",
+        "line" : 27,
+        "column" : 50,
+        "source_fragment" : "counter_int_source"
+      }
     },
     {
       "name" : "FabricEgress.egress_next.egress_vlan_counter",
       "id" : 15,
       "is_direct" : true,
-      "binding" : "FabricEgress.egress_next.egress_vlan"
+      "binding" : "FabricEgress.egress_next.egress_vlan",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 250,
+        "column" : 50,
+        "source_fragment" : "egress_vlan_counter"
+      }
     }
   ],
   "register_arrays" : [],
@@ -1973,7 +2067,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 91,
+            "line" : 99,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -2606,7 +2700,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2682,7 +2776,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2797,7 +2891,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2873,7 +2967,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3165,7 +3259,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3241,7 +3335,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3356,7 +3450,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3432,7 +3526,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3550,7 +3644,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 54,
+            "line" : 55,
             "column" : 50,
             "source_fragment" : "hdr.gtpu_ipv4"
           }
@@ -3565,7 +3659,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 54,
+            "line" : 55,
             "column" : 65,
             "source_fragment" : "hdr.gtpu_udp"
           }
@@ -3856,7 +3950,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 121,
+            "line" : 129,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -3942,7 +4036,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 122,
+            "line" : 130,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -3968,7 +4062,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 120,
+            "line" : 128,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -4139,7 +4233,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 111,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "7; ..."
           }
@@ -4165,7 +4259,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 94,
+            "line" : 102,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4720,7 +4814,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 103,
+            "line" : 111,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -4876,7 +4970,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 124,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -4895,7 +4989,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 100,
+            "line" : 108,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -5329,7 +5423,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 131,
+            "line" : 139,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -5747,7 +5841,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 127,
+            "line" : 135,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -11866,7 +11960,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 374,
+            "line" : 376,
             "column" : 12,
             "source_fragment" : "return"
           }
@@ -11915,7 +12009,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 382,
+            "line" : 384,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.total_len = hdr.ipv4.total_len + fmeta.int_meta.new_bytes"
           }
@@ -11964,7 +12058,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 379,
+            "line" : 381,
             "column" : 8,
             "source_fragment" : "hdr.int_header.total_hop_cnt = hdr.int_header.total_hop_cnt + 1"
           }
@@ -12013,7 +12107,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 385,
+            "line" : 387,
             "column" : 12,
             "source_fragment" : "hdr.udp.len = hdr.udp.len + fmeta.int_meta.new_bytes"
           }
@@ -12062,7 +12156,7 @@
           ],
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 388,
+            "line" : 390,
             "column" : 12,
             "source_fragment" : "hdr.intl4_shim.len_words = hdr.intl4_shim.len_words + fmeta.int_meta.new_words"
           }
@@ -13398,6 +13492,12 @@
         {
           "name" : "FabricIngress.next.ecmp_selector",
           "id" : 0,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 145,
+            "column" : 55,
+            "source_fragment" : "ecmp_selector"
+          },
           "max_size" : 64,
           "selector" : {
             "algo" : "crc16",
@@ -13942,7 +14042,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 79,
+        "line" : 80,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
@@ -14249,7 +14349,7 @@
           "id" : 55,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 284,
+            "line" : 286,
             "column" : 10,
             "source_fragment" : "tb_int_inst_0003"
           },
@@ -14263,7 +14363,7 @@
           ],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 16,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
@@ -14297,6 +14397,12 @@
           },
           "entries" : [
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 310,
+                "column" : 12,
+                "source_fragment" : "(0x0) : int_set_header_0003_i0()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14310,6 +14416,12 @@
               "priority" : 1
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 311,
+                "column" : 12,
+                "source_fragment" : "(0x1) : int_set_header_0003_i1()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14323,6 +14435,12 @@
               "priority" : 2
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 312,
+                "column" : 12,
+                "source_fragment" : "(0x2) : int_set_header_0003_i2()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14336,6 +14454,12 @@
               "priority" : 3
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 313,
+                "column" : 12,
+                "source_fragment" : "(0x3) : int_set_header_0003_i3()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14349,6 +14473,12 @@
               "priority" : 4
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 314,
+                "column" : 12,
+                "source_fragment" : "(0x4) : int_set_header_0003_i4()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14362,6 +14492,12 @@
               "priority" : 5
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 315,
+                "column" : 12,
+                "source_fragment" : "(0x5) : int_set_header_0003_i5()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14375,6 +14511,12 @@
               "priority" : 6
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 316,
+                "column" : 12,
+                "source_fragment" : "(0x6) : int_set_header_0003_i6()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14388,6 +14530,12 @@
               "priority" : 7
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 317,
+                "column" : 12,
+                "source_fragment" : "(0x7) : int_set_header_0003_i7()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14401,6 +14549,12 @@
               "priority" : 8
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 318,
+                "column" : 12,
+                "source_fragment" : "(0x8) : int_set_header_0003_i8()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14414,6 +14568,12 @@
               "priority" : 9
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 319,
+                "column" : 12,
+                "source_fragment" : "(0x9) : int_set_header_0003_i9()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14427,6 +14587,12 @@
               "priority" : 10
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 320,
+                "column" : 12,
+                "source_fragment" : "(0xA) : int_set_header_0003_i10()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14440,6 +14606,12 @@
               "priority" : 11
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 321,
+                "column" : 12,
+                "source_fragment" : "(0xB) : int_set_header_0003_i11()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14453,6 +14625,12 @@
               "priority" : 12
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 322,
+                "column" : 12,
+                "source_fragment" : "(0xC) : int_set_header_0003_i12()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14466,6 +14644,12 @@
               "priority" : 13
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 323,
+                "column" : 12,
+                "source_fragment" : "(0xD) : int_set_header_0003_i13()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14479,6 +14663,12 @@
               "priority" : 14
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 324,
+                "column" : 12,
+                "source_fragment" : "(0xE) : int_set_header_0003_i14()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14492,6 +14682,12 @@
               "priority" : 15
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 325,
+                "column" : 12,
+                "source_fragment" : "(0xF) : int_set_header_0003_i15()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14511,7 +14707,7 @@
           "id" : 56,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 328,
+            "line" : 330,
             "column" : 10,
             "source_fragment" : "tb_int_inst_0407"
           },
@@ -14525,7 +14721,7 @@
           ],
           "match_type" : "exact",
           "type" : "simple",
-          "max_size" : 16,
+          "max_size" : 1024,
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
@@ -14559,6 +14755,12 @@
           },
           "entries" : [
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 354,
+                "column" : 12,
+                "source_fragment" : "(0x0) : int_set_header_0407_i0()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14572,6 +14774,12 @@
               "priority" : 1
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 355,
+                "column" : 12,
+                "source_fragment" : "(0x1) : int_set_header_0407_i1()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14585,6 +14793,12 @@
               "priority" : 2
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 356,
+                "column" : 12,
+                "source_fragment" : "(0x2) : int_set_header_0407_i2()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14598,6 +14812,12 @@
               "priority" : 3
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 357,
+                "column" : 12,
+                "source_fragment" : "(0x3) : int_set_header_0407_i3()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14611,6 +14831,12 @@
               "priority" : 4
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 358,
+                "column" : 12,
+                "source_fragment" : "(0x4) : int_set_header_0407_i4()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14624,6 +14850,12 @@
               "priority" : 5
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 359,
+                "column" : 12,
+                "source_fragment" : "(0x5) : int_set_header_0407_i5()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14637,6 +14869,12 @@
               "priority" : 6
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 360,
+                "column" : 12,
+                "source_fragment" : "(0x6) : int_set_header_0407_i6()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14650,6 +14888,12 @@
               "priority" : 7
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 361,
+                "column" : 12,
+                "source_fragment" : "(0x7) : int_set_header_0407_i7()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14663,6 +14907,12 @@
               "priority" : 8
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 362,
+                "column" : 12,
+                "source_fragment" : "(0x8) : int_set_header_0407_i8()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14676,6 +14926,12 @@
               "priority" : 9
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 363,
+                "column" : 12,
+                "source_fragment" : "(0x9) : int_set_header_0407_i9()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14689,6 +14945,12 @@
               "priority" : 10
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 364,
+                "column" : 12,
+                "source_fragment" : "(0xA) : int_set_header_0407_i10()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14702,6 +14964,12 @@
               "priority" : 11
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 365,
+                "column" : 12,
+                "source_fragment" : "(0xB) : int_set_header_0407_i11()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14715,6 +14983,12 @@
               "priority" : 12
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 366,
+                "column" : 12,
+                "source_fragment" : "(0xC) : int_set_header_0407_i12()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14728,6 +15002,12 @@
               "priority" : 13
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 367,
+                "column" : 12,
+                "source_fragment" : "(0xD) : int_set_header_0407_i13()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14741,6 +15021,12 @@
               "priority" : 14
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 368,
+                "column" : 12,
+                "source_fragment" : "(0xE) : int_set_header_0407_i14()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -14754,6 +15040,12 @@
               "priority" : 15
             },
             {
+              "source_info" : {
+                "filename" : "include/int/int_transit.p4",
+                "line" : 369,
+                "column" : 12,
+                "source_fragment" : "(0xF) : int_set_header_0407_i15()"
+              },
               "match_key" : [
                 {
                   "match_type" : "exact",
@@ -15252,7 +15544,7 @@
           "id" : 29,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 373,
+            "line" : 375,
             "column" : 12,
             "source_fragment" : "fmeta.int_meta.transit == false"
           },
@@ -15309,7 +15601,7 @@
           "id" : 31,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 381,
+            "line" : 383,
             "column" : 12,
             "source_fragment" : "hdr.ipv4.isValid()"
           },
@@ -15332,7 +15624,7 @@
           "id" : 32,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 384,
+            "line" : 386,
             "column" : 12,
             "source_fragment" : "hdr.udp.isValid()"
           },
@@ -15355,7 +15647,7 @@
           "id" : 33,
           "source_info" : {
             "filename" : "include/int/int_transit.p4",
-            "line" : 387,
+            "line" : 389,
             "column" : 12,
             "source_fragment" : "hdr.intl4_shim.isValid()"
           },
@@ -15380,6 +15672,12 @@
     {
       "name" : "cksum",
       "id" : 0,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 28,
+        "column" : 8,
+        "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc",
@@ -15398,6 +15696,12 @@
     {
       "name" : "cksum_0",
       "id" : 1,
+      "source_info" : {
+        "filename" : "include/spgw.p4",
+        "line" : 237,
+        "column" : 8,
+        "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
+      },
       "target" : ["gtpu_ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_0",
@@ -15416,6 +15720,12 @@
     {
       "name" : "cksum_1",
       "id" : 2,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 57,
+        "column" : 8,
+        "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_1",
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index 2d97498..a3db0a8 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -53,6 +53,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding", 5, false]
       ]
     },
@@ -331,7 +332,14 @@
   "header_unions" : [],
   "header_union_stacks" : [],
   "field_lists" : [],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -943,67 +951,133 @@
       "name" : "FabricIngress.spgw_ingress.ue_counter",
       "id" : 0,
       "is_direct" : true,
-      "binding" : "FabricIngress.spgw_ingress.dl_sess_lookup"
+      "binding" : "FabricIngress.spgw_ingress.dl_sess_lookup",
+      "source_info" : {
+        "filename" : "include/spgw.p4",
+        "line" : 51,
+        "column" : 50,
+        "source_fragment" : "ue_counter"
+      }
     },
     {
       "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.ingress_port_vlan"
+      "binding" : "FabricIngress.filtering.ingress_port_vlan",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "ingress_port_vlan_counter"
+      }
     },
     {
       "name" : "FabricIngress.filtering.fwd_classifier_counter",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.fwd_classifier"
+      "binding" : "FabricIngress.filtering.fwd_classifier",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 96,
+        "column" : 50,
+        "source_fragment" : "fwd_classifier_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.bridging_counter",
       "id" : 3,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.bridging"
+      "binding" : "FabricIngress.forwarding.bridging",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "bridging_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.mpls_counter",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.mpls"
+      "binding" : "FabricIngress.forwarding.mpls",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 57,
+        "column" : 50,
+        "source_fragment" : "mpls_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.routing_v4_counter",
       "id" : 5,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.routing_v4"
+      "binding" : "FabricIngress.forwarding.routing_v4",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 80,
+        "column" : 50,
+        "source_fragment" : "routing_v4_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.acl_counter",
       "id" : 6,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.acl"
+      "binding" : "FabricIngress.forwarding.acl",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 107,
+        "column" : 50,
+        "source_fragment" : "acl_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.vlan_meta_counter",
       "id" : 7,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.vlan_meta"
+      "binding" : "FabricIngress.next.vlan_meta",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 58,
+        "column" : 50,
+        "source_fragment" : "vlan_meta_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.simple_counter",
       "id" : 8,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.simple"
+      "binding" : "FabricIngress.next.simple",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 82,
+        "column" : 50,
+        "source_fragment" : "simple_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.hashed_counter",
       "id" : 9,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.hashed"
+      "binding" : "FabricIngress.next.hashed",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 146,
+        "column" : 50,
+        "source_fragment" : "hashed_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.multicast_counter",
       "id" : 10,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.multicast"
+      "binding" : "FabricIngress.next.multicast",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 199,
+        "column" : 50,
+        "source_fragment" : "multicast_counter"
+      }
     },
     {
       "name" : "FabricIngress.port_counters_control.egress_port_counter",
@@ -1033,7 +1107,13 @@
       "name" : "FabricEgress.egress_next.egress_vlan_counter",
       "id" : 13,
       "is_direct" : true,
-      "binding" : "FabricEgress.egress_next.egress_vlan"
+      "binding" : "FabricEgress.egress_next.egress_vlan",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 250,
+        "column" : 50,
+        "source_fragment" : "egress_vlan_counter"
+      }
     }
   ],
   "register_arrays" : [],
@@ -1578,7 +1658,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 91,
+            "line" : 99,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -2211,7 +2291,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2287,7 +2367,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2402,7 +2482,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2478,7 +2558,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2770,7 +2850,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2846,7 +2926,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2961,7 +3041,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3037,7 +3117,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3155,7 +3235,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 54,
+            "line" : 55,
             "column" : 50,
             "source_fragment" : "hdr.gtpu_ipv4"
           }
@@ -3170,7 +3250,7 @@
           ],
           "source_info" : {
             "filename" : "fabric.p4",
-            "line" : 54,
+            "line" : 55,
             "column" : 65,
             "source_fragment" : "hdr.gtpu_udp"
           }
@@ -3461,7 +3541,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 121,
+            "line" : 129,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -3547,7 +3627,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 122,
+            "line" : 130,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -3573,7 +3653,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 120,
+            "line" : 128,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -3744,7 +3824,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 111,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "7; ..."
           }
@@ -3770,7 +3850,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 94,
+            "line" : 102,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4301,7 +4381,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 103,
+            "line" : 111,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -4457,7 +4537,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 124,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -4476,7 +4556,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 100,
+            "line" : 108,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -6255,6 +6335,12 @@
         {
           "name" : "FabricIngress.next.ecmp_selector",
           "id" : 0,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 145,
+            "column" : 55,
+            "source_fragment" : "ecmp_selector"
+          },
           "max_size" : 64,
           "selector" : {
             "algo" : "crc16",
@@ -6799,7 +6885,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 79,
+        "line" : 80,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
@@ -7221,6 +7307,12 @@
     {
       "name" : "cksum",
       "id" : 0,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 28,
+        "column" : 8,
+        "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc",
@@ -7239,6 +7331,12 @@
     {
       "name" : "cksum_0",
       "id" : 1,
+      "source_info" : {
+        "filename" : "include/spgw.p4",
+        "line" : 237,
+        "column" : 8,
+        "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
+      },
       "target" : ["gtpu_ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_0",
@@ -7257,6 +7355,12 @@
     {
       "name" : "cksum_1",
       "id" : 2,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 57,
+        "column" : 8,
+        "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_1",
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index 0623d6c..6a4bdb1 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -47,6 +47,7 @@
         ["egress_rid", 16, false],
         ["checksum_error", 1, false],
         ["recirculate_flag", 32, false],
+        ["parser_error", 32, false],
         ["_padding", 5, false]
       ]
     },
@@ -256,7 +257,14 @@
   "header_unions" : [],
   "header_union_stacks" : [],
   "field_lists" : [],
-  "errors" : [],
+  "errors" : [
+    ["NoError", 1],
+    ["PacketTooShort", 2],
+    ["NoMatch", 3],
+    ["StackOutOfBounds", 4],
+    ["HeaderTooShort", 5],
+    ["ParserTimeout", 6]
+  ],
   "enums" : [],
   "parsers" : [
     {
@@ -687,61 +695,121 @@
       "name" : "FabricIngress.filtering.ingress_port_vlan_counter",
       "id" : 0,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.ingress_port_vlan"
+      "binding" : "FabricIngress.filtering.ingress_port_vlan",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "ingress_port_vlan_counter"
+      }
     },
     {
       "name" : "FabricIngress.filtering.fwd_classifier_counter",
       "id" : 1,
       "is_direct" : true,
-      "binding" : "FabricIngress.filtering.fwd_classifier"
+      "binding" : "FabricIngress.filtering.fwd_classifier",
+      "source_info" : {
+        "filename" : "include/control/filtering.p4",
+        "line" : 96,
+        "column" : 50,
+        "source_fragment" : "fwd_classifier_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.bridging_counter",
       "id" : 2,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.bridging"
+      "binding" : "FabricIngress.forwarding.bridging",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 34,
+        "column" : 50,
+        "source_fragment" : "bridging_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.mpls_counter",
       "id" : 3,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.mpls"
+      "binding" : "FabricIngress.forwarding.mpls",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 57,
+        "column" : 50,
+        "source_fragment" : "mpls_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.routing_v4_counter",
       "id" : 4,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.routing_v4"
+      "binding" : "FabricIngress.forwarding.routing_v4",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 80,
+        "column" : 50,
+        "source_fragment" : "routing_v4_counter"
+      }
     },
     {
       "name" : "FabricIngress.forwarding.acl_counter",
       "id" : 5,
       "is_direct" : true,
-      "binding" : "FabricIngress.forwarding.acl"
+      "binding" : "FabricIngress.forwarding.acl",
+      "source_info" : {
+        "filename" : "include/control/forwarding.p4",
+        "line" : 107,
+        "column" : 50,
+        "source_fragment" : "acl_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.vlan_meta_counter",
       "id" : 6,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.vlan_meta"
+      "binding" : "FabricIngress.next.vlan_meta",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 58,
+        "column" : 50,
+        "source_fragment" : "vlan_meta_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.simple_counter",
       "id" : 7,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.simple"
+      "binding" : "FabricIngress.next.simple",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 82,
+        "column" : 50,
+        "source_fragment" : "simple_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.hashed_counter",
       "id" : 8,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.hashed"
+      "binding" : "FabricIngress.next.hashed",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 146,
+        "column" : 50,
+        "source_fragment" : "hashed_counter"
+      }
     },
     {
       "name" : "FabricIngress.next.multicast_counter",
       "id" : 9,
       "is_direct" : true,
-      "binding" : "FabricIngress.next.multicast"
+      "binding" : "FabricIngress.next.multicast",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 199,
+        "column" : 50,
+        "source_fragment" : "multicast_counter"
+      }
     },
     {
       "name" : "FabricIngress.port_counters_control.egress_port_counter",
@@ -771,7 +839,13 @@
       "name" : "FabricEgress.egress_next.egress_vlan_counter",
       "id" : 12,
       "is_direct" : true,
-      "binding" : "FabricEgress.egress_next.egress_vlan"
+      "binding" : "FabricEgress.egress_next.egress_vlan",
+      "source_info" : {
+        "filename" : "include/control/next.p4",
+        "line" : 250,
+        "column" : 50,
+        "source_fragment" : "egress_vlan_counter"
+      }
     }
   ],
   "register_arrays" : [],
@@ -1087,7 +1161,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 91,
+            "line" : 99,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -1720,7 +1794,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -1796,7 +1870,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -1911,7 +1985,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -1987,7 +2061,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2279,7 +2353,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2355,7 +2429,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2470,7 +2544,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 92,
+            "line" : 100,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2546,7 +2620,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 123,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2762,7 +2836,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 111,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "7; ..."
           }
@@ -2788,7 +2862,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 94,
+            "line" : 102,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4239,6 +4313,12 @@
         {
           "name" : "FabricIngress.next.ecmp_selector",
           "id" : 0,
+          "source_info" : {
+            "filename" : "include/control/next.p4",
+            "line" : 145,
+            "column" : 55,
+            "source_fragment" : "ecmp_selector"
+          },
           "max_size" : 64,
           "selector" : {
             "algo" : "crc16",
@@ -4612,7 +4692,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "fabric.p4",
-        "line" : 79,
+        "line" : 80,
         "column" : 8,
         "source_fragment" : "FabricEgress"
       },
@@ -4985,6 +5065,12 @@
     {
       "name" : "cksum",
       "id" : 0,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 28,
+        "column" : 8,
+        "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc",
@@ -5003,6 +5089,12 @@
     {
       "name" : "cksum_0",
       "id" : 1,
+      "source_info" : {
+        "filename" : "include/checksum.p4",
+        "line" : 57,
+        "column" : 8,
+        "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
+      },
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_0",