Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Oct 2012 18:47:59 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r241904 - vendor/netcat/dist
Message-ID:  <201210221847.q9MIlxJD077101@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Mon Oct 22 18:47:59 2012
New Revision: 241904
URL: http://svn.freebsd.org/changeset/base/241904

Log:
  Vendor import from OpenBSD 5.1.

Modified:
  vendor/netcat/dist/nc.1
  vendor/netcat/dist/netcat.c
  vendor/netcat/dist/socks.c

Modified: vendor/netcat/dist/nc.1
==============================================================================
--- vendor/netcat/dist/nc.1	Mon Oct 22 18:25:04 2012	(r241903)
+++ vendor/netcat/dist/nc.1	Mon Oct 22 18:47:59 2012	(r241904)
@@ -1,4 +1,4 @@
-.\"     $OpenBSD: nc.1,v 1.60 2012/02/07 12:11:43 lum Exp $
+.\"     $OpenBSD: nc.1,v 1.61 2012/07/07 15:33:02 haesbaert Exp $
 .\"
 .\" Copyright (c) 1996 David Sacerdote
 .\" All rights reserved.
@@ -25,7 +25,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: October 4 2011 $
+.Dd $Mdocdate: February 7 2012 $
 .Dt NC 1
 .Os
 .Sh NAME
@@ -119,6 +119,10 @@ is completed.
 It is an error to use this option without the
 .Fl l
 option.
+When used together with the
+.Fl u
+option, the server socket is not connected and it can receive UDP datagrams from
+multiple hosts.
 .It Fl l
 Used to specify that
 .Nm

Modified: vendor/netcat/dist/netcat.c
==============================================================================
--- vendor/netcat/dist/netcat.c	Mon Oct 22 18:25:04 2012	(r241903)
+++ vendor/netcat/dist/netcat.c	Mon Oct 22 18:47:59 2012	(r241904)
@@ -1,4 +1,4 @@
-/* $OpenBSD: netcat.c,v 1.105 2012/02/09 06:25:35 lum Exp $ */
+/* $OpenBSD: netcat.c,v 1.109 2012/07/07 15:33:02 haesbaert Exp $ */
 /*
  * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
  *
@@ -67,7 +67,6 @@
 /* Command Line Options */
 int	dflag;					/* detached, no stdin */
 unsigned int iflag;				/* Interval Flag */
-int	jflag;					/* use jumbo frames if we can */
 int	kflag;					/* More than one connect */
 int	lflag;					/* Bind to local port */
 int	nflag;					/* Don't do name look up */
@@ -107,6 +106,7 @@ int	unix_connect(char *);
 int	unix_listen(char *);
 void	set_common_sockopts(int);
 int	map_tos(char *, int *);
+void	report_connect(const struct sockaddr *, socklen_t);
 void	usage(int);
 
 int
@@ -131,7 +131,7 @@ main(int argc, char *argv[])
 	sv = NULL;
 
 	while ((ch = getopt(argc, argv,
-	    "46DdhI:i:jklnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) {
+	    "46DdhI:i:klnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) {
 		switch (ch) {
 		case '4':
 			family = AF_INET;
@@ -163,9 +163,6 @@ main(int argc, char *argv[])
 			if (errstr)
 				errx(1, "interval %s: %s", errstr, optarg);
 			break;
-		case 'j':
-			jflag = 1;
-			break;
 		case 'k':
 			kflag = 1;
 			break;
@@ -348,17 +345,23 @@ main(int argc, char *argv[])
 			if (s < 0)
 				err(1, NULL);
 			/*
-			 * For UDP, we will use recvfrom() initially
-			 * to wait for a caller, then use the regular
-			 * functions to talk to the caller.
+			 * For UDP and -k, don't connect the socket, let it
+			 * receive datagrams from multiple socket pairs.
 			 */
-			if (uflag) {
+			if (uflag && kflag)
+				readwrite(s);
+			/*
+			 * For UDP and not -k, we will use recvfrom() initially
+			 * to wait for a caller, then use the regular functions
+			 * to talk to the caller.
+			 */
+			else if (uflag && !kflag) {
 				int rv, plen;
 				char buf[16384];
 				struct sockaddr_storage z;
 
 				len = sizeof(z);
-				plen = jflag ? 16384 : 2048;
+				plen = 2048;
 				rv = recvfrom(s, buf, plen, MSG_PEEK,
 				    (struct sockaddr *)&z, &len);
 				if (rv < 0)
@@ -368,11 +371,20 @@ main(int argc, char *argv[])
 				if (rv < 0)
 					err(1, "connect");
 
+				if (vflag)
+					report_connect((struct sockaddr *)&z, len);
+
 				readwrite(s);
 			} else {
 				len = sizeof(cliaddr);
 				connfd = accept(s, (struct sockaddr *)&cliaddr,
 				    &len);
+				if (connfd == -1)
+					err(1, "accept");
+
+				if (vflag)
+					report_connect((struct sockaddr *)&cliaddr, len);
+
 				readwrite(connfd);
 				close(connfd);
 			}
@@ -717,7 +729,7 @@ readwrite(int nfd)
 	int lfd = fileno(stdout);
 	int plen;
 
-	plen = jflag ? 16384 : 2048;
+	plen = 2048;
 
 	/* Setup Network FD */
 	pfd[0].fd = nfd;
@@ -896,11 +908,6 @@ set_common_sockopts(int s)
 			&x, sizeof(x)) == -1)
 			err(1, NULL);
 	}
-	if (jflag) {
-		if (setsockopt(s, SOL_SOCKET, SO_JUMBO,
-			&x, sizeof(x)) == -1)
-			err(1, NULL);
-	}
 	if (Tflag != -1) {
 		if (setsockopt(s, IPPROTO_IP, IP_TOS,
 		    &Tflag, sizeof(Tflag)) == -1)
@@ -967,6 +974,32 @@ map_tos(char *s, int *val)
 }
 
 void
+report_connect(const struct sockaddr *sa, socklen_t salen)
+{
+	char remote_host[NI_MAXHOST];
+	char remote_port[NI_MAXSERV];
+	int herr;
+	int flags = NI_NUMERICSERV;
+	
+	if (nflag)
+		flags |= NI_NUMERICHOST;
+	
+	if ((herr = getnameinfo(sa, salen,
+	    remote_host, sizeof(remote_host),
+	    remote_port, sizeof(remote_port),
+	    flags)) != 0) {
+		if (herr == EAI_SYSTEM)
+			err(1, "getnameinfo");
+		else
+			errx(1, "getnameinfo: %s", gai_strerror(herr));
+	}
+	
+	fprintf(stderr,
+	    "Connection from %s %s "
+	    "received!\n", remote_host, remote_port);
+}
+
+void
 help(void)
 {
 	usage(0);

Modified: vendor/netcat/dist/socks.c
==============================================================================
--- vendor/netcat/dist/socks.c	Mon Oct 22 18:25:04 2012	(r241903)
+++ vendor/netcat/dist/socks.c	Mon Oct 22 18:47:59 2012	(r241904)
@@ -1,4 +1,4 @@
-/*	$OpenBSD: socks.c,v 1.19 2011/02/12 15:54:18 okan Exp $	*/
+/*	$OpenBSD: socks.c,v 1.20 2012/03/08 09:56:28 espie Exp $	*/
 
 /*
  * Copyright (c) 1999 Niklas Hallqvist.  All rights reserved.
@@ -231,12 +231,12 @@ socks_connect(const char *host, const ch
 		case SOCKS_IPV4:
 			cnt = atomicio(read, proxyfd, buf + 4, 6);
 			if (cnt != 6)
-				err(1, "read failed (%d/6)", cnt);
+				err(1, "read failed (%zu/6)", cnt);
 			break;
 		case SOCKS_IPV6:
 			cnt = atomicio(read, proxyfd, buf + 4, 18);
 			if (cnt != 18)
-				err(1, "read failed (%d/18)", cnt);
+				err(1, "read failed (%zu/18)", cnt);
 			break;
 		default:
 			errx(1, "connection failed, unsupported address type");



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