Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Feb 2020 16:33:10 +0000
From:      "neel_neelc.org (Neel Chauhan)" <phabric-noreply@FreeBSD.org>
To:        Phabricator <phabric-noreply@FreeBSD.org>
Cc:        freebsd-net@freebsd.org
Subject:   [Differential] D23737: nat64: Get the IPv4 address from a NAT64 address when comparing addresses in a ICMP translate
Message-ID:  <85fbe0e7db6a779f9e3862df7cba8cd4@localhost.localdomain>
In-Reply-To: <differential-rev-PHID-DREV-s3egeuka5skf4yqccitk-req@reviews.freebsd.org>
References:  <differential-rev-PHID-DREV-s3egeuka5skf4yqccitk-req@reviews.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
neel_neelc.org updated this revision to Diff 68545.
neel_neelc.org added a comment.


  I decided to use the existing function nat64_extract_ip4() to extract the IPv4 and removed my nat64_get_ip4().
  
  I'm new to the FreeBSD TCP/IP stack, sorry.

REPOSITORY
  rS FreeBSD src repository

CHANGES SINCE LAST UPDATE
  https://reviews.freebsd.org/D23737?vs=68489&id=68545

CHANGES SINCE LAST ACTION
  https://reviews.freebsd.org/D23737/new/

REVISION DETAIL
  https://reviews.freebsd.org/D23737

AFFECTED FILES
  sys/netpfil/ipfw/nat64/nat64_translate.c

CHANGE DETAILS

diff --git a/sys/netpfil/ipfw/nat64/nat64_translate.c b/sys/netpfil/ipfw/nat64/nat64_translate.c
--- a/sys/netpfil/ipfw/nat64/nat64_translate.c
+++ b/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.



EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: neel_neelc.org, ae
Cc: imp, ae, melifaro, #contributor_reviews_base, freebsd-net-list, mmacy, kpraveen.lkml_gmail.com, marcnarc_gmail.com, simonvella_gmail.com, novice_techie.com, tommi.pernila_iki.fi

[-- Attachment #2 --]
diff --git a/sys/netpfil/ipfw/nat64/nat64_translate.c b/sys/netpfil/ipfw/nat64/nat64_translate.c
--- a/sys/netpfil/ipfw/nat64/nat64_translate.c
+++ b/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.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?85fbe0e7db6a779f9e3862df7cba8cd4>