From 67f9a56d25334db296561d0269b4cec6a7e24cf7 Mon Sep 17 00:00:00 2001 From: Michael Forney 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 ce55972a7c2..24d1c463f51 100644 --- a/usr.bin/nc/netcat.c +++ b/usr.bin/nc/netcat.c @@ -75,6 +75,31 @@ #define TLS_MUSTSTAPLE (1 << 5) #define TLS_COMPAT (1 << 6) +#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 */ @@ -97,7 +122,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 */ @@ -266,12 +290,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; @@ -344,10 +362,6 @@ main(int argc, char *argv[]) argc -= optind; argv += optind; - if (rtableid >= 0) - if (setrtable(rtableid) == -1) - err(1, "setrtable"); - if (family == AF_UNIX) { if (pledge("stdio rpath wpath cpath tmppath unix", NULL) == -1) err(1, "pledge"); @@ -907,8 +921,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; @@ -1721,7 +1739,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\ @@ -1742,7 +1759,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.14.2