summaryrefslogtreecommitdiff
path: root/src/usr.bin/nc/netcat.c
diff options
context:
space:
mode:
authordjm <>2008-05-06 05:47:39 +0000
committerdjm <>2008-05-06 05:47:39 +0000
commit873981cd3d721072cd2256a9b91a254d36e4b264 (patch)
treef8302897a5083ef502422d49fb54004bfa444070 /src/usr.bin/nc/netcat.c
parentad080a65a3e118c1b0f00e67a13c6f40b04446d3 (diff)
downloadopenbsd-873981cd3d721072cd2256a9b91a254d36e4b264.tar.gz
openbsd-873981cd3d721072cd2256a9b91a254d36e4b264.tar.bz2
openbsd-873981cd3d721072cd2256a9b91a254d36e4b264.zip
allow setting of TCP send/receive buffer sizes; ok markus@
Diffstat (limited to 'src/usr.bin/nc/netcat.c')
-rw-r--r--src/usr.bin/nc/netcat.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/usr.bin/nc/netcat.c b/src/usr.bin/nc/netcat.c
index 1c671f2e75..4228326bdd 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.89 2007/02/20 14:11:17 jmc Exp $ */ 1/* $OpenBSD: netcat.c,v 1.90 2008/05/06 05:47:39 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -80,6 +80,8 @@ int vflag; /* Verbosity */
80int xflag; /* Socks proxy */ 80int xflag; /* Socks proxy */
81int zflag; /* Port Scan Flag */ 81int zflag; /* Port Scan Flag */
82int Dflag; /* sodebug */ 82int Dflag; /* sodebug */
83int Iflag; /* TCP receive buffer size */
84int Oflag; /* TCP send buffer size */
83int Sflag; /* TCP MD5 signature option */ 85int Sflag; /* TCP MD5 signature option */
84int Tflag = -1; /* IP Type of Service */ 86int Tflag = -1; /* IP Type of Service */
85 87
@@ -123,7 +125,7 @@ main(int argc, char *argv[])
123 sv = NULL; 125 sv = NULL;
124 126
125 while ((ch = getopt(argc, argv, 127 while ((ch = getopt(argc, argv,
126 "46Ddhi:jklnP:p:rSs:tT:Uuvw:X:x:z")) != -1) { 128 "46DdhI:i:jklnO:P:p:rSs:tT:Uuvw:X:x:z")) != -1) {
127 switch (ch) { 129 switch (ch) {
128 case '4': 130 case '4':
129 family = AF_INET; 131 family = AF_INET;
@@ -205,6 +207,18 @@ main(int argc, char *argv[])
205 case 'D': 207 case 'D':
206 Dflag = 1; 208 Dflag = 1;
207 break; 209 break;
210 case 'I':
211 Iflag = strtonum(optarg, 1, 65536 << 14, &errstr);
212 if (errstr != NULL)
213 errx(1, "TCP receive window %s: %s",
214 errstr, optarg);
215 break;
216 case 'O':
217 Oflag = strtonum(optarg, 1, 65536 << 14, &errstr);
218 if (errstr != NULL)
219 errx(1, "TCP send window %s: %s",
220 errstr, optarg);
221 break;
208 case 'S': 222 case 'S':
209 Sflag = 1; 223 Sflag = 1;
210 break; 224 break;
@@ -781,6 +795,16 @@ set_common_sockopts(int s)
781 &Tflag, sizeof(Tflag)) == -1) 795 &Tflag, sizeof(Tflag)) == -1)
782 err(1, "set IP ToS"); 796 err(1, "set IP ToS");
783 } 797 }
798 if (Iflag) {
799 if (setsockopt(s, SOL_SOCKET, SO_RCVBUF,
800 &Iflag, sizeof(Iflag)) == -1)
801 err(1, "set TCP receive buffer size");
802 }
803 if (Oflag) {
804 if (setsockopt(s, SOL_SOCKET, SO_SNDBUF,
805 &Oflag, sizeof(Oflag)) == -1)
806 err(1, "set TCP send buffer size");
807 }
784} 808}
785 809
786int 810int
@@ -810,10 +834,12 @@ help(void)
810 \t-D Enable the debug socket option\n\ 834 \t-D Enable the debug socket option\n\
811 \t-d Detach from stdin\n\ 835 \t-d Detach from stdin\n\
812 \t-h This help text\n\ 836 \t-h This help text\n\
837 \t-I length TCP receive buffer length\n\
813 \t-i secs\t Delay interval for lines sent, ports scanned\n\ 838 \t-i secs\t Delay interval for lines sent, ports scanned\n\
814 \t-k Keep inbound sockets open for multiple connects\n\ 839 \t-k Keep inbound sockets open for multiple connects\n\
815 \t-l Listen mode, for inbound connects\n\ 840 \t-l Listen mode, for inbound connects\n\
816 \t-n Suppress name/port resolutions\n\ 841 \t-n Suppress name/port resolutions\n\
842 \t-O length TCP send buffer length\n\
817 \t-P proxyuser\tUsername for proxy authentication\n\ 843 \t-P proxyuser\tUsername for proxy authentication\n\
818 \t-p port\t Specify local port for remote connects\n\ 844 \t-p port\t Specify local port for remote connects\n\
819 \t-r Randomize remote ports\n\ 845 \t-r Randomize remote ports\n\
@@ -835,7 +861,8 @@ help(void)
835void 861void
836usage(int ret) 862usage(int ret)
837{ 863{
838 fprintf(stderr, "usage: nc [-46DdhklnrStUuvz] [-i interval] [-P proxy_username] [-p source_port]\n"); 864 fprintf(stderr, "usage: nc [-46DdhklnrStUuvz] [-I receive_buffer_len] [-i interval]\n");
865 fprintf(stderr, "\t [-O send_buffer_len] [-P proxy_username] [-p source_port]\n");
839 fprintf(stderr, "\t [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]\n"); 866 fprintf(stderr, "\t [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]\n");
840 fprintf(stderr, "\t [-x proxy_address[:port]] [hostname] [port[s]]\n"); 867 fprintf(stderr, "\t [-x proxy_address[:port]] [hostname] [port[s]]\n");
841 if (ret) 868 if (ret)