diff options
| author | markus <> | 2002-02-28 18:05:36 +0000 |
|---|---|---|
| committer | markus <> | 2002-02-28 18:05:36 +0000 |
| commit | 409c42a31740ca9da36e066b8f180e668520958c (patch) | |
| tree | 9bb91c8654057cd73f96714ebbe6969bb46707dc /src/usr.bin/nc/netcat.c | |
| parent | ea9376d8ab0390826e5a195af0edfa4014c15cef (diff) | |
| download | openbsd-409c42a31740ca9da36e066b8f180e668520958c.tar.gz openbsd-409c42a31740ca9da36e066b8f180e668520958c.tar.bz2 openbsd-409c42a31740ca9da36e066b8f180e668520958c.zip | |
add support for SOCKS4 with option -X socks_version, default is 5; ok ericj@
Diffstat (limited to '')
| -rw-r--r-- | src/usr.bin/nc/netcat.c | 16 |
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); | |||
| 78 | void readwrite(int); | 78 | void readwrite(int); |
| 79 | int remote_connect(char *, char *, struct addrinfo); | 79 | int remote_connect(char *, char *, struct addrinfo); |
| 80 | int socks_connect(char *, char *, struct addrinfo, char *, char *, | 80 | int socks_connect(char *, char *, struct addrinfo, char *, char *, |
| 81 | struct addrinfo); | 81 | struct addrinfo, int); |
| 82 | int udptest(int); | 82 | int udptest(int); |
| 83 | int unix_connect(char *); | 83 | int unix_connect(char *); |
| 84 | int unix_listen(char *); | 84 | int unix_listen(char *); |
| @@ -87,7 +87,7 @@ void usage(int); | |||
| 87 | int | 87 | int |
| 88 | main(int argc, char *argv[]) | 88 | main(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 | ||
