Fixed double-extraction issue in spgw parser
Change-Id: I9b564322840147ab037cc07ddc1384e648b946b8
diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index 2b50505..f4b3252 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -143,9 +143,8 @@
}
state parse_ipv4_inner {
- hdr.gtpu_ipv4 = hdr.ipv4;
- packet.extract(hdr.ipv4);
- transition select(hdr.ipv4.protocol) {
+ packet.extract(hdr.gtpu_ipv4);
+ transition select(hdr.gtpu_ipv4.protocol) {
PROTO_TCP: parse_tcp;
PROTO_UDP: parse_udp_inner;
PROTO_ICMP: parse_icmp;
@@ -154,10 +153,9 @@
}
state parse_udp_inner {
- hdr.gtpu_udp = hdr.udp;
- packet.extract(hdr.udp);
- fabric_metadata.l4_src_port = hdr.udp.src_port;
- fabric_metadata.l4_dst_port = hdr.udp.dst_port;
+ packet.extract(hdr.gtpu_udp);
+ fabric_metadata.l4_src_port = hdr.gtpu_udp.src_port;
+ fabric_metadata.l4_dst_port = hdr.gtpu_udp.dst_port;
transition accept;
}
#endif // WITH_SPGW