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;