summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authorjca <jca@openbsd.org>2015-02-14 22:40:22 +0000
committerDamien Miller <djm@mindrot.org>2020-05-29 14:47:11 +1000
commite18435fec124b4c08eb6bbbbee9693dc04f4befb (patch)
tree8d5321f5d58bf35fe50f39aa9f9f800db580d4fe /regress
parent4c607244054a036ad3b2449a6cb4c15feb846a76 (diff)
partial sync of regress/netcat.c with upstream
Support for nc -T on IPv6 addresses. ok sthen@
Diffstat (limited to 'regress')
-rw-r--r--regress/netcat.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/regress/netcat.c b/regress/netcat.c
index fe94dd908..50934f3f2 100644
--- a/regress/netcat.c
+++ b/regress/netcat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: netcat.c,v 1.126 2014/10/30 16:08:31 tedu Exp $ */ 1/* $OpenBSD: netcat.c,v 1.127 2015/02/14 22:40:22 jca Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -133,7 +133,7 @@ int udptest(int);
133int unix_bind(char *); 133int unix_bind(char *);
134int unix_connect(char *); 134int unix_connect(char *);
135int unix_listen(char *); 135int unix_listen(char *);
136void set_common_sockopts(int); 136void set_common_sockopts(int, int);
137int map_tos(char *, int *); 137int map_tos(char *, int *);
138void report_connect(const struct sockaddr *, socklen_t); 138void report_connect(const struct sockaddr *, socklen_t);
139void usage(int); 139void usage(int);
@@ -648,7 +648,7 @@ remote_connect(const char *host, const char *port, struct addrinfo hints)
648 freeaddrinfo(ares); 648 freeaddrinfo(ares);
649 } 649 }
650 650
651 set_common_sockopts(s); 651 set_common_sockopts(s, res0->ai_family);
652 652
653 if (timeout_connect(s, res0->ai_addr, res0->ai_addrlen) == 0) 653 if (timeout_connect(s, res0->ai_addr, res0->ai_addrlen) == 0)
654 break; 654 break;
@@ -748,7 +748,7 @@ local_listen(char *host, char *port, struct addrinfo hints)
748 if (ret == -1) 748 if (ret == -1)
749 err(1, "setsockopt SO_REUSEADDR"); 749 err(1, "setsockopt SO_REUSEADDR");
750#endif 750#endif
751 set_common_sockopts(s); 751 set_common_sockopts(s, res0->ai_family);
752 752
753 if (bind(s, (struct sockaddr *)res0->ai_addr, 753 if (bind(s, (struct sockaddr *)res0->ai_addr,
754 res0->ai_addrlen) == 0) 754 res0->ai_addrlen) == 0)
@@ -1168,7 +1168,7 @@ udptest(int s)
1168} 1168}
1169 1169
1170void 1170void
1171set_common_sockopts(int s) 1171set_common_sockopts(int s, int af)
1172{ 1172{
1173 int x = 1; 1173 int x = 1;
1174 1174
@@ -1186,8 +1186,17 @@ set_common_sockopts(int s)
1186 } 1186 }
1187#ifdef IP_TOS 1187#ifdef IP_TOS
1188 if (Tflag != -1) { 1188 if (Tflag != -1) {
1189 if (setsockopt(s, IPPROTO_IP, IP_TOS, 1189 int proto, option;
1190 &Tflag, sizeof(Tflag)) == -1) 1190
1191 if (af == AF_INET6) {
1192 proto = IPPROTO_IPV6;
1193 option = IPV6_TCLASS;
1194 } else {
1195 proto = IPPROTO_IP;
1196 option = IP_TOS;
1197 }
1198
1199 if (setsockopt(s, proto, option, &Tflag, sizeof(Tflag)) == -1)
1191 err(1, "set IP ToS"); 1200 err(1, "set IP ToS");
1192 } 1201 }
1193#endif 1202#endif