Index: sys/netpfil/ipfw/nat64/nat64_translate.c =================================================================== --- sys/netpfil/ipfw/nat64/nat64_translate.c +++ sys/netpfil/ipfw/nat64/nat64_translate.c @@ -1061,19 +1061,16 @@ m->m_pkthdr.len); goto freeit; } -#if 0 /* * Check that inner source matches the outer destination. - * XXX: We need some method to convert IPv4 into IPv6 address here, - * and compare IPv6 addresses. */ - if (ip.ip_src.s_addr != nat64_get_ip4(&ip6->ip6_dst)) { - DPRINTF(DP_GENERIC, "Inner source doesn't match destination ", + if (ip.ip_src.s_addr != + nat64_extract_ip4(&ip6->ip6_dst, cfg->plat_plen)) { + DPRINTF(DP_GENERIC, "Inner source doesn't match destination: " "%04x vs %04x", ip.ip_src.s_addr, - nat64_get_ip4(&ip6->ip6_dst)); + nat64_extract_ip4(&ip6->ip6_dst, cfg->plat_plen)); goto freeit; } -#endif /* * Create new mbuf for ICMPv6 datagram. * NOTE: len is data length just after inner IP header.