ONOS-6769 Support for PacketMetadata in demo P4 programs

Change-Id: I9b3de719f9eb1c87d1df16a5ad0d08a83cebc8f6
diff --git a/tools/test/p4src/p4-16/include/packet_io.p4 b/tools/test/p4src/p4-16/include/packet_io.p4
new file mode 100644
index 0000000..6f02e28
--- /dev/null
+++ b/tools/test/p4src/p4-16/include/packet_io.p4
@@ -0,0 +1,22 @@
+#ifndef PACKET_IO
+#define PACKET_IO
+
+control PacketIoIngressControl(inout headers_t hdr, inout standard_metadata_t standard_metadata) {
+    apply {
+        if (hdr.packet_out.isValid()) {
+            standard_metadata.egress_spec = hdr.packet_out.egress_port;
+        }
+    }
+}
+
+control PacketIoEgressControl(inout headers_t hdr, inout standard_metadata_t standard_metadata) {
+    apply {
+        hdr.packet_out.setInvalid();
+        if (standard_metadata.egress_spec == CPU_PORT) {
+            hdr.packet_in.setValid();
+            hdr.packet_in.ingress_port = standard_metadata.ingress_port;
+        }
+    }
+}
+
+#endif
\ No newline at end of file