diff --git a/tools/test/p4src/p4-16/include/actions.p4 b/tools/test/p4src/p4-16/include/actions.p4
index 0ef0533..87c1ed6 100644
--- a/tools/test/p4src/p4-16/include/actions.p4
+++ b/tools/test/p4src/p4-16/include/actions.p4
@@ -1,3 +1,5 @@
+#ifndef ACTIONS
+#define ACTIONS
 #include "defines.p4"
 #include "headers.p4"
 
@@ -5,10 +7,12 @@
     standard_metadata.egress_spec = CPU_PORT;
 }
 
-action set_egress_port(inout standard_metadata_t standard_metadata, Port port) {
+action set_egress_port(inout standard_metadata_t standard_metadata, port_t port) {
     standard_metadata.egress_spec = port;
 }
 
 action drop(inout standard_metadata_t standard_metadata) {
     standard_metadata.egress_spec = DROP_PORT;
 }
+
+#endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-16/include/checksums.p4 b/tools/test/p4src/p4-16/include/checksums.p4
index 09365dc..cb86f90 100644
--- a/tools/test/p4src/p4-16/include/checksums.p4
+++ b/tools/test/p4src/p4-16/include/checksums.p4
@@ -1,17 +1,18 @@
-#ifndef CHECK_SUMS
-#define CHECK_SUMS
+#ifndef CHECKSUMS
+#define CHECKSUMS
 #include "headers.p4"
 #include "metadata.p4"
 
-control verifyChecksum(in headers hdr, inout metadata meta) {
+control verifyChecksum(in headers_t hdr, inout metadata_t meta) {
     apply {
         // Nothing to do
     }
 }
 
-control computeChecksum(inout headers hdr, inout metadata meta) {
+control computeChecksum(inout headers_t hdr, inout metadata_t meta) {
     apply {
         // Nothing to do
     }
 }
+
 #endif
diff --git a/tools/test/p4src/p4-16/include/defines.p4 b/tools/test/p4src/p4-16/include/defines.p4
index 24974a1..ef258f6 100644
--- a/tools/test/p4src/p4-16/include/defines.p4
+++ b/tools/test/p4src/p4-16/include/defines.p4
@@ -1,10 +1,15 @@
 #ifndef DEFINES
 #define DEFINES
-// Logic ports as defined in the simple_switch target
+
 #define MAX_PORTS 254
 #define CPU_PORT 9w255
 #define DROP_PORT 9w511
-typedef bit<16> GroupId;
-typedef bit<8> GroupSize;
-typedef bit<9> Port;
+
+#define ETH_TYPE_IPV4 16w0x0800
+#define IP_TYPE_TCP 8w6
+#define IP_TYPE_UDP 8w17
+
+typedef bit<16> group_id_t;
+typedef bit<8> group_size_t;
+typedef bit<9> port_t;
 #endif
diff --git a/tools/test/p4src/p4-16/include/headers.p4 b/tools/test/p4src/p4-16/include/headers.p4
index d497370..aeca349 100644
--- a/tools/test/p4src/p4-16/include/headers.p4
+++ b/tools/test/p4src/p4-16/include/headers.p4
@@ -1,5 +1,16 @@
 #ifndef HEADERS
 #define HEADERS
+
+@controller_header("packet_in")
+header packet_in_header_t {
+    bit<9> ingress_port;
+}
+
+@controller_header("packet_out")
+header packet_out_header_t {
+    bit<9> egress_port;
+}
+
 struct intrinsic_metadata_t {
     bit<32> ingress_global_timestamp;
     bit<32> lf_field_list;
@@ -49,10 +60,12 @@
     bit<16> checksum;
 }
 
-struct headers {
+struct headers_t {
     ethernet_t ethernet;
     ipv4_t ipv4;
     tcp_t tcp;
     udp_t udp;
+    packet_out_header_t packet_out;
+    packet_in_header_t packet_in;
 }
 #endif
diff --git a/tools/test/p4src/p4-16/include/metadata.p4 b/tools/test/p4src/p4-16/include/metadata.p4
index e08057c..a026e2d 100644
--- a/tools/test/p4src/p4-16/include/metadata.p4
+++ b/tools/test/p4src/p4-16/include/metadata.p4
@@ -2,19 +2,19 @@
 #define METADATA
 
 struct ecmp_metadata_t {
-    bit<16> groupId;
+    bit<16> group_id;
     bit<16> selector;
 }
 
-struct wcmp_meta_t {
-    bit<16> groupId;
+struct wcmp_metadata_t {
+    bit<16> group_id;
     bit<8>  numBits;
     bit<64> selector;
 }
 
-struct metadata {
+struct metadata_t {
     ecmp_metadata_t ecmp_metadata;
-    wcmp_meta_t wcmp_meta;
+    wcmp_metadata_t wcmp_meta;
     intrinsic_metadata_t intrinsic_metadata;
 }
 #endif
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
diff --git a/tools/test/p4src/p4-16/include/parsers.p4 b/tools/test/p4src/p4-16/include/parsers.p4
index e9fbc6f..68f3876 100644
--- a/tools/test/p4src/p4-16/include/parsers.p4
+++ b/tools/test/p4src/p4-16/include/parsers.p4
@@ -3,11 +3,14 @@
 #include "headers.p4"
 #include "metadata.p4"
 
-#define ETH_TYPE_IPV4 16w0x0800
-#define IP_TYPE_TCP 8w6
-#define IP_TYPE_UDP 8w17
+parser ParserImpl(packet_in packet, out headers_t hdr, inout metadata_t meta,
+                    inout standard_metadata_t standard_metadata) {
 
-parser ParserImpl(packet_in packet, out headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) {
+    state parse_packet_out {
+        packet.extract(hdr.packet_out);
+        transition parse_ethernet;
+    }
+
     state parse_ethernet {
         packet.extract(hdr.ethernet);
         transition select(hdr.ethernet.etherType) {
@@ -36,12 +39,16 @@
     }
 
     state start {
-        transition parse_ethernet;
+        transition select(standard_metadata.ingress_port) {
+            CPU_PORT: parse_packet_out;
+            default: parse_ethernet;
+        }
     }
 }
 
-control DeparserImpl(packet_out packet, in headers hdr) {
+control DeparserImpl(packet_out packet, in headers_t hdr) {
     apply {
+        packet.emit(hdr.packet_in);
         packet.emit(hdr.ethernet);
         packet.emit(hdr.ipv4);
         packet.emit(hdr.udp);
diff --git a/tools/test/p4src/p4-16/include/port_counters.p4 b/tools/test/p4src/p4-16/include/port_counters.p4
index 90916ba..93d2b4d 100644
--- a/tools/test/p4src/p4-16/include/port_counters.p4
+++ b/tools/test/p4src/p4-16/include/port_counters.p4
@@ -2,7 +2,7 @@
 #define PORT_COUNTERS
 #include "defines.p4"
 
-control PortCountersControl(inout headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) {
+control PortCountersControl(inout headers_t hdr, inout metadata_t meta, inout standard_metadata_t standard_metadata) {
     counter(MAX_PORTS, CounterType.packets) egress_port_counter;
     counter(MAX_PORTS, CounterType.packets) ingress_port_counter;
 
