Initial integration of SPGW in fabric.p4
Change-Id: Idd78399212039e44c982f50d343f824d516f938a
diff --git a/pipelines/fabric/src/main/resources/fabric.p4 b/pipelines/fabric/src/main/resources/fabric.p4
index 84997ec..89ce975 100644
--- a/pipelines/fabric/src/main/resources/fabric.p4
+++ b/pipelines/fabric/src/main/resources/fabric.p4
@@ -26,6 +26,10 @@
#include "include/checksum.p4"
#include "include/parser.p4"
+#ifdef WITH_SPGW
+#include "include/spgw.p4"
+#endif // WITH_SPGW
+
control FabricIngress (
inout parsed_headers_t hdr,
inout fabric_metadata_t fabric_metadata,
@@ -39,6 +43,12 @@
apply {
packet_io_ingress.apply(hdr, fabric_metadata, standard_metadata);
+#ifdef WITH_SPGW
+ fabric_metadata.spgw.l4_src_port = fabric_metadata.l4_src_port;
+ fabric_metadata.spgw.l4_dst_port = fabric_metadata.l4_dst_port;
+ spgw_ingress.apply(hdr.gtpu_ipv4, hdr.gtpu_udp, hdr.gtpu,
+ fabric_metadata.spgw, hdr.ipv4);
+#endif // WITH_SPGW
filtering.apply(hdr, fabric_metadata, standard_metadata);
forwarding.apply(hdr, fabric_metadata, standard_metadata);
next.apply(hdr, fabric_metadata, standard_metadata);
@@ -53,6 +63,10 @@
PacketIoEgress() pkt_io_egress;
apply {
pkt_io_egress.apply(hdr, fabric_metadata, standard_metadata);
+#ifdef WITH_SPGW
+ spgw_egress.apply(hdr.gtpu_ipv4, hdr.gtpu_udp, hdr.gtpu,
+ fabric_metadata.spgw, standard_metadata);
+#endif // WITH_SPGW
}
}