Added support for clone session on fabric.p4

Now on ACL table in fabric.p4 you can clone a packet to the CPU using the clone session.

Change-Id: Ic21f948cffe553e32e7b2fe1f7af49b6a387fffb
diff --git a/pipelines/fabric/src/main/resources/include/control/acl.p4 b/pipelines/fabric/src/main/resources/include/control/acl.p4
index dbfd22c..0ab57b5 100644
--- a/pipelines/fabric/src/main/resources/include/control/acl.p4
+++ b/pipelines/fabric/src/main/resources/include/control/acl.p4
@@ -41,9 +41,9 @@
         acl_counter.count();
     }
 
-    action clone_to_cpu() {
-        // FIXME: works only if pkt will be replicated via PRE multicast group.
-        fabric_metadata.clone_to_cpu = _TRUE;
+    // Set clone session id for a I2E clone session
+    action set_clone_session_id(bit<32> clone_id) {
+        clone3<standard_metadata_t>(CloneType.I2E, clone_id, standard_metadata);
         acl_counter.count();
     }
 
@@ -76,7 +76,7 @@
         actions = {
             set_next_id_acl;
             punt_to_cpu;
-            clone_to_cpu;
+            set_clone_session_id;
             drop;
             nop_acl;
         }
diff --git a/pipelines/fabric/src/main/resources/include/control/packetio.p4 b/pipelines/fabric/src/main/resources/include/control/packetio.p4
index 655f2ab..0adb8f5 100644
--- a/pipelines/fabric/src/main/resources/include/control/packetio.p4
+++ b/pipelines/fabric/src/main/resources/include/control/packetio.p4
@@ -41,11 +41,6 @@
             exit;
         }
         if (standard_metadata.egress_port == CPU_PORT) {
-            if (fabric_metadata.is_multicast == _TRUE &&
-                fabric_metadata.clone_to_cpu == _FALSE) {
-                // Is multicast but clone was not requested.
-                mark_to_drop(standard_metadata);
-            }
             hdr.packet_in.setValid();
             hdr.packet_in.ingress_port = standard_metadata.ingress_port;
             // No need to process through the rest of the pipeline.
diff --git a/pipelines/fabric/src/main/resources/include/header.p4 b/pipelines/fabric/src/main/resources/include/header.p4
index 5971b38..11204e8 100644
--- a/pipelines/fabric/src/main/resources/include/header.p4
+++ b/pipelines/fabric/src/main/resources/include/header.p4
@@ -178,7 +178,6 @@
     next_id_t     next_id;
     _BOOL         is_multicast;
     _BOOL         is_controller_packet_out;
-    _BOOL         clone_to_cpu;
     bit<8>        ip_proto;
     bit<16>       l4_sport;
     bit<16>       l4_dport;