[ONOS-7238] fix ICMP checksum error of fabric.p4

Change-Id: I921504ccdb295488bbea8636f412137bbab0d8f5
diff --git a/pipelines/fabric/src/main/resources/include/checksum.p4 b/pipelines/fabric/src/main/resources/include/checksum.p4
index 9931090..00b4e70 100644
--- a/pipelines/fabric/src/main/resources/include/checksum.p4
+++ b/pipelines/fabric/src/main/resources/include/checksum.p4
@@ -38,14 +38,6 @@
             hdr.ipv4.hdr_checksum,
             HashAlgorithm.csum16
         );
-        update_checksum(hdr.icmp.isValid(),
-            {
-                hdr.icmp.icmp_type,
-                hdr.icmp.icmp_code
-            },
-            hdr.icmp.checksum,
-            HashAlgorithm.csum16
-        );
     }
 }
 
@@ -70,14 +62,6 @@
             hdr.ipv4.hdr_checksum,
             HashAlgorithm.csum16
         );
-        verify_checksum(hdr.icmp.isValid(),
-            {
-                hdr.icmp.icmp_type,
-                hdr.icmp.icmp_code
-            },
-            hdr.icmp.checksum,
-            HashAlgorithm.csum16
-        );
     }
 }
 
diff --git a/pipelines/fabric/src/main/resources/include/header.p4 b/pipelines/fabric/src/main/resources/include/header.p4
index b243c94..c36f5a0 100644
--- a/pipelines/fabric/src/main/resources/include/header.p4
+++ b/pipelines/fabric/src/main/resources/include/header.p4
@@ -108,6 +108,9 @@
     bit<8> icmp_type;
     bit<8> icmp_code;
     bit<16> checksum;
+    bit<16> identifier;
+    bit<16> sequence_number;
+    bit<64> timestamp;
 }
 
 //Custom metadata definition
diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index 0e13cfd..d191ff9 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -143,6 +143,7 @@
         packet.emit(hdr.ipv6);
         packet.emit(hdr.tcp);
         packet.emit(hdr.udp);
+        packet.emit(hdr.icmp);
     }
 }
 
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 79089dc..151fca7 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/bmv2/fabric.json
@@ -126,7 +126,10 @@
       "fields" : [
         ["icmp_type", 8, false],
         ["icmp_code", 8, false],
-        ["checksum", 16, false]
+        ["checksum", 16, false],
+        ["identifier", 16, false],
+        ["sequence_number", 16, false],
+        ["timestamp", 64, false]
       ]
     },
     {
@@ -1410,7 +1413,7 @@
         "column" : 8,
         "source_fragment" : "FabricDeparser"
       },
-      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp"]
+      "order" : ["packet_in", "ethernet", "vlan_tag", "inner_vlan_tag", "mpls", "arp", "ipv4", "ipv6", "tcp", "udp", "icmp"]
     }
   ],
   "meter_arrays" : [],
@@ -1525,7 +1528,7 @@
       "id" : 0,
       "source_info" : {
         "filename" : "./include/checksum.p4",
-        "line" : 56,
+        "line" : 48,
         "column" : 8,
         "source_fragment" : "verify_checksum(hdr.ipv4.isValid(), ..."
       },
@@ -1582,27 +1585,6 @@
       "id" : 1,
       "source_info" : {
         "filename" : "./include/checksum.p4",
-        "line" : 73,
-        "column" : 8,
-        "source_fragment" : "verify_checksum(hdr.icmp.isValid(), ..."
-      },
-      "algo" : "csum16",
-      "input" : [
-        {
-          "type" : "field",
-          "value" : ["icmp", "icmp_type"]
-        },
-        {
-          "type" : "field",
-          "value" : ["icmp", "icmp_code"]
-        }
-      ]
-    },
-    {
-      "name" : "calc_1",
-      "id" : 2,
-      "source_info" : {
-        "filename" : "./include/checksum.p4",
         "line" : 24,
         "column" : 8,
         "source_fragment" : "update_checksum(hdr.ipv4.isValid(), ..."
@@ -1654,27 +1636,6 @@
           "value" : ["ipv4", "dst_addr"]
         }
       ]
-    },
-    {
-      "name" : "calc_2",
-      "id" : 3,
-      "source_info" : {
-        "filename" : "./include/checksum.p4",
-        "line" : 41,
-        "column" : 8,
-        "source_fragment" : "update_checksum(hdr.icmp.isValid(), ..."
-      },
-      "algo" : "csum16",
-      "input" : [
-        {
-          "type" : "field",
-          "value" : ["icmp", "icmp_type"]
-        },
-        {
-          "type" : "field",
-          "value" : ["icmp", "icmp_code"]
-        }
-      ]
     }
   ],
   "learn_lists" : [],
@@ -5260,23 +5221,9 @@
     {
       "name" : "cksum_0",
       "id" : 1,
-      "target" : ["icmp", "checksum"],
-      "type" : "generic",
-      "calculation" : "calc_0"
-    },
-    {
-      "name" : "cksum_1",
-      "id" : 2,
       "target" : ["ipv4", "hdr_checksum"],
       "type" : "generic",
-      "calculation" : "calc_1"
-    },
-    {
-      "name" : "cksum_2",
-      "id" : 3,
-      "target" : ["icmp", "checksum"],
-      "type" : "generic",
-      "calculation" : "calc_2"
+      "calculation" : "calc_0"
     }
   ],
   "force_arith" : [],