|
|
|
@ -130,35 +130,35 @@ control RealMain(
|
|
|
|
|
|
|
|
|
|
v4_networks.apply(); /* apply egress for IPv4 */ |
|
|
|
|
exit; /* no further v6 processing */ |
|
|
|
|
} |
|
|
|
|
} else if(hdr.ipv4.isValid()) { |
|
|
|
|
if(nat46.apply().hit) { |
|
|
|
|
if(hdr.icmp.isValid()) { |
|
|
|
|
nat46_icmp_generic(); |
|
|
|
|
|
|
|
|
|
} else if(hdr.ipv4.isValid()) { |
|
|
|
|
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.icmp.type == ICMP_ECHO_REPLY) { |
|
|
|
|
hdr.icmp6.type = ICMP6_ECHO_REPLY; |
|
|
|
|
} |
|
|
|
|
if(hdr.udp.isValid()) { |
|
|
|
|
delta_udp_from_v4_to_v6 |
|
|
|
|
if(hdr.icmp.type == ICMP_ECHO_REQUEST) { |
|
|
|
|
hdr.icmp6.type = ICMP6_ECHO_REQUEST; |
|
|
|
|
} |
|
|
|
|
if(hdr.tcp.isValid()) { |
|
|
|
|
delta_tcp_from_v4_to_v6 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
v6_networks.apply(); |
|
|
|
|
exit; |
|
|
|
|
if(hdr.udp.isValid()) { |
|
|
|
|
delta_udp_from_v4_to_v6 |
|
|
|
|
} |
|
|
|
|
v4_networks.apply(); /* regular routing, egress */ |
|
|
|
|
if(hdr.tcp.isValid()) { |
|
|
|
|
delta_tcp_from_v4_to_v6 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
v6_networks.apply(); |
|
|
|
|
exit; |
|
|
|
|
} |
|
|
|
|
v4_networks.apply(); /* regular routing, egress */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lookup_table.apply(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
control TopPipe( |
|
|
|
|