summaryrefslogtreecommitdiff
path: root/src/usr.bin/nc/netcat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr.bin/nc/netcat.c')
-rw-r--r--src/usr.bin/nc/netcat.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/usr.bin/nc/netcat.c b/src/usr.bin/nc/netcat.c
index e3c0befef9..dc4fe9e37d 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.45 2002/02/19 22:42:04 ericj Exp $ */ 1/* $OpenBSD: netcat.c,v 1.46 2002/02/28 18:05:36 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -78,7 +78,7 @@ int local_listen(char *, char *, struct addrinfo);
78void readwrite(int); 78void readwrite(int);
79int remote_connect(char *, char *, struct addrinfo); 79int remote_connect(char *, char *, struct addrinfo);
80int socks_connect(char *, char *, struct addrinfo, char *, char *, 80int socks_connect(char *, char *, struct addrinfo, char *, char *,
81 struct addrinfo); 81 struct addrinfo, int);
82int udptest(int); 82int udptest(int);
83int unix_connect(char *); 83int unix_connect(char *);
84int unix_listen(char *); 84int unix_listen(char *);
@@ -87,7 +87,7 @@ void usage(int);
87int 87int
88main(int argc, char *argv[]) 88main(int argc, char *argv[])
89{ 89{
90 int ch, s, ret; 90 int ch, s, ret, socksv;
91 char *host, *uport, *endp; 91 char *host, *uport, *endp;
92 struct addrinfo hints; 92 struct addrinfo hints;
93 struct servent *sv; 93 struct servent *sv;
@@ -99,12 +99,13 @@ main(int argc, char *argv[])
99 99
100 ret = 1; 100 ret = 1;
101 s = 0; 101 s = 0;
102 socksv = 5;
102 host = NULL; 103 host = NULL;
103 uport = NULL; 104 uport = NULL;
104 endp = NULL; 105 endp = NULL;
105 sv = NULL; 106 sv = NULL;
106 107
107 while ((ch = getopt(argc, argv, "46Uhi:klnp:rs:tuvw:x:z")) != -1) { 108 while ((ch = getopt(argc, argv, "46UX:hi:klnp:rs:tuvw:x:z")) != -1) {
108 switch (ch) { 109 switch (ch) {
109 case '4': 110 case '4':
110 family = AF_INET; 111 family = AF_INET;
@@ -115,6 +116,11 @@ main(int argc, char *argv[])
115 case 'U': 116 case 'U':
116 family = AF_UNIX; 117 family = AF_UNIX;
117 break; 118 break;
119 case 'X':
120 socksv = (int)strtoul(optarg, &endp, 10);
121 if ((socksv != 4 && socksv != 5) || *endp != '\0')
122 errx(1, "only SOCKS version 4 and 5 supported");
123 break;
118 case 'h': 124 case 'h':
119 help(); 125 help();
120 break; 126 break;
@@ -306,7 +312,7 @@ main(int argc, char *argv[])
306 312
307 if (xflag) 313 if (xflag)
308 s = socks_connect(host, portlist[i], hints, 314 s = socks_connect(host, portlist[i], hints,
309 proxyhost, proxyport, proxyhints); 315 proxyhost, proxyport, proxyhints, socksv);
310 else 316 else
311 s = remote_connect(host, portlist[i], hints); 317 s = remote_connect(host, portlist[i], hints);
312 318