1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
From 0d05008cdf8188f66789de23e581d46608ad036b Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Fri, 16 Jun 2017 20:32:42 -0700
Subject: [PATCH] nc: Port to linux
---
usr.bin/nc/netcat.c | 45 +++++++++++++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 14 deletions(-)
diff --git a/usr.bin/nc/netcat.c b/usr.bin/nc/netcat.c
index 3798dc760f1..6cbf346ed10 100644
--- a/usr.bin/nc/netcat.c
+++ b/usr.bin/nc/netcat.c
@@ -73,6 +73,31 @@
#define TLS_CCERT (1 << 3)
#define TLS_MUSTSTAPLE (1 << 4)
+#ifndef IPTOS_DSCP_CS0
+# define IPTOS_DSCP_CS0 0x00
+#endif
+#ifndef IPTOS_DSCP_CS1
+# define IPTOS_DSCP_CS1 0x20
+#endif
+#ifndef IPTOS_DSCP_CS2
+# define IPTOS_DSCP_CS2 0x40
+#endif
+#ifndef IPTOS_DSCP_CS3
+# define IPTOS_DSCP_CS3 0x60
+#endif
+#ifndef IPTOS_DSCP_CS4
+# define IPTOS_DSCP_CS4 0x80
+#endif
+#ifndef IPTOS_DSCP_CS5
+# define IPTOS_DSCP_CS5 0xa0
+#endif
+#ifndef IPTOS_DSCP_CS6
+# define IPTOS_DSCP_CS6 0xc0
+#endif
+#ifndef IPTOS_DSCP_CS7
+# define IPTOS_DSCP_CS7 0xe0
+#endif
+
/* Command Line Options */
int dflag; /* detached, no stdin */
int Fflag; /* fdpass sock to stdout */
@@ -95,7 +120,6 @@ int Iflag; /* TCP receive buffer size */
int Oflag; /* TCP send buffer size */
int Sflag; /* TCP MD5 signature option */
int Tflag = -1; /* IP Type of Service */
-int rtableid = -1;
int usetls; /* use TLS */
char *Cflag; /* Public cert file */
@@ -267,12 +291,6 @@ main(int argc, char *argv[])
case 'u':
uflag = 1;
break;
- case 'V':
- rtableid = (int)strtonum(optarg, 0,
- RT_TABLEID_MAX, &errstr);
- if (errstr)
- errx(1, "rtable %s: %s", errstr, optarg);
- break;
case 'v':
vflag = 1;
break;
@@ -345,10 +363,6 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
- if (rtableid >= 0)
- if (setrtable(rtableid) == -1)
- err(1, "setrtable");
-
/* Cruft to make sure options are clean, and used properly. */
if (argv[0] && !argv[1] && family == AF_UNIX) {
host = argv[0];
@@ -923,8 +937,12 @@ remote_connect(const char *host, const char *port, struct addrinfo hints)
if (sflag || pflag) {
struct addrinfo ahints, *ares;
- /* try SO_BINDANY, but don't insist */
+ /* try SO_BINDANY/IP_TRANSPARENT, but don't insist */
+#if defined(SO_BINDANY)
setsockopt(s, SOL_SOCKET, SO_BINDANY, &on, sizeof(on));
+#elif defined(IP_TRANSPARENT)
+ setsockopt(s, SOL_IP, IP_TRANSPARENT, &on, sizeof(on));
+#endif
memset(&ahints, 0, sizeof(struct addrinfo));
ahints.ai_family = res->ai_family;
ahints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM;
@@ -1754,7 +1772,6 @@ help(void)
\t-t Answer TELNET negotiation\n\
\t-U Use UNIX domain socket\n\
\t-u UDP mode\n\
- \t-V rtable Specify alternate routing table\n\
\t-v Verbose\n\
\t-W recvlimit Terminate after receiving a number of packets\n\
\t-w timeout Timeout for connects and final net reads\n\
@@ -1775,7 +1792,7 @@ usage(int ret)
"\t [-i interval] [-K keyfile] [-M ttl] [-m minttl] [-O length]\n"
"\t [-o staplefile] [-P proxy_username] [-p source_port] "
"[-R CAfile]\n"
- "\t [-s source] [-T keyword] [-V rtable] [-W recvlimit] "
+ "\t [-s source] [-T keyword] [-W recvlimit] "
"[-w timeout]\n"
"\t [-X proxy_protocol] [-x proxy_address[:port]] "
"[-Z peercertfile]\n"
--
2.19.0
|