summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/usr.bin/nc/nc.110
-rw-r--r--src/usr.bin/nc/netcat.c14
2 files changed, 17 insertions, 7 deletions
diff --git a/src/usr.bin/nc/nc.1 b/src/usr.bin/nc/nc.1
index 232b6f5b6e..6fdb56e7e3 100644
--- a/src/usr.bin/nc/nc.1
+++ b/src/usr.bin/nc/nc.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: nc.1,v 1.61 2012/07/07 15:33:02 haesbaert Exp $ 1.\" $OpenBSD: nc.1,v 1.62 2013/03/20 09:27:56 sthen Exp $
2.\" 2.\"
3.\" Copyright (c) 1996 David Sacerdote 3.\" Copyright (c) 1996 David Sacerdote
4.\" All rights reserved. 4.\" All rights reserved.
@@ -25,7 +25,7 @@
25.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27.\" 27.\"
28.Dd $Mdocdate: July 7 2012 $ 28.Dd $Mdocdate: March 20 2013 $
29.Dt NC 1 29.Dt NC 1
30.Os 30.Os
31.Sh NAME 31.Sh NAME
@@ -34,7 +34,7 @@
34.Sh SYNOPSIS 34.Sh SYNOPSIS
35.Nm nc 35.Nm nc
36.Bk -words 36.Bk -words
37.Op Fl 46DdhklnrStUuvz 37.Op Fl 46DdhklNnrStUuvz
38.Op Fl I Ar length 38.Op Fl I Ar length
39.Op Fl i Ar interval 39.Op Fl i Ar interval
40.Op Fl O Ar length 40.Op Fl O Ar length
@@ -137,6 +137,10 @@ options.
137Additionally, any timeouts specified with the 137Additionally, any timeouts specified with the
138.Fl w 138.Fl w
139option are ignored. 139option are ignored.
140.It Fl N
141.Xr shutdown 2
142the network socket after EOF on the input.
143Some servers require this to finish their work.
140.It Fl n 144.It Fl n
141Do not do any DNS or service lookups on any specified addresses, 145Do not do any DNS or service lookups on any specified addresses,
142hostnames or ports. 146hostnames or ports.
diff --git a/src/usr.bin/nc/netcat.c b/src/usr.bin/nc/netcat.c
index 93338dac37..33246d7a74 100644
--- a/src/usr.bin/nc/netcat.c
+++ b/src/usr.bin/nc/netcat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: netcat.c,v 1.110 2013/03/12 02:57:37 deraadt Exp $ */ 1/* $OpenBSD: netcat.c,v 1.111 2013/03/20 09:27:56 sthen Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -69,6 +69,7 @@ int dflag; /* detached, no stdin */
69unsigned int iflag; /* Interval Flag */ 69unsigned int iflag; /* Interval Flag */
70int kflag; /* More than one connect */ 70int kflag; /* More than one connect */
71int lflag; /* Bind to local port */ 71int lflag; /* Bind to local port */
72int Nflag; /* shutdown() network socket */
72int nflag; /* Don't do name look up */ 73int nflag; /* Don't do name look up */
73char *Pflag; /* Proxy username */ 74char *Pflag; /* Proxy username */
74char *pflag; /* Localport flag */ 75char *pflag; /* Localport flag */
@@ -131,7 +132,7 @@ main(int argc, char *argv[])
131 sv = NULL; 132 sv = NULL;
132 133
133 while ((ch = getopt(argc, argv, 134 while ((ch = getopt(argc, argv,
134 "46DdhI:i:klnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) { 135 "46DdhI:i:klNnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) {
135 switch (ch) { 136 switch (ch) {
136 case '4': 137 case '4':
137 family = AF_INET; 138 family = AF_INET;
@@ -169,6 +170,9 @@ main(int argc, char *argv[])
169 case 'l': 170 case 'l':
170 lflag = 1; 171 lflag = 1;
171 break; 172 break;
173 case 'N':
174 Nflag = 1;
175 break;
172 case 'n': 176 case 'n':
173 nflag = 1; 177 nflag = 1;
174 break; 178 break;
@@ -771,7 +775,8 @@ readwrite(int nfd)
771 if ((n = read(wfd, buf, plen)) < 0) 775 if ((n = read(wfd, buf, plen)) < 0)
772 return; 776 return;
773 else if (n == 0) { 777 else if (n == 0) {
774 shutdown(nfd, SHUT_WR); 778 if (Nflag)
779 shutdown(nfd, SHUT_WR);
775 pfd[1].fd = -1; 780 pfd[1].fd = -1;
776 pfd[1].events = 0; 781 pfd[1].events = 0;
777 } else { 782 } else {
@@ -1014,6 +1019,7 @@ help(void)
1014 \t-i secs\t Delay interval for lines sent, ports scanned\n\ 1019 \t-i secs\t Delay interval for lines sent, ports scanned\n\
1015 \t-k Keep inbound sockets open for multiple connects\n\ 1020 \t-k Keep inbound sockets open for multiple connects\n\
1016 \t-l Listen mode, for inbound connects\n\ 1021 \t-l Listen mode, for inbound connects\n\
1022 \t-N Shutdown the network socket after EOF on stdin\n\
1017 \t-n Suppress name/port resolutions\n\ 1023 \t-n Suppress name/port resolutions\n\
1018 \t-O length TCP send buffer length\n\ 1024 \t-O length TCP send buffer length\n\
1019 \t-P proxyuser\tUsername for proxy authentication\n\ 1025 \t-P proxyuser\tUsername for proxy authentication\n\
@@ -1039,7 +1045,7 @@ void
1039usage(int ret) 1045usage(int ret)
1040{ 1046{
1041 fprintf(stderr, 1047 fprintf(stderr,
1042 "usage: nc [-46DdhklnrStUuvz] [-I length] [-i interval] [-O length]\n" 1048 "usage: nc [-46DdhklNnrStUuvz] [-I length] [-i interval] [-O length]\n"
1043 "\t [-P proxy_username] [-p source_port] [-s source] [-T ToS]\n" 1049 "\t [-P proxy_username] [-p source_port] [-s source] [-T ToS]\n"
1044 "\t [-V rtable] [-w timeout] [-X proxy_protocol]\n" 1050 "\t [-V rtable] [-w timeout] [-X proxy_protocol]\n"
1045 "\t [-x proxy_address[:port]] [destination] [port]\n"); 1051 "\t [-x proxy_address[:port]] [destination] [port]\n");