P4 source files for BMv2 demo
Change-Id: I3adc57eb346e3cb34f17d54b82505d2d9e89b4ad
diff --git a/tools/test/p4src/include/parser.p4 b/tools/test/p4src/include/parser.p4
new file mode 100644
index 0000000..6a205ec
--- /dev/null
+++ b/tools/test/p4src/include/parser.p4
@@ -0,0 +1,45 @@
+metadata intrinsic_metadata_t intrinsic_metadata;
+
+parser start {
+ return parse_ethernet;
+}
+
+#define ETHERTYPE_IPV4 0x0800
+
+header ethernet_t ethernet;
+
+parser parse_ethernet {
+ extract(ethernet);
+ return select(latest.etherType) {
+ ETHERTYPE_IPV4 : parse_ipv4;
+ default : ingress;
+ }
+}
+
+header ipv4_t ipv4;
+
+#define IP_PROTOCOLS_TCP 6
+#define IP_PROTOCOLS_UDP 17
+
+parser parse_ipv4 {
+ extract(ipv4);
+ return select(latest.fragOffset, latest.protocol) {
+ IP_PROTOCOLS_TCP : parse_tcp;
+ IP_PROTOCOLS_UDP : parse_udp;
+ default: ingress;
+ }
+}
+
+header tcp_t tcp;
+
+parser parse_tcp {
+ extract(tcp);
+ return ingress;
+}
+
+header udp_t udp;
+
+parser parse_udp {
+ extract(udp);
+ return ingress;
+}
\ No newline at end of file