diff options
-rw-r--r-- | sbin/ping/ping.8 | 8 | ||||
-rw-r--r-- | sbin/ping/ping.c | 17 | ||||
-rw-r--r-- | usr.sbin/traceroute/traceroute.8 | 6 | ||||
-rw-r--r-- | usr.sbin/traceroute/traceroute.c | 18 |
4 files changed, 32 insertions, 17 deletions
diff --git a/sbin/ping/ping.8 b/sbin/ping/ping.8 index 36c3a8237d8..e5f58fdc434 100644 --- a/sbin/ping/ping.8 +++ b/sbin/ping/ping.8 @@ -1,4 +1,4 @@ -.\" $OpenBSD: ping.8,v 1.59 2016/10/26 16:18:45 jmc Exp $ +.\" $OpenBSD: ping.8,v 1.60 2018/11/10 05:03:23 dlg Exp $ .\" $NetBSD: ping.8,v 1.10 1995/12/31 04:55:35 ghudson Exp $ .\" .\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -57,7 +57,7 @@ .\" .\" @(#)ping.8 8.2 (Berkeley) 12/11/93 .\" -.Dd $Mdocdate: October 26 2016 $ +.Dd $Mdocdate: November 10 2018 $ .Dt PING 8 .Os .Sh NAME @@ -87,6 +87,7 @@ .Op Fl l Ar preload .Op Fl p Ar pattern .Op Fl s Ar packetsize +.Op Fl T Ar toskeyword .Op Fl V Ar rtable .Op Fl w Ar maxwait .Ar host @@ -221,8 +222,7 @@ which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data. The maximum packet size is 65467 for IPv4 and 65527 for IPv6. .It Fl T Ar toskeyword -.Pq IPv4 only -Change the TOS value. +Change the IPv4 TOS or IPv6 Traffic Class value. .Ar toskeyword may be one of .Cm critical , diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c index 5dfbb02eef7..cde44350a5a 100644 --- a/sbin/ping/ping.c +++ b/sbin/ping/ping.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ping.c,v 1.230 2018/10/14 19:47:53 kn Exp $ */ +/* $OpenBSD: ping.c,v 1.231 2018/11/10 05:03:23 dlg Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -150,7 +150,7 @@ int options; /* 0x0200 */ #define F_HDRINCL 0x0400 #define F_TTL 0x0800 -/* 0x1000 */ +#define F_TOS 0x1000 #define F_AUD_RECV 0x2000 #define F_AUD_MISS 0x4000 @@ -291,7 +291,7 @@ main(int argc, char *argv[]) preload = 0; datap = &outpack[ECHOLEN + ECHOTMLEN]; while ((ch = getopt(argc, argv, v6flag ? - "c:dEefHh:I:i:Ll:mNnp:qS:s:V:vw:" : + "c:dEefHh:I:i:Ll:mNnp:qS:s:T:V:vw:" : "DEI:LRS:c:defHi:l:np:qs:T:t:V:vw:")) != -1) { switch(ch) { case 'c': @@ -386,6 +386,7 @@ main(int argc, char *argv[]) #ifndef SMALL case 'T': options |= F_HDRINCL; + options |= F_TOS; errno = 0; errstr = NULL; if (map_tos(optarg, &tos)) @@ -673,6 +674,13 @@ main(int argc, char *argv[]) *(int *)(CMSG_DATA(scmsg)) = hoplimit; } + if (options & F_TOS) { + optval = tos; + if (setsockopt(s, IPPROTO_IPV6, IPV6_TCLASS, &optval, + (socklen_t)sizeof(optval)) < 0) + warn("setsockopt(IPV6_TVAL)"); /* XXX err? */ + } + optval = 1; if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &optval, (socklen_t)sizeof(optval)) < 0) @@ -2160,7 +2168,8 @@ usage(void) fprintf(stderr, "usage: ping6 [-dEefHLmnqv] [-c count] [-h hoplimit] " "[-I sourceaddr]\n\t[-i wait] [-l preload] [-p pattern] " - "[-s packetsize] [-V rtable]\n\t[-w maxwait] host\n"); + "[-s packetsize] [-T toskeyword]\n\t" + "[-V rtable] [-w maxwait] host\n"); } else { fprintf(stderr, "usage: ping [-DdEefHLnqRv] [-c count] [-I ifaddr]" diff --git a/usr.sbin/traceroute/traceroute.8 b/usr.sbin/traceroute/traceroute.8 index 4422a2d7c0a..835d0e28c4c 100644 --- a/usr.sbin/traceroute/traceroute.8 +++ b/usr.sbin/traceroute/traceroute.8 @@ -1,4 +1,4 @@ -.\" $OpenBSD: traceroute.8,v 1.66 2016/10/21 09:26:36 jmc Exp $ +.\" $OpenBSD: traceroute.8,v 1.67 2018/11/10 05:03:23 dlg Exp $ .\" $NetBSD: traceroute.8,v 1.6 1995/10/12 03:05:50 mycroft Exp $ .\" .\" Copyright (c) 1990, 1991, 1993 @@ -33,7 +33,7 @@ .\" .\" @(#)traceroute.8 8.1 (Berkeley) 6/6/93 .\" -.Dd $Mdocdate: October 21 2016 $ +.Dd $Mdocdate: November 10 2018 $ .Dt TRACEROUTE 8 .Os .Sh NAME @@ -62,6 +62,7 @@ .Op Fl p Ar port .Op Fl q Ar nqueries .Op Fl s Ar src_addr +.Op Fl t Ar toskeyword .Op Fl V Ar rtable .Op Fl w Ar waittime .Ar host @@ -196,7 +197,6 @@ Useful values are probably .Cm lowdelay and .Cm throughput . -This option is not available for IPv6. .It Fl V Ar rtable Set the routing table to be used. .It Fl v diff --git a/usr.sbin/traceroute/traceroute.c b/usr.sbin/traceroute/traceroute.c index cd02cd9afa0..02fb48dfb5d 100644 --- a/usr.sbin/traceroute/traceroute.c +++ b/usr.sbin/traceroute/traceroute.c @@ -1,4 +1,4 @@ -/* $OpenBSD: traceroute.c,v 1.157 2018/10/20 19:55:01 kn Exp $ */ +/* $OpenBSD: traceroute.c,v 1.158 2018/11/10 05:03:23 dlg Exp $ */ /* $NetBSD: traceroute.c,v 1.10 1995/05/21 15:50:45 mycroft Exp $ */ /* @@ -414,7 +414,7 @@ main(int argc, char *argv[]) err(1, "sysctl"); conf->max_ttl = i; - while ((ch = getopt(argc, argv, v6flag ? "AcDdf:Ilm:np:q:Ss:w:vV:" : + while ((ch = getopt(argc, argv, v6flag ? "AcDdf:Ilm:np:q:Ss:t:w:vV:" : "AcDdf:g:Ilm:nP:p:q:Ss:t:V:vw:x")) != -1) switch (ch) { case 'A': @@ -802,6 +802,12 @@ main(int argc, char *argv[]) 0) err(1, "bind sndsock"); + if (conf->tflag) { + if (setsockopt(sndsock, IPPROTO_IPV6, IPV6_TCLASS, + &conf->tos, sizeof(conf->tos)) < 0) + err(6, "IPV6_TCLASS"); + } + len = sizeof(from6); if (getsockname(sndsock, (struct sockaddr *)&from6, &len) < 0) err(1, "getsockname"); @@ -943,10 +949,10 @@ void usage(int v6flag) { if (v6flag) { - fprintf(stderr, "usage: traceroute6 [-AcDdIlnSv] [-f first_hop] " - "[-m max_hop] [-p port]\n" - "\t[-q nqueries] [-s src_addr] [-V rtable] [-w waittime] " - "host\n\t[datalen]\n"); + fprintf(stderr, "usage: %s " + "[-AcDdIlnSv] [-f first_hop] [-m max_hop] [-p port]\n" + "\t[-q nqueries] [-s src_addr] [-t toskeyword] [-V rtable] " + "[-w waittime]\n\thost [datalen]\n", __progname); } else { fprintf(stderr, "usage: %s [-AcDdIlnSvx] [-f first_ttl] [-g gateway_addr] " |