bool apply_v6networks = false;
bool apply_v4networks = false;

if(hdr.ipv6.isValid()) {
    apply_v6networks = true;

    if(nat64.apply().hit) { /* generic / static nat64 done */
        if(hdr.icmp6.isValid()) {
            nat64_icmp6_generic();

            if(hdr.icmp6.type == ICMP6_ECHO_REPLY) {
                hdr.icmp.type = ICMP_ECHO_REPLY;
                hdr.icmp.code = 0;
            }
            if(hdr.icmp6.type == ICMP6_ECHO_REQUEST) {
                hdr.icmp.type = ICMP_ECHO_REQUEST;
                hdr.icmp.code = 0;
            }
        }

        if(hdr.udp.isValid()) {
            delta_udp_from_v6_to_v4
        }

        if(hdr.tcp.isValid()) {
            delta_tcp_from_v6_to_v4
        }
        apply_v4networks = true;
        apply_v6networks = false;
    }
} else if(hdr.ipv4.isValid()) {
    apply_v4networks = true;

    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
        }
        apply_v4networks = false;
        apply_v6networks = true;
    }
}

if(apply_v4networks == true) {
    v4_networks.apply();
}

if(apply_v6networks == true) {
    v6_networks.apply();
}
