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