Update install-p4-tools.sh to use P4Runtime v1.0

Includes also various improvements to the p4vm scripts, such as:
- Choose to build VM with Ubuntu 16.04 or 18.04 (experimental)
- Allow users to specify version of protobuf and grpc to use
- Avoid building protobuf and grpc if already installed in the system
- Install Bazel 0.22

Also:
- Remove check for invalid group member weights (now PI always returns
members with weight 1)
- Re-compiled all P4 programs and fixed missing padding in controller
packet headers

Change-Id: I0e672fcebbaba63354c749f0c774af251f3cbc6c
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 795c067..f0a6139 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
@@ -13,24 +13,29 @@
         ["spgw_normalizer_hasReturned", 1, false],
         ["spgw_ingress_hasReturned", 1, false],
         ["egress_next_tmp", 1, false],
-        ["fabric_metadata_t.eth_type", 16, false],
-        ["fabric_metadata_t.ip_eth_type", 16, false],
-        ["fabric_metadata_t.vlan_id", 12, false],
-        ["fabric_metadata_t.vlan_pri", 3, false],
-        ["fabric_metadata_t.vlan_cfi", 1, false],
-        ["fabric_metadata_t.mpls_label", 20, false],
-        ["fabric_metadata_t.mpls_ttl", 8, false],
-        ["fabric_metadata_t.skip_forwarding", 1, false],
-        ["fabric_metadata_t.skip_next", 1, false],
-        ["fabric_metadata_t.fwd_type", 3, false],
-        ["fabric_metadata_t.next_id", 32, false],
-        ["fabric_metadata_t.is_multicast", 1, false],
-        ["fabric_metadata_t.is_controller_packet_out", 1, false],
-        ["fabric_metadata_t.clone_to_cpu", 1, false],
-        ["fabric_metadata_t.ip_proto", 8, false],
-        ["fabric_metadata_t.l4_sport", 16, false],
-        ["fabric_metadata_t.l4_dport", 16, false],
-        ["_padding_1", 3, false]
+        ["fabric_metadata_t._eth_type0", 16, false],
+        ["fabric_metadata_t._ip_eth_type1", 16, false],
+        ["fabric_metadata_t._vlan_id2", 12, false],
+        ["fabric_metadata_t._vlan_pri3", 3, false],
+        ["fabric_metadata_t._vlan_cfi4", 1, false],
+        ["fabric_metadata_t._mpls_label5", 20, false],
+        ["fabric_metadata_t._mpls_ttl6", 8, false],
+        ["fabric_metadata_t._skip_forwarding7", 1, false],
+        ["fabric_metadata_t._skip_next8", 1, false],
+        ["fabric_metadata_t._fwd_type9", 3, false],
+        ["fabric_metadata_t._next_id10", 32, false],
+        ["fabric_metadata_t._is_multicast11", 1, false],
+        ["fabric_metadata_t._is_controller_packet_out12", 1, false],
+        ["fabric_metadata_t._clone_to_cpu13", 1, false],
+        ["fabric_metadata_t._ip_proto14", 8, false],
+        ["fabric_metadata_t._l4_sport15", 16, false],
+        ["fabric_metadata_t._l4_dport16", 16, false],
+        ["fabric_metadata_t._spgw_direction17", 2, false],
+        ["fabric_metadata_t._spgw_ipv4_len18", 16, false],
+        ["fabric_metadata_t._spgw_teid19", 32, false],
+        ["fabric_metadata_t._spgw_s1u_enb_addr20", 32, false],
+        ["fabric_metadata_t._spgw_s1u_sgw_addr21", 32, false],
+        ["_padding_0", 1, false]
       ]
     },
     {
@@ -178,18 +183,6 @@
         ["ingress_port", 9, false],
         ["_pad", 7, false]
       ]
-    },
-    {
-      "name" : "spgw_meta_t",
-      "id" : 12,
-      "fields" : [
-        ["direction", 2, false],
-        ["ipv4_len", 16, false],
-        ["teid", 32, false],
-        ["s1u_enb_addr", 32, false],
-        ["s1u_sgw_addr", 32, false],
-        ["_padding_0", 6, false]
-      ]
     }
   ],
   "headers" : [
@@ -311,13 +304,6 @@
       "header_type" : "packet_in_header_t",
       "metadata" : false,
       "pi_omit" : true
-    },
-    {
-      "name" : "userMetadata.spgw",
-      "id" : 17,
-      "header_type" : "spgw_meta_t",
-      "metadata" : true,
-      "pi_omit" : true
     }
   ],
   "header_stacks" : [],
@@ -404,7 +390,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.eth_type"]
+                  "value" : ["scalars", "fabric_metadata_t._eth_type0"]
                 },
                 {
                   "type" : "field",
@@ -417,7 +403,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.vlan_id"]
+                  "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
                 },
                 {
                   "type" : "hexstr",
@@ -562,7 +548,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.mpls_label"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
                 },
                 {
                   "type" : "field",
@@ -575,7 +561,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
+                  "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
                 },
                 {
                   "type" : "field",
@@ -635,7 +621,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.ip_proto"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_proto14"]
                 },
                 {
                   "type" : "field",
@@ -648,7 +634,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
+                  "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
                 },
                 {
                   "type" : "hexstr",
@@ -707,7 +693,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.l4_sport"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
                 },
                 {
                   "type" : "field",
@@ -720,7 +706,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.l4_dport"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
                 },
                 {
                   "type" : "field",
@@ -756,7 +742,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.l4_sport"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
                 },
                 {
                   "type" : "field",
@@ -769,7 +755,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.l4_dport"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
                 },
                 {
                   "type" : "field",
@@ -965,7 +951,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.l4_sport"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
                 },
                 {
                   "type" : "field",
@@ -978,7 +964,7 @@
               "parameters" : [
                 {
                   "type" : "field",
-                  "value" : ["scalars", "fabric_metadata_t.l4_dport"]
+                  "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
                 },
                 {
                   "type" : "field",
@@ -1502,7 +1488,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "teid"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid19"]
             },
             {
               "type" : "runtime_data",
@@ -1512,8 +1498,8 @@
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 63,
-            "column" : 8,
-            "source_fragment" : "fabric_meta.spgw.teid = teid"
+            "column" : 30,
+            "source_fragment" : "= teid; ..."
           }
         },
         {
@@ -1521,7 +1507,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "s1u_enb_addr"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr20"]
             },
             {
               "type" : "runtime_data",
@@ -1531,8 +1517,8 @@
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 64,
-            "column" : 8,
-            "source_fragment" : "fabric_meta.spgw.s1u_enb_addr = s1u_enb_addr"
+            "column" : 38,
+            "source_fragment" : "= s1u_enb_addr; ..."
           }
         },
         {
@@ -1540,7 +1526,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "s1u_sgw_addr"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr21"]
             },
             {
               "type" : "runtime_data",
@@ -1550,8 +1536,8 @@
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 65,
-            "column" : 8,
-            "source_fragment" : "fabric_meta.spgw.s1u_sgw_addr = s1u_sgw_addr"
+            "column" : 38,
+            "source_fragment" : "= s1u_sgw_addr; ..."
           }
         }
       ]
@@ -1566,7 +1552,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
             },
             {
               "type" : "expression",
@@ -1586,8 +1572,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 36,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.skip_forwarding = true"
+            "column" : 40,
+            "source_fragment" : "= true; ..."
           }
         },
         {
@@ -1595,7 +1581,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.skip_next"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
             },
             {
               "type" : "expression",
@@ -1615,8 +1601,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 37,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.skip_next = true"
+            "column" : 34,
+            "source_fragment" : "= true; ..."
           }
         }
       ]
@@ -1642,7 +1628,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_id"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
             },
             {
               "type" : "runtime_data",
@@ -1652,8 +1638,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 47,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
+            "column" : 32,
+            "source_fragment" : "= vlan_id; ..."
           }
         }
       ]
@@ -1673,7 +1659,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+              "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
             },
             {
               "type" : "runtime_data",
@@ -1683,8 +1669,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 82,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
+            "column" : 33,
+            "source_fragment" : "= fwd_type; ..."
           }
         }
       ]
@@ -1704,7 +1690,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.next_id"]
+              "value" : ["scalars", "fabric_metadata_t._next_id10"]
             },
             {
               "type" : "runtime_data",
@@ -1714,8 +1700,8 @@
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 30,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.next_id = next_id; ..."
+            "column" : 32,
+            "source_fragment" : "= next_id; ..."
           }
         }
       ]
@@ -1735,7 +1721,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.mpls_label"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
             },
             {
               "type" : "hexstr",
@@ -1745,8 +1731,8 @@
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 62,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.mpls_label = 0"
+            "column" : 35,
+            "source_fragment" : "= 0; ..."
           }
         },
         {
@@ -1754,7 +1740,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.next_id"]
+              "value" : ["scalars", "fabric_metadata_t._next_id10"]
             },
             {
               "type" : "runtime_data",
@@ -1764,8 +1750,8 @@
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 30,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.next_id = next_id; ..."
+            "column" : 32,
+            "source_fragment" : "= next_id; ..."
           }
         }
       ]
@@ -1785,7 +1771,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.next_id"]
+              "value" : ["scalars", "fabric_metadata_t._next_id10"]
             },
             {
               "type" : "runtime_data",
@@ -1795,8 +1781,8 @@
           "source_info" : {
             "filename" : "include/control/forwarding.p4",
             "line" : 30,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.next_id = next_id; ..."
+            "column" : 32,
+            "source_fragment" : "= next_id; ..."
           }
         }
       ]
@@ -1822,7 +1808,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.next_id"]
+              "value" : ["scalars", "fabric_metadata_t._next_id10"]
             },
             {
               "type" : "runtime_data",
@@ -1832,8 +1818,8 @@
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 33,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.next_id = next_id"
+            "column" : 32,
+            "source_fragment" : "= next_id; ..."
           }
         }
       ]
@@ -1867,7 +1853,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.skip_next"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
             },
             {
               "type" : "expression",
@@ -1887,8 +1873,8 @@
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 40,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.skip_next = true"
+            "column" : 34,
+            "source_fragment" : "= true; ..."
           }
         }
       ]
@@ -1903,7 +1889,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
+              "value" : ["scalars", "fabric_metadata_t._clone_to_cpu13"]
             },
             {
               "type" : "expression",
@@ -1923,8 +1909,8 @@
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 46,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.clone_to_cpu = true"
+            "column" : 37,
+            "source_fragment" : "= true; ..."
           }
         }
       ]
@@ -1949,7 +1935,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.skip_next"]
+              "value" : ["scalars", "fabric_metadata_t._skip_next8"]
             },
             {
               "type" : "expression",
@@ -1969,8 +1955,8 @@
           "source_info" : {
             "filename" : "include/control/acl.p4",
             "line" : 52,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.skip_next = true"
+            "column" : 34,
+            "source_fragment" : "= true; ..."
           }
         }
       ]
@@ -1996,7 +1982,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_id"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
             },
             {
               "type" : "runtime_data",
@@ -2006,8 +1992,8 @@
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 70,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.vlan_id = vlan_id"
+            "column" : 32,
+            "source_fragment" : "= vlan_id; ..."
           }
         }
       ]
@@ -2058,7 +2044,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.next_id"]
+              "value" : ["scalars", "fabric_metadata_t._next_id10"]
             },
             {
               "type" : "runtime_data",
@@ -2068,8 +2054,8 @@
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 99,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.next_id = next_id"
+            "column" : 32,
+            "source_fragment" : "= next_id; ..."
           }
         }
       ]
@@ -2209,7 +2195,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.mpls_label"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
             },
             {
               "type" : "runtime_data",
@@ -2219,8 +2205,8 @@
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 46,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.mpls_label = label; ..."
+            "column" : 35,
+            "source_fragment" : "= label; ..."
           }
         },
         {
@@ -2316,7 +2302,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.is_multicast"]
+              "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
             },
             {
               "type" : "expression",
@@ -2336,8 +2322,8 @@
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 209,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.is_multicast = true"
+            "column" : 37,
+            "source_fragment" : "= true; ..."
           }
         }
       ]
@@ -2594,7 +2580,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
+              "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
             },
             {
               "type" : "expression",
@@ -2614,8 +2600,8 @@
           "source_info" : {
             "filename" : "include/control/packetio.p4",
             "line" : 27,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.is_controller_packet_out = true"
+            "column" : 53,
+            "source_fragment" : "= true; ..."
           }
         }
       ]
@@ -2630,7 +2616,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
             },
             {
               "type" : "field",
@@ -2640,8 +2626,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 103,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.eth_type = hdr.vlan_tag.eth_type"
+            "column" : 37,
+            "source_fragment" : "= hdr.vlan_tag.eth_type; ..."
           }
         },
         {
@@ -2649,7 +2635,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_id"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
             },
             {
               "type" : "field",
@@ -2659,8 +2645,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 104,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.vlan_id = hdr.vlan_tag.vlan_id"
+            "column" : 36,
+            "source_fragment" : "= hdr.vlan_tag.vlan_id; ..."
           }
         },
         {
@@ -2668,7 +2654,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
             },
             {
               "type" : "field",
@@ -2678,8 +2664,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 105,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.vlan_pri = hdr.vlan_tag.pri"
+            "column" : 37,
+            "source_fragment" : "= hdr.vlan_tag.pri; ..."
           }
         },
         {
@@ -2687,7 +2673,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
             },
             {
               "type" : "field",
@@ -2697,8 +2683,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 106,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.vlan_cfi = hdr.vlan_tag.cfi"
+            "column" : 37,
+            "source_fragment" : "= hdr.vlan_tag.cfi; ..."
           }
         }
       ]
@@ -2713,7 +2699,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
             },
             {
               "type" : "hexstr",
@@ -2723,8 +2709,8 @@
           "source_info" : {
             "filename" : "include/control/filtering.p4",
             "line" : 113,
-            "column" : 12,
-            "source_fragment" : "fabric_metadata.mpls_ttl = DEFAULT_MPLS_TTL + 1"
+            "column" : 37,
+            "source_fragment" : "= DEFAULT_MPLS_TTL + 1; ..."
           }
         }
       ]
@@ -2816,7 +2802,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "direction"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction17"]
             },
             {
               "type" : "hexstr",
@@ -2902,7 +2888,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "direction"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction17"]
             },
             {
               "type" : "hexstr",
@@ -2928,7 +2914,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "direction"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_direction17"]
             },
             {
               "type" : "hexstr",
@@ -3013,7 +2999,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "ipv4_len"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len18"]
             },
             {
               "type" : "field",
@@ -3023,8 +3009,8 @@
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 174,
-            "column" : 8,
-            "source_fragment" : "fabric_meta.spgw.ipv4_len = ipv4.total_len"
+            "column" : 34,
+            "source_fragment" : "= ipv4.total_len; ..."
           }
         }
       ]
@@ -3393,14 +3379,14 @@
             },
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "s1u_enb_addr"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_enb_addr20"]
             }
           ],
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 202,
             "column" : 8,
-            "source_fragment" : "gtpu_ipv4.dst_addr = fabric_meta.spgw.s1u_enb_addr"
+            "source_fragment" : "gtpu_ipv4.dst_addr = fabric_meta.spgw.s1u_enb_addr; ..."
           }
         },
         {
@@ -3412,14 +3398,14 @@
             },
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "s1u_sgw_addr"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_s1u_sgw_addr21"]
             }
           ],
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 203,
             "column" : 8,
-            "source_fragment" : "gtpu_ipv4.src_addr = fabric_meta.spgw.s1u_sgw_addr"
+            "source_fragment" : "gtpu_ipv4.src_addr = fabric_meta.spgw.s1u_sgw_addr; ..."
           }
         },
         {
@@ -3513,7 +3499,7 @@
                       "op" : "+",
                       "left" : {
                         "type" : "field",
-                        "value" : ["userMetadata.spgw", "ipv4_len"]
+                        "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len18"]
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -3712,14 +3698,14 @@
             },
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "ipv4_len"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ipv4_len18"]
             }
           ],
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 221,
             "column" : 8,
-            "source_fragment" : "gtpu.msglen = fabric_meta.spgw.ipv4_len"
+            "source_fragment" : "gtpu.msglen = fabric_meta.spgw.ipv4_len; ..."
           }
         },
         {
@@ -3731,14 +3717,14 @@
             },
             {
               "type" : "field",
-              "value" : ["userMetadata.spgw", "teid"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid19"]
             }
           ],
           "source_info" : {
             "filename" : "include/spgw.p4",
             "line" : 222,
             "column" : 8,
-            "source_fragment" : "gtpu.teid = fabric_meta.spgw.teid"
+            "source_fragment" : "gtpu.teid = fabric_meta.spgw.teid; ..."
           }
         }
       ]
@@ -3768,18 +3754,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.ip_eth_type"]
+              "value" : ["scalars", "fabric_metadata_t._ip_eth_type1"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 248,
-            "column" : 8,
-            "source_fragment" : "fabric_metadata.eth_type = fabric_metadata.ip_eth_type"
+            "column" : 33,
+            "source_fragment" : "= fabric_metadata.ip_eth_type; ..."
           }
         }
       ]
@@ -3813,14 +3799,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.mpls_label"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 254,
             "column" : 8,
-            "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label"
+            "source_fragment" : "hdr.mpls.label = fabric_metadata.mpls_label; ..."
           }
         },
         {
@@ -3870,14 +3856,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.mpls_ttl"]
+              "value" : ["scalars", "fabric_metadata_t._mpls_ttl6"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 257,
             "column" : 8,
-            "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl"
+            "source_fragment" : "hdr.mpls.ttl = fabric_metadata.mpls_ttl; // Decrement after push. ..."
           }
         },
         {
@@ -3885,7 +3871,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
             },
             {
               "type" : "hexstr",
@@ -3930,14 +3916,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_cfi"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_cfi4"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 266,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi"
+            "source_fragment" : "hdr.vlan_tag.cfi = fabric_metadata.vlan_cfi; ..."
           }
         },
         {
@@ -3949,14 +3935,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_pri"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_pri3"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 267,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri"
+            "source_fragment" : "hdr.vlan_tag.pri = fabric_metadata.vlan_pri; ..."
           }
         },
         {
@@ -3968,14 +3954,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 268,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type"
+            "source_fragment" : "hdr.vlan_tag.eth_type = fabric_metadata.eth_type; ..."
           }
         },
         {
@@ -3987,14 +3973,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.vlan_id"]
+              "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 269,
             "column" : 8,
-            "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id"
+            "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_metadata.vlan_id; ..."
           }
         },
         {
@@ -4032,14 +4018,14 @@
             },
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t.eth_type"]
+              "value" : ["scalars", "fabric_metadata_t._eth_type0"]
             }
           ],
           "source_info" : {
             "filename" : "include/control/next.p4",
             "line" : 280,
             "column" : 8,
-            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type"
+            "source_fragment" : "hdr.ethernet.eth_type = fabric_metadata.eth_type; ..."
           }
         },
         {
@@ -4598,7 +4584,7 @@
             {
               "match_type" : "exact",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t.eth_type"],
+              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
               "mask" : null
             }
           ],
@@ -4961,7 +4947,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t.vlan_id"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
               "mask" : null
             },
             {
@@ -5004,7 +4990,7 @@
             {
               "match_type" : "exact",
               "name" : "mpls_label",
-              "target" : ["scalars", "fabric_metadata_t.mpls_label"],
+              "target" : ["scalars", "fabric_metadata_t._mpls_label5"],
               "mask" : null
             }
           ],
@@ -5085,19 +5071,19 @@
             {
               "match_type" : "ternary",
               "name" : "ip_proto",
-              "target" : ["scalars", "fabric_metadata_t.ip_proto"],
+              "target" : ["scalars", "fabric_metadata_t._ip_proto14"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_sport",
-              "target" : ["scalars", "fabric_metadata_t.l4_sport"],
+              "target" : ["scalars", "fabric_metadata_t._l4_sport15"],
               "mask" : null
             },
             {
               "match_type" : "ternary",
               "name" : "l4_dport",
-              "target" : ["scalars", "fabric_metadata_t.l4_dport"],
+              "target" : ["scalars", "fabric_metadata_t._l4_dport16"],
               "mask" : null
             },
             {
@@ -5121,7 +5107,7 @@
             {
               "match_type" : "ternary",
               "name" : "eth_type",
-              "target" : ["scalars", "fabric_metadata_t.eth_type"],
+              "target" : ["scalars", "fabric_metadata_t._eth_type0"],
               "mask" : null
             },
             {
@@ -5191,7 +5177,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t.next_id"],
+              "target" : ["scalars", "fabric_metadata_t._next_id10"],
               "mask" : null
             }
           ],
@@ -5229,7 +5215,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t.next_id"],
+              "target" : ["scalars", "fabric_metadata_t._next_id10"],
               "mask" : null
             }
           ],
@@ -5263,7 +5249,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t.next_id"],
+              "target" : ["scalars", "fabric_metadata_t._next_id10"],
               "mask" : null
             }
           ],
@@ -5300,7 +5286,7 @@
             {
               "match_type" : "exact",
               "name" : "next_id",
-              "target" : ["scalars", "fabric_metadata_t.next_id"],
+              "target" : ["scalars", "fabric_metadata_t._next_id10"],
               "mask" : null
             }
           ],
@@ -5395,15 +5381,15 @@
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.ip_proto"]
+                "value" : ["scalars", "fabric_metadata_t._ip_proto14"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.l4_sport"]
+                "value" : ["scalars", "fabric_metadata_t._l4_sport15"]
               },
               {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.l4_dport"]
+                "value" : ["scalars", "fabric_metadata_t._l4_dport16"]
               }
             ]
           }
@@ -5677,7 +5663,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t.skip_forwarding"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_forwarding7"]
                   }
                 }
               },
@@ -5705,7 +5691,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5731,7 +5717,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5757,7 +5743,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.fwd_type"]
+                "value" : ["scalars", "fabric_metadata_t._fwd_type9"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -5788,7 +5774,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t.skip_next"]
+                    "value" : ["scalars", "fabric_metadata_t._skip_next8"]
                   }
                 }
               },
@@ -5994,7 +5980,7 @@
             {
               "match_type" : "exact",
               "name" : "vlan_id",
-              "target" : ["scalars", "fabric_metadata_t.vlan_id"],
+              "target" : ["scalars", "fabric_metadata_t._vlan_id2"],
               "mask" : null
             },
             {
@@ -6231,7 +6217,7 @@
                   "left" : null,
                   "right" : {
                     "type" : "field",
-                    "value" : ["scalars", "fabric_metadata_t.is_controller_packet_out"]
+                    "value" : ["scalars", "fabric_metadata_t._is_controller_packet_out12"]
                   }
                 }
               },
@@ -6294,7 +6280,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t.is_multicast"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
                       }
                     }
                   },
@@ -6315,7 +6301,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t.clone_to_cpu"]
+                        "value" : ["scalars", "fabric_metadata_t._clone_to_cpu13"]
                       }
                     }
                   },
@@ -6354,7 +6340,7 @@
                       "left" : null,
                       "right" : {
                         "type" : "field",
-                        "value" : ["scalars", "fabric_metadata_t.is_multicast"]
+                        "value" : ["scalars", "fabric_metadata_t._is_multicast11"]
                       }
                     }
                   },
@@ -6398,7 +6384,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.mpls_label"]
+                "value" : ["scalars", "fabric_metadata_t._mpls_label5"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6477,7 +6463,7 @@
               "op" : "!=",
               "left" : {
                 "type" : "field",
-                "value" : ["scalars", "fabric_metadata_t.vlan_id"]
+                "value" : ["scalars", "fabric_metadata_t._vlan_id2"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6601,7 +6587,7 @@
               "op" : "==",
               "left" : {
                 "type" : "field",
-                "value" : ["userMetadata.spgw", "direction"]
+                "value" : ["scalars", "fabric_metadata_t._spgw_direction17"]
               },
               "right" : {
                 "type" : "hexstr",
@@ -6628,6 +6614,8 @@
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc",
+      "verify" : false,
+      "update" : true,
       "if_cond" : {
         "type" : "expression",
         "value" : {
@@ -6652,6 +6640,8 @@
       "target" : ["gtpu_ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_0",
+      "verify" : false,
+      "update" : true,
       "if_cond" : {
         "type" : "expression",
         "value" : {
@@ -6676,6 +6666,8 @@
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
       "calculation" : "calc_1",
+      "verify" : true,
+      "update" : false,
       "if_cond" : {
         "type" : "expression",
         "value" : {
@@ -6742,4 +6734,4 @@
     "version" : [2, 18],
     "compiler" : "https://github.com/p4lang/p4c"
   }
-}
\ No newline at end of file
+}