Fix bugs from fabric.p4

 - Incorrect selector for hashed table
 - Incorrect counter type for port counter

Change-Id: I04af95bfbb17b9ca407313b3b3bfdfa9efbf1fa4
diff --git a/pipelines/fabric/src/main/resources/include/control/next.p4 b/pipelines/fabric/src/main/resources/include/control/next.p4
index e0ebbe8..c76fc65 100644
--- a/pipelines/fabric/src/main/resources/include/control/next.p4
+++ b/pipelines/fabric/src/main/resources/include/control/next.p4
@@ -103,8 +103,8 @@
     table hashed {
         key = {
             fabric_metadata.next_id: exact;
-            hdr.ethernet.dst_addr: selector;
-            hdr.ethernet.src_addr: selector;
+            hdr.ipv4.dst_addr: selector;
+            hdr.ipv4.src_addr: selector;
             fabric_metadata.ip_proto: selector;
             fabric_metadata.l4_src_port: selector;
             fabric_metadata.l4_dst_port: selector;
diff --git a/pipelines/fabric/src/main/resources/include/control/port_counter.p4 b/pipelines/fabric/src/main/resources/include/control/port_counter.p4
index 80ec64f..3e9ea00 100644
--- a/pipelines/fabric/src/main/resources/include/control/port_counter.p4
+++ b/pipelines/fabric/src/main/resources/include/control/port_counter.p4
@@ -20,8 +20,8 @@
 #include "../header.p4"
 
 control PortCountersControl(inout parsed_headers_t hdr, inout fabric_metadata_t fabric_metadata, inout standard_metadata_t standard_metadata) {
-    counter(MAX_PORTS, CounterType.packets) egress_port_counter;
-    counter(MAX_PORTS, CounterType.packets) ingress_port_counter;
+    counter(MAX_PORTS, CounterType.packets_and_bytes) egress_port_counter;
+    counter(MAX_PORTS, CounterType.packets_and_bytes) ingress_port_counter;
 
     apply {
         if (standard_metadata.egress_spec < MAX_PORTS) {
diff --git a/pipelines/fabric/src/main/resources/include/define.p4 b/pipelines/fabric/src/main/resources/include/define.p4
index 163c2ab..eb61f91 100644
--- a/pipelines/fabric/src/main/resources/include/define.p4
+++ b/pipelines/fabric/src/main/resources/include/define.p4
@@ -36,8 +36,15 @@
 const bit<16> ETHERTYPE_IPV6 = 0x86dd;
 const bit<16> ETHERTYPE_ARP  = 0x0806;
 
-const bit<4> IP_VERSION_4 = 4;
-const bit<4> IP_VERSION_6 = 6;
+#ifndef IP_VER_LENGTH
+#define IP_VER_LENGTH 4
+#endif
+#ifndef IP_VERSION_4
+#define IP_VERSION_4 4
+#endif
+#ifndef IP_VERSION_6
+#define IP_VERSION_6 6
+#endif
 
 const bit<8> PROTO_ICMP = 1;
 const bit<8> PROTO_TCP = 6;
diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index f4b3252..8b03da1 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -70,7 +70,7 @@
         // There is only one MPLS label for this fabric.
         // Assume header after MPLS header is IP/IPv6
         // Lookup first 4 bits for version
-        transition select(packet.lookahead<bit<4>>()) {
+        transition select(packet.lookahead<bit<IP_VER_LENGTH>>()) {
             //The packet should be either IPv4 or IPv6.
             IP_VERSION_4: parse_ipv4;
 #ifdef WITH_IPV6
@@ -162,7 +162,7 @@
 }
 
 control FabricDeparser(packet_out packet, in parsed_headers_t hdr) {
-    apply{
+    apply {
         packet.emit(hdr.packet_in);
         packet.emit(hdr.ethernet);
         packet.emit(hdr.vlan_tag);
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json
index 2e38cf5..3b8aeed 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.json
@@ -313,12 +313,12 @@
   "header_union_stacks" : [],
   "field_lists" : [],
   "errors" : [
-    ["NoError", 1],
-    ["PacketTooShort", 2],
-    ["NoMatch", 3],
-    ["StackOutOfBounds", 4],
-    ["HeaderTooShort", 5],
-    ["ParserTimeout", 6]
+    ["NoError", 0],
+    ["PacketTooShort", 1],
+    ["NoMatch", 2],
+    ["StackOutOfBounds", 3],
+    ["HeaderTooShort", 4],
+    ["ParserTimeout", 5]
   ],
   "enums" : [],
   "parsers" : [
@@ -842,7 +842,7 @@
       "name" : "deparser",
       "id" : 0,
       "source_info" : {
-        "filename" : "include/parser.p4",
+        "filename" : "./include/parser.p4",
         "line" : 164,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
@@ -922,9 +922,9 @@
       "name" : "port_counters_control.egress_port_counter",
       "id" : 11,
       "source_info" : {
-        "filename" : "include/control/port_counter.p4",
+        "filename" : "./include/control/port_counter.p4",
         "line" : 23,
-        "column" : 38,
+        "column" : 48,
         "source_fragment" : "egress_port_counter"
       },
       "size" : 511,
@@ -934,9 +934,9 @@
       "name" : "port_counters_control.ingress_port_counter",
       "id" : 12,
       "source_info" : {
-        "filename" : "include/control/port_counter.p4",
+        "filename" : "./include/control/port_counter.p4",
         "line" : 24,
-        "column" : 38,
+        "column" : 48,
         "source_fragment" : "ingress_port_counter"
       },
       "size" : 511,
@@ -949,7 +949,7 @@
       "name" : "calc",
       "id" : 0,
       "source_info" : {
-        "filename" : "include/checksum.p4",
+        "filename" : "./include/checksum.p4",
         "line" : 56,
         "column" : 8,
         "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
@@ -1006,7 +1006,7 @@
       "name" : "calc_0",
       "id" : 1,
       "source_info" : {
-        "filename" : "include/checksum.p4",
+        "filename" : "./include/checksum.p4",
         "line" : 28,
         "column" : 8,
         "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
@@ -1063,7 +1063,7 @@
       "name" : "calc_1",
       "id" : 2,
       "source_info" : {
-        "filename" : "include/spgw.p4",
+        "filename" : "./include/control/../spgw.p4",
         "line" : 292,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
@@ -1120,7 +1120,7 @@
       "name" : "calc_2",
       "id" : 3,
       "source_info" : {
-        "filename" : "include/spgw.p4",
+        "filename" : "./include/control/../spgw.p4",
         "line" : 311,
         "column" : 8,
         "source_fragment" : "update_checksum_with_payload(gtpu_udp.isValid(), ..."
@@ -1268,7 +1268,7 @@
           "op" : "drop",
           "parameters" : [],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "mark_to_drop()"
@@ -1278,7 +1278,7 @@
           "op" : "exit",
           "parameters" : [],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 34,
             "column" : 8,
             "source_fragment" : "exit"
@@ -1300,7 +1300,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 38,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.setInvalid()"
@@ -1315,7 +1315,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 39,
             "column" : 8,
             "source_fragment" : "gtpu_udp.setInvalid()"
@@ -1330,7 +1330,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 40,
             "column" : 8,
             "source_fragment" : "gtpu.setInvalid()"
@@ -1369,7 +1369,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 46,
             "column" : 8,
             "source_fragment" : "spgw_meta.teid = teid"
@@ -1388,7 +1388,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 47,
             "column" : 8,
             "source_fragment" : "spgw_meta.s1u_enb_addr = s1u_enb_addr"
@@ -1407,7 +1407,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 48,
             "column" : 8,
             "source_fragment" : "spgw_meta.s1u_sgw_addr = s1u_sgw_addr"
@@ -1430,7 +1430,7 @@
           "op" : "drop",
           "parameters" : [],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 31,
             "column" : 8,
             "source_fragment" : "mark_to_drop()"
@@ -1461,7 +1461,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 35,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
@@ -1488,7 +1488,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
@@ -1507,7 +1507,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 42,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = 0"
@@ -1526,7 +1526,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 43,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = 0"
@@ -1545,7 +1545,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 44,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
@@ -1564,7 +1564,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 32,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
@@ -1583,7 +1583,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 35,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
@@ -1612,7 +1612,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
@@ -1643,7 +1643,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 53,
             "column" : 8,
             "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
@@ -1660,7 +1660,7 @@
           "op" : "drop",
           "parameters" : [],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 37,
             "column" : 8,
             "source_fragment" : "mark_to_drop()"
@@ -1691,7 +1691,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1722,7 +1722,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1753,7 +1753,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1784,7 +1784,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1811,7 +1811,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
@@ -1830,7 +1830,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 46,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1856,7 +1856,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 50,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
@@ -1887,7 +1887,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num"
@@ -1922,7 +1922,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 37,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
@@ -1951,7 +1951,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 40,
             "column" : 8,
             "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
@@ -1970,7 +1970,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2009,7 +2009,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2028,7 +2028,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2047,7 +2047,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2086,7 +2086,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2105,7 +2105,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2124,7 +2124,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2159,7 +2159,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 59,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = gid"
@@ -2178,7 +2178,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2221,7 +2221,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2240,7 +2240,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2259,7 +2259,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2274,7 +2274,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 65,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
@@ -2293,7 +2293,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 33,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
@@ -2312,7 +2312,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 67,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = label; ..."
@@ -2331,7 +2331,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 68,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2350,7 +2350,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2369,8 +2369,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 60,
+            "filename" : "./include/control/../define.p4",
+            "line" : 67,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2412,7 +2412,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2431,7 +2431,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2450,7 +2450,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2465,7 +2465,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 65,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
@@ -2484,7 +2484,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 33,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
@@ -2503,7 +2503,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 67,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = label; ..."
@@ -2522,7 +2522,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 68,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2541,7 +2541,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2560,8 +2560,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 60,
+            "filename" : "./include/control/../define.p4",
+            "line" : 67,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2603,7 +2603,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2622,7 +2622,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2641,7 +2641,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2656,7 +2656,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 65,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
@@ -2675,7 +2675,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 33,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
@@ -2694,7 +2694,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 67,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = label; ..."
@@ -2713,7 +2713,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 68,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2732,7 +2732,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2751,8 +2751,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 60,
+            "filename" : "./include/control/../define.p4",
+            "line" : 67,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2777,7 +2777,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 26,
             "column" : 12,
             "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
@@ -2792,7 +2792,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 27,
             "column" : 12,
             "source_fragment" : "hdr.packet_out.setInvalid()"
@@ -2878,7 +2878,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 152,
             "column" : 12,
             "source_fragment" : "spgw_meta.s1u_enb_addr = ipv4.src_addr"
@@ -2897,7 +2897,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 153,
             "column" : 12,
             "source_fragment" : "spgw_meta.s1u_sgw_addr = ipv4.dst_addr"
@@ -2916,7 +2916,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 154,
             "column" : 17,
             "source_fragment" : "= gtpu_ipv4; ..."
@@ -2935,7 +2935,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 155,
             "column" : 16,
             "source_fragment" : "= gtpu_udp; ..."
@@ -2971,7 +2971,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 159,
             "column" : 16,
             "source_fragment" : "spgw_meta.do_spgw = true"
@@ -2990,8 +2990,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 81,
+            "filename" : "./include/control/../define.p4",
+            "line" : 88,
             "column" : 31,
             "source_fragment" : "1w0; ..."
           }
@@ -3086,7 +3086,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 163,
             "column" : 12,
             "source_fragment" : "spgw_meta.do_spgw = true"
@@ -3105,8 +3105,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 82,
+            "filename" : "./include/control/../define.p4",
+            "line" : 89,
             "column" : 33,
             "source_fragment" : "1w1; ..."
           }
@@ -3164,7 +3164,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 146,
             "column" : 8,
             "source_fragment" : "spgw_meta.do_spgw = false"
@@ -3200,7 +3200,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 169,
             "column" : 12,
             "source_fragment" : "return"
@@ -3286,7 +3286,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 35,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
@@ -3305,7 +3305,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 35,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
@@ -3414,7 +3414,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 140,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
@@ -3466,7 +3466,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 28,
             "column" : 12,
             "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
@@ -3518,7 +3518,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 31,
             "column" : 12,
             "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
@@ -3544,7 +3544,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 162,
             "column" : 12,
             "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
@@ -3559,7 +3559,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 163,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
@@ -3581,7 +3581,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 210,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.setValid()"
@@ -3600,10 +3600,10 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 39,
-            "column" : 28,
-            "source_fragment" : "4; ..."
+            "filename" : "./include/control/../spgw.p4",
+            "line" : 211,
+            "column" : 8,
+            "source_fragment" : "gtpu_ipv4.version = 4"
           }
         },
         {
@@ -3619,8 +3619,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 47,
+            "filename" : "./include/control/../define.p4",
+            "line" : 54,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -3638,7 +3638,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 213,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.diffserv = 0"
@@ -3750,7 +3750,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 214,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.total_len = ((bit<16>)std_meta.packet_length ..."
@@ -3769,7 +3769,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 216,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.identification = 0x1513"
@@ -3788,7 +3788,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 217,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.flags = 0"
@@ -3807,7 +3807,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 218,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.frag_offset = 0"
@@ -3826,8 +3826,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 71,
+            "filename" : "./include/control/../define.p4",
+            "line" : 78,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -3845,8 +3845,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 44,
+            "filename" : "./include/control/../define.p4",
+            "line" : 51,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -3864,7 +3864,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 221,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.dst_addr = spgw_meta.s1u_enb_addr"
@@ -3883,7 +3883,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 222,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.src_addr = spgw_meta.s1u_sgw_addr"
@@ -3902,7 +3902,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 223,
             "column" : 8,
             "source_fragment" : "gtpu_ipv4.hdr_checksum = 0"
@@ -3917,7 +3917,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 225,
             "column" : 8,
             "source_fragment" : "gtpu_udp.setValid()"
@@ -3936,7 +3936,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 226,
             "column" : 8,
             "source_fragment" : "gtpu_udp.src_port = 2152"
@@ -3955,7 +3955,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 227,
             "column" : 8,
             "source_fragment" : "gtpu_udp.dst_port = 2152"
@@ -4047,7 +4047,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 228,
             "column" : 8,
             "source_fragment" : "gtpu_udp.len = ((bit<16>)std_meta.packet_length ..."
@@ -4066,7 +4066,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 230,
             "column" : 8,
             "source_fragment" : "gtpu_udp.checksum = 0"
@@ -4081,7 +4081,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 232,
             "column" : 8,
             "source_fragment" : "gtpu.setValid()"
@@ -4100,7 +4100,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 233,
             "column" : 8,
             "source_fragment" : "gtpu.version = 0x01"
@@ -4119,7 +4119,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 234,
             "column" : 8,
             "source_fragment" : "gtpu.pt = 0x01"
@@ -4138,7 +4138,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 235,
             "column" : 8,
             "source_fragment" : "gtpu.spare = 0"
@@ -4157,7 +4157,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 236,
             "column" : 8,
             "source_fragment" : "gtpu.ex_flag = 0"
@@ -4176,7 +4176,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 237,
             "column" : 8,
             "source_fragment" : "gtpu.seq_flag = 0"
@@ -4195,7 +4195,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 238,
             "column" : 8,
             "source_fragment" : "gtpu.npdu_flag = 0"
@@ -4214,7 +4214,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 239,
             "column" : 8,
             "source_fragment" : "gtpu.msgtype = 0xff"
@@ -4266,7 +4266,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 240,
             "column" : 8,
             "source_fragment" : "gtpu.msglen = ((bit<16>)std_meta.packet_length - 14"
@@ -4285,7 +4285,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 241,
             "column" : 8,
             "source_fragment" : "gtpu.teid = spgw_meta.teid"
@@ -4307,7 +4307,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 39,
             "column" : 12,
             "source_fragment" : "hdr.packet_in.setValid()"
@@ -4326,7 +4326,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 40,
             "column" : 12,
             "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
@@ -4472,7 +4472,7 @@
           "name" : "spgw_ingress.s1u_filter_table",
           "id" : 3,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 65,
             "column" : 10,
             "source_fragment" : "s1u_filter_table"
@@ -4577,7 +4577,7 @@
           "name" : "spgw_ingress.ue_filter_table",
           "id" : 7,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 55,
             "column" : 10,
             "source_fragment" : "ue_filter_table"
@@ -4728,7 +4728,7 @@
           "name" : "spgw_ingress.dl_sess_lookup",
           "id" : 13,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 124,
             "column" : 10,
             "source_fragment" : "dl_sess_lookup"
@@ -4833,7 +4833,7 @@
           "name" : "spgw_ingress.ue_cdr_table",
           "id" : 17,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 134,
             "column" : 10,
             "source_fragment" : "ue_cdr_table"
@@ -4869,7 +4869,7 @@
           "name" : "filtering.ingress_port_vlan",
           "id" : 18,
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 57,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
@@ -4917,7 +4917,7 @@
           "name" : "filtering.fwd_classifier",
           "id" : 19,
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 76,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
@@ -4962,7 +4962,7 @@
           "name" : "forwarding.bridging",
           "id" : 20,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 53,
             "column" : 10,
             "source_fragment" : "bridging"
@@ -5003,7 +5003,7 @@
           "name" : "forwarding.mpls",
           "id" : 21,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 65,
             "column" : 10,
             "source_fragment" : "mpls"
@@ -5062,7 +5062,7 @@
           "name" : "forwarding.unicast_v4",
           "id" : 23,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 76,
             "column" : 10,
             "source_fragment" : "unicast_v4"
@@ -5098,7 +5098,7 @@
           "name" : "forwarding.multicast_v4",
           "id" : 24,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 87,
             "column" : 10,
             "source_fragment" : "multicast_v4"
@@ -5139,7 +5139,7 @@
           "name" : "forwarding.acl",
           "id" : 25,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 127,
             "column" : 10,
             "source_fragment" : "acl"
@@ -5232,7 +5232,7 @@
           "name" : "next.simple",
           "id" : 26,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 89,
             "column" : 10,
             "source_fragment" : "simple"
@@ -5337,7 +5337,7 @@
           "name" : "next.hashed",
           "id" : 30,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 103,
             "column" : 10,
             "source_fragment" : "hashed"
@@ -5370,7 +5370,7 @@
           "name" : "next.broadcast",
           "id" : 31,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 126,
             "column" : 10,
             "source_fragment" : "broadcast"
@@ -5482,11 +5482,11 @@
             "input" : [
               {
                 "type" : "field",
-                "value" : ["ethernet", "dst_addr"]
+                "value" : ["ipv4", "dst_addr"]
               },
               {
                 "type" : "field",
-                "value" : ["ethernet", "src_addr"]
+                "value" : ["ipv4", "src_addr"]
               },
               {
                 "type" : "field",
@@ -5509,7 +5509,7 @@
           "name" : "node_2",
           "id" : 0,
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 25,
             "column" : 12,
             "source_fragment" : "hdr.packet_out.isValid()"
@@ -5532,7 +5532,7 @@
           "name" : "node_5",
           "id" : 1,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 147,
             "column" : 12,
             "source_fragment" : "gtpu.isValid()"
@@ -5589,7 +5589,7 @@
           "name" : "node_17",
           "id" : 4,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 167,
             "column" : 12,
             "source_fragment" : "!spgw_meta.do_spgw"
@@ -5643,7 +5643,7 @@
           "name" : "node_20",
           "id" : 6,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 172,
             "column" : 12,
             "source_fragment" : "spgw_meta.direction == DIR_UPLINK"
@@ -5669,7 +5669,7 @@
           "name" : "node_22",
           "id" : 7,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 189,
             "column" : 12,
             "source_fragment" : "spgw_meta.direction == DIR_DOWNLINK"
@@ -5695,7 +5695,7 @@
           "name" : "node_26",
           "id" : 8,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 190,
             "column" : 16,
             "source_fragment" : "!dl_sess_lookup.apply().hit"
@@ -5725,7 +5725,7 @@
           "name" : "node_31",
           "id" : 9,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 157,
             "column" : 11,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
@@ -5751,7 +5751,7 @@
           "name" : "node_33",
           "id" : 10,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 158,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
@@ -5777,7 +5777,7 @@
           "name" : "node_36",
           "id" : 11,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 165,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
@@ -5803,7 +5803,7 @@
           "name" : "node_38",
           "id" : 12,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 166,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
@@ -5846,7 +5846,7 @@
           "name" : "node_45",
           "id" : 14,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 138,
             "column" : 16,
             "source_fragment" : "!hdr.mpls.isValid()"
@@ -5876,7 +5876,7 @@
           "name" : "node_46",
           "id" : 15,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 139,
             "column" : 19,
             "source_fragment" : "hdr.ipv4.isValid()"
@@ -5899,7 +5899,7 @@
           "name" : "node_50",
           "id" : 16,
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 27,
             "column" : 12,
             "source_fragment" : "standard_metadata.egress_spec < 511"
@@ -5925,7 +5925,7 @@
           "name" : "node_52",
           "id" : 17,
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 30,
             "column" : 12,
             "source_fragment" : "standard_metadata.ingress_port < 511"
@@ -5951,7 +5951,7 @@
           "name" : "node_54",
           "id" : 18,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 161,
             "column" : 12,
             "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
@@ -6059,7 +6059,7 @@
           "name" : "node_58",
           "id" : 19,
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 38,
             "column" : 12,
             "source_fragment" : "standard_metadata.egress_port == 255"
@@ -6085,7 +6085,7 @@
           "name" : "node_61",
           "id" : 20,
           "source_info" : {
-            "filename" : "include/spgw.p4",
+            "filename" : "./include/control/../spgw.p4",
             "line" : 245,
             "column" : 12,
             "source_fragment" : "spgw_meta.do_spgw && spgw_meta.direction == DIR_DOWNLINK"
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info
index 73ad2f9..848d0c0 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric-spgw.p4info
@@ -706,7 +706,7 @@
     alias: "egress_port_counter"
   }
   spec {
-    unit: PACKETS
+    unit: BOTH
   }
   size: 511
 }
@@ -717,7 +717,7 @@
     alias: "ingress_port_counter"
   }
   spec {
-    unit: PACKETS
+    unit: BOTH
   }
   size: 511
 }
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
index 228ff23..afa7f48 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
@@ -254,12 +254,12 @@
   "header_union_stacks" : [],
   "field_lists" : [],
   "errors" : [
-    ["NoError", 1],
-    ["PacketTooShort", 2],
-    ["NoMatch", 3],
-    ["StackOutOfBounds", 4],
-    ["HeaderTooShort", 5],
-    ["ParserTimeout", 6]
+    ["NoError", 0],
+    ["PacketTooShort", 1],
+    ["NoMatch", 2],
+    ["StackOutOfBounds", 3],
+    ["HeaderTooShort", 4],
+    ["ParserTimeout", 5]
   ],
   "enums" : [],
   "parsers" : [
@@ -672,7 +672,7 @@
       "name" : "deparser",
       "id" : 0,
       "source_info" : {
-        "filename" : "include/parser.p4",
+        "filename" : "./include/parser.p4",
         "line" : 164,
         "column" : 8,
         "source_fragment" : "FabricDeparser"
@@ -746,9 +746,9 @@
       "name" : "port_counters_control.egress_port_counter",
       "id" : 10,
       "source_info" : {
-        "filename" : "include/control/port_counter.p4",
+        "filename" : "./include/control/port_counter.p4",
         "line" : 23,
-        "column" : 38,
+        "column" : 48,
         "source_fragment" : "egress_port_counter"
       },
       "size" : 511,
@@ -758,9 +758,9 @@
       "name" : "port_counters_control.ingress_port_counter",
       "id" : 11,
       "source_info" : {
-        "filename" : "include/control/port_counter.p4",
+        "filename" : "./include/control/port_counter.p4",
         "line" : 24,
-        "column" : 38,
+        "column" : 48,
         "source_fragment" : "ingress_port_counter"
       },
       "size" : 511,
@@ -773,7 +773,7 @@
       "name" : "calc",
       "id" : 0,
       "source_info" : {
-        "filename" : "include/checksum.p4",
+        "filename" : "./include/checksum.p4",
         "line" : 56,
         "column" : 8,
         "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
@@ -830,7 +830,7 @@
       "name" : "calc_0",
       "id" : 1,
       "source_info" : {
-        "filename" : "include/checksum.p4",
+        "filename" : "./include/checksum.p4",
         "line" : 28,
         "column" : 8,
         "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
@@ -949,7 +949,7 @@
           "op" : "drop",
           "parameters" : [],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 31,
             "column" : 8,
             "source_fragment" : "mark_to_drop()"
@@ -980,7 +980,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 35,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
@@ -1007,7 +1007,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.setValid()"
@@ -1026,7 +1026,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 42,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.cfi = 0"
@@ -1045,7 +1045,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 43,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.pri = 0"
@@ -1064,7 +1064,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 44,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.ether_type = hdr.ethernet.ether_type"
@@ -1083,7 +1083,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 32,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
@@ -1102,7 +1102,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 35,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id; ..."
@@ -1131,7 +1131,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "fabric_metadata.pop_vlan_at_egress = true"
@@ -1162,7 +1162,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 53,
             "column" : 8,
             "source_fragment" : "fabric_metadata.fwd_type = fwd_type"
@@ -1179,7 +1179,7 @@
           "op" : "drop",
           "parameters" : [],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 37,
             "column" : 8,
             "source_fragment" : "mark_to_drop()"
@@ -1210,7 +1210,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1241,7 +1241,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1272,7 +1272,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1303,7 +1303,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 41,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1330,7 +1330,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setInvalid()"
@@ -1349,7 +1349,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 46,
             "column" : 8,
             "source_fragment" : "fabric_metadata.next_id = next_id"
@@ -1375,7 +1375,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 50,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = 255"
@@ -1406,7 +1406,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num"
@@ -1441,7 +1441,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 37,
             "column" : 8,
             "source_fragment" : "hdr.vlan_tag.vlan_id = new_vlan_id"
@@ -1470,7 +1470,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 40,
             "column" : 8,
             "source_fragment" : "fabric_metadata.pop_vlan_at_egress = false"
@@ -1489,7 +1489,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1528,7 +1528,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1547,7 +1547,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1566,7 +1566,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1605,7 +1605,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1624,7 +1624,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1643,7 +1643,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1678,7 +1678,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 59,
             "column" : 8,
             "source_fragment" : "standard_metadata.mcast_grp = gid"
@@ -1697,7 +1697,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1740,7 +1740,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1759,7 +1759,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1778,7 +1778,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1793,7 +1793,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 65,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
@@ -1812,7 +1812,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 33,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
@@ -1831,7 +1831,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 67,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = label; ..."
@@ -1850,7 +1850,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 68,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -1869,7 +1869,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
@@ -1888,8 +1888,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 60,
+            "filename" : "./include/control/../define.p4",
+            "line" : 67,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -1931,7 +1931,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -1950,7 +1950,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -1969,7 +1969,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -1984,7 +1984,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 65,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
@@ -2003,7 +2003,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 33,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
@@ -2022,7 +2022,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 67,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = label; ..."
@@ -2041,7 +2041,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 68,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2060,7 +2060,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2079,8 +2079,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 60,
+            "filename" : "./include/control/../define.p4",
+            "line" : 67,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2122,7 +2122,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 45,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.src_addr = smac; ..."
@@ -2141,7 +2141,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 49,
             "column" : 8,
             "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..."
@@ -2160,7 +2160,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 33,
             "column" : 8,
             "source_fragment" : "standard_metadata.egress_spec = port_num; ..."
@@ -2175,7 +2175,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 65,
             "column" : 8,
             "source_fragment" : "hdr.mpls.setValid()"
@@ -2194,7 +2194,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 33,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
@@ -2213,7 +2213,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 67,
             "column" : 8,
             "source_fragment" : "hdr.mpls.label = label; ..."
@@ -2232,7 +2232,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 68,
             "column" : 8,
             "source_fragment" : "hdr.mpls.tc = tc; ..."
@@ -2251,7 +2251,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 69,
             "column" : 8,
             "source_fragment" : "hdr.mpls.bos = 1w1"
@@ -2270,8 +2270,8 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
-            "line" : 60,
+            "filename" : "./include/control/../define.p4",
+            "line" : 67,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -2296,7 +2296,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 26,
             "column" : 12,
             "source_fragment" : "standard_metadata.egress_spec = hdr.packet_out.egress_port"
@@ -2311,7 +2311,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 27,
             "column" : 12,
             "source_fragment" : "hdr.packet_out.setInvalid()"
@@ -2337,7 +2337,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 35,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
@@ -2356,7 +2356,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/../define.p4",
+            "filename" : "./include/control/../define.p4",
             "line" : 35,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
@@ -2465,7 +2465,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 140,
             "column" : 20,
             "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1"
@@ -2517,7 +2517,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 28,
             "column" : 12,
             "source_fragment" : "egress_port_counter.count((bit<32>)standard_metadata.egress_spec)"
@@ -2569,7 +2569,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 31,
             "column" : 12,
             "source_fragment" : "ingress_port_counter.count((bit<32>)standard_metadata.ingress_port)"
@@ -2595,7 +2595,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 162,
             "column" : 12,
             "source_fragment" : "hdr.ethernet.ether_type = hdr.vlan_tag.ether_type"
@@ -2610,7 +2610,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 163,
             "column" : 12,
             "source_fragment" : "hdr.vlan_tag.setInvalid()"
@@ -2632,7 +2632,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 39,
             "column" : 12,
             "source_fragment" : "hdr.packet_in.setValid()"
@@ -2651,7 +2651,7 @@
             }
           ],
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 40,
             "column" : 12,
             "source_fragment" : "hdr.packet_in.ingress_port = standard_metadata.ingress_port"
@@ -2699,7 +2699,7 @@
           "name" : "filtering.ingress_port_vlan",
           "id" : 1,
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 57,
             "column" : 10,
             "source_fragment" : "ingress_port_vlan"
@@ -2747,7 +2747,7 @@
           "name" : "filtering.fwd_classifier",
           "id" : 2,
           "source_info" : {
-            "filename" : "include/control/filtering.p4",
+            "filename" : "./include/control/filtering.p4",
             "line" : 76,
             "column" : 10,
             "source_fragment" : "fwd_classifier"
@@ -2792,7 +2792,7 @@
           "name" : "forwarding.bridging",
           "id" : 3,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 53,
             "column" : 10,
             "source_fragment" : "bridging"
@@ -2833,7 +2833,7 @@
           "name" : "forwarding.mpls",
           "id" : 4,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 65,
             "column" : 10,
             "source_fragment" : "mpls"
@@ -2892,7 +2892,7 @@
           "name" : "forwarding.unicast_v4",
           "id" : 6,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 76,
             "column" : 10,
             "source_fragment" : "unicast_v4"
@@ -2928,7 +2928,7 @@
           "name" : "forwarding.multicast_v4",
           "id" : 7,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 87,
             "column" : 10,
             "source_fragment" : "multicast_v4"
@@ -2969,9 +2969,9 @@
           "name" : "forwarding.acl",
           "id" : 8,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 127,
-            "column" : 10,
+            "column" : 7,
             "source_fragment" : "acl"
           },
           "key" : [
@@ -3062,7 +3062,7 @@
           "name" : "next.simple",
           "id" : 9,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 89,
             "column" : 10,
             "source_fragment" : "simple"
@@ -3167,7 +3167,7 @@
           "name" : "next.hashed",
           "id" : 13,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 103,
             "column" : 10,
             "source_fragment" : "hashed"
@@ -3200,7 +3200,7 @@
           "name" : "next.broadcast",
           "id" : 14,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 126,
             "column" : 10,
             "source_fragment" : "broadcast"
@@ -3312,11 +3312,11 @@
             "input" : [
               {
                 "type" : "field",
-                "value" : ["ethernet", "dst_addr"]
+                "value" : ["ipv4", "dst_addr"]
               },
               {
                 "type" : "field",
-                "value" : ["ethernet", "src_addr"]
+                "value" : ["ipv4", "src_addr"]
               },
               {
                 "type" : "field",
@@ -3339,7 +3339,7 @@
           "name" : "node_2",
           "id" : 0,
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 25,
             "column" : 12,
             "source_fragment" : "hdr.packet_out.isValid()"
@@ -3362,7 +3362,7 @@
           "name" : "node_6",
           "id" : 1,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 157,
             "column" : 11,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
@@ -3388,7 +3388,7 @@
           "name" : "node_8",
           "id" : 2,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 158,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
@@ -3414,7 +3414,7 @@
           "name" : "node_11",
           "id" : 3,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 165,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
@@ -3440,7 +3440,7 @@
           "name" : "node_13",
           "id" : 4,
           "source_info" : {
-            "filename" : "include/control/forwarding.p4",
+            "filename" : "./include/control/forwarding.p4",
             "line" : 166,
             "column" : 17,
             "source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_MULTICAST"
@@ -3483,7 +3483,7 @@
           "name" : "node_20",
           "id" : 6,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 138,
             "column" : 16,
             "source_fragment" : "!hdr.mpls.isValid()"
@@ -3513,7 +3513,7 @@
           "name" : "node_21",
           "id" : 7,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 139,
             "column" : 19,
             "source_fragment" : "hdr.ipv4.isValid()"
@@ -3536,7 +3536,7 @@
           "name" : "node_25",
           "id" : 8,
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 27,
             "column" : 12,
             "source_fragment" : "standard_metadata.egress_spec < 511"
@@ -3562,7 +3562,7 @@
           "name" : "node_27",
           "id" : 9,
           "source_info" : {
-            "filename" : "include/control/port_counter.p4",
+            "filename" : "./include/control/port_counter.p4",
             "line" : 30,
             "column" : 12,
             "source_fragment" : "standard_metadata.ingress_port < 511"
@@ -3588,7 +3588,7 @@
           "name" : "node_29",
           "id" : 10,
           "source_info" : {
-            "filename" : "include/control/next.p4",
+            "filename" : "./include/control/next.p4",
             "line" : 161,
             "column" : 12,
             "source_fragment" : "fabric_metadata.pop_vlan_at_egress"
@@ -3650,7 +3650,7 @@
           "name" : "node_33",
           "id" : 11,
           "source_info" : {
-            "filename" : "include/control/packetio.p4",
+            "filename" : "./include/control/packetio.p4",
             "line" : 38,
             "column" : 12,
             "source_fragment" : "standard_metadata.egress_port == 255"
diff --git a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.p4info b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.p4info
index 80e0880..d028872 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.p4info
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.p4info
@@ -579,7 +579,7 @@
     alias: "egress_port_counter"
   }
   spec {
-    unit: PACKETS
+    unit: BOTH
   }
   size: 511
 }
@@ -590,7 +590,7 @@
     alias: "ingress_port_counter"
   }
   spec {
-    unit: PACKETS
+    unit: BOTH
   }
   size: 511
 }