From 7bbee9ffa260ea08d7809aae1386e8722a666fc6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 25 Jul 2019 14:31:23 +0200 Subject: [PATCH] [netfpga] phase in ipv4 side of the code --- p4src/minip4_solution.p4 | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/p4src/minip4_solution.p4 b/p4src/minip4_solution.p4 index 556caeb..22fa4d3 100644 --- a/p4src/minip4_solution.p4 +++ b/p4src/minip4_solution.p4 @@ -131,8 +131,33 @@ control RealMain( v4_networks.apply(); /* apply egress for IPv4 */ exit; /* no further v6 processing */ + } else if(hdr.ipv4.isValid()) { + if(icmp.apply().hit) { + v4_networks.apply(); + exit; + } else if(nat46.apply().hit) { + if(hdr.icmp.isValid()) { + nat46_icmp_generic(); + + if(hdr.icmp.type == ICMP_ECHO_REPLY) { + hdr.icmp6.type = ICMP6_ECHO_REPLY; + } + if(hdr.icmp.type == ICMP_ECHO_REQUEST) { + hdr.icmp6.type = ICMP6_ECHO_REQUEST; + } + } + if(hdr.udp.isValid()) { + delta_udp_from_v4_to_v6 + } + if(hdr.tcp.isValid()) { + delta_tcp_from_v4_to_v6 + } + + v6_networks.apply(); + exit; + } + v4_networks.apply(); /* regular routing, egress */ } - } lookup_table.apply(); }