From owner-ports-jp@jp.FreeBSD.org Tue Jan 29 14:34:08 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g0T5Y8o81514;
	Tue, 29 Jan 2002 14:34:08 +0900 (JST)
	(envelope-from owner-ports-jp@jp.FreeBSD.org)
Received: from pelsia.netmove.co.jp (pelsia.netmove.co.jp [202.241.207.159])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g0T5Y7681498
	for <ports-jp@jp.FreeBSD.org>; Tue, 29 Jan 2002 14:34:07 +0900 (JST)
	(envelope-from shige@netmove.co.jp)
Received: (from nork@localhost)
	by pelsia.netmove.co.jp (8.11.6/8.11.6) id g0T5Y1N37717;
	Tue, 29 Jan 2002 14:34:01 +0900 (JST)
	(envelope-from nork)
From: nork@cityfujisawa.ne.jp (Norikatsu Shigemura)
To: ports-jp@jp.FreeBSD.org
X-Mailer: mnews [version 1.22PL5] 2001-02/07(Wed)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Date: Tue, 29 Jan 2002 14:34:01 +0900
Message-ID: <020129143401.M0137333@pelsia.netmove.co.jp>
Reply-To: ports-jp@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+011218
X-Sequence: ports-jp 12313
Subject: [ports-jp 12313] NcFTP3 with IP_PORTRANGE
Errors-To: owner-ports-jp@jp.FreeBSD.org
Sender: owner-ports-jp@jp.FreeBSD.org
X-Originator: nork@cityfujisawa.ne.jp

$B=EB<K!9n$G$9!#(B

	ftp.sra.co.jp $B$K(B ncftp $B$G(B FTP $B$G$-$J$$$J$!$H;W$C$F(B(ftp $B$@$H$G$-(B
	$B$k(B) /var/log/security $B8+$?$i(B, $B8+;v7bDF$5$l$F$^$7$?(B(49152-65535
	$B$OL5>r7o$K3+$1$F$$$k$N$G$"$C$?!D(B)$B!#99$K(B PASV $B$,$G$-$J$$%5!<%P!<(B
	$B$J$N$G%j%+%P%j!<$G$-$:!#(B

# $B$[$s$H$O(B FTP $B$N5sF0$r8+$F7j$r3+$1$?$$!D(B..
# $B$G$b$d$jJ}$,$o$+$i$J$$(B... > ipfw

	$B$=$&$$$&;v>p$G(B ftp $B$N5sF0$rD4$Y$F$_$?$i(B IP_PORTRANGE $B$J$k(B socket
	$B$N%*%W%7%g%s$r@_Dj$7$F$d$l$P$$$$$N$,$o$+$C$?$N$G<j$r2C$($F$_$^$7(B
	$B$?!#<+J,E*$K$O2<5-$N%Q%C%A$G==J,$J$N$G$9$,(B($B<+J,E*$K$O%a%s%F%J%s(B
	$B%9$b4JC1$@$7!D(B:-), 1.IPv6 $BBP1~$,LLE]$@$C$?$N$H(B, 2.$B0J2<$NBP1~$G%i(B
	$B%$%V%i%jE*$K$O(B OK $B$G$7$g$&$,(B, ncftp $B%D!<%k$H$7$F$3$l$N@)8f$,$G$-(B
	$B$J$$(B($B$H$$$&$+LLE]$@$C$?(B)$B$H$$$C$?$H$3$m$G(B, $BL$40@.$b$$$$$H$3$m$HI>(B
	$B2A$7$F$$$^$9!#(BIPv6 $B%Q%C%A$NB8:_$H$NMm$_(B(conflict $B$9$k(B)$B$G:n<T$K%U(B
	$B%#!<%I%P%C%/$7$F$$$$$b$N$+$bJ,$+$j$^$;$s$7(B, $BC/$+0z$-<h$C$F$/$@$5(B
	$B$l$P9,$$$G$9!#(B

# $B<!$O(B wget.

--- ftp/ncftp3/Makefile.local.orig	Thu Jan  1 09:00:00 1970
+++ ftp/ncftp3/Makefile.local	Mon Jan 28 15:32:12 2002
@@ -0,0 +1 @@
+CFLAGS+=	-DIP_PORTRANGE_POLICY="IP_PORTRANGE_HIGH"
--- ftp/ncftp3/libncftp/errno.c.orig	Mon Apr 16 02:37:11 2001
+++ ftp/ncftp3/libncftp/errno.c	Mon Jan 28 15:36:13 2002
@@ -105,6 +105,7 @@
 	"timed out while waiting for server response",			/* -193 */
 	"data transfer timed out",					/* -194 */
 	"canceled by user",						/* -195 */
+	"system dose not support portrange",				/* -196 */
 	NULL,								
 };
 
--- ftp/ncftp3/libncftp/ftp.c.orig	Tue Jan 29 13:50:38 2002
+++ ftp/ncftp3/libncftp/ftp.c	Tue Jan 29 13:54:00 2002
@@ -341,6 +341,21 @@
 #endif /* SO_OOBINLINE */
 
 
+int
+SetPortRange(const FTPCIPtr cip, int sockfd, int type)
+{
+#ifndef	IP_PORTRANGE
+	cip->errNo = kErrSetPortRange;
+	return (kErrSetPortRange);
+#else
+	if (setsockopt(sockfd, IPPROTO_IP, IP_PORTRANGE, (char *) &type, (int) sizeof(type)) < 0) {
+		/* Error(cip, kDoPerror, "setsockopt PORTRANGE.\n"); */
+		cip->errNo = kErrSetPortRange;
+		return (kErrSetPortRange);
+	}
+	return (kNoErr);
+#endif	/* IP_PORTRANGE */
+}	/* SetPortRange */
 
 
 #ifndef NO_SIGNALS
@@ -1338,6 +1353,13 @@
 	 * size specified.
 	 */
 	(void) SetSockBufSize(dataSocket, cip->dataSocketRBufSize, cip->dataSocketSBufSize);
+
+#ifdef IP_PORTRANGE
+#ifndef	IP_PORTRANGE_POLICY
+#define	IP_PORTRANGE_POLICY	IP_PORTRANGE_HIGH
+#endif
+	(void) SetPortRange(cip, dataSocket, IP_PORTRANGE_POLICY);
+#endif
 
 	if ((cip->hasPASV == kCommandNotAvailable) || (mode == kSendPortMode)) {
 tryPort:
--- ftp/ncftp3/libncftp/ftp.h.orig	Mon Apr 16 02:37:15 2001
+++ ftp/ncftp3/libncftp/ftp.h	Mon Jan 28 15:25:08 2002
@@ -20,3 +20,4 @@
 int AcceptDataConnection(const FTPCIPtr);
 void HangupOnServer(const FTPCIPtr);
 void SendTelnetInterrupt(const FTPCIPtr);
+int SetPortRange(const FTPCIPtr, int, int);
--- ftp/ncftp3/libncftp/ncftp_errno.h.orig	Mon Apr 16 02:37:26 2001
+++ ftp/ncftp3/libncftp/ncftp_errno.h	Mon Jan 28 15:23:17 2002
@@ -110,4 +110,5 @@
 #define kErrControlTimedOut			(-193)
 #define kErrDataTimedOut			(-194)
 #define kErrUserCanceled			(-195)
-#define kErrLast				(195)
+#define kErrSetPortRange			(-196)
+#define kErrLast				(196)
