The default traceroute timeout of 5 seconds is excruciatingly long
when there are elements of the route that don't respond, and it
wasn't allowed to be set lower than 2 seconds.
This changes the minimum to 1 second, matching FreeBSD, and also
makes that the default, which should be reasonable for the vast
majority of users today.
The two awk files in this directory are two decades old, and
not installed anywhere they can be executed as part of a traceroute
pipeline; can they be removed? If the functionality is useful,
implementing mean/median reporting as a new option in C would be
straightforward.
Index: usr.sbin/traceroute/traceroute.8
===================================================================
RCS file: /cvs/src/usr.sbin/traceroute/traceroute.8,v
retrieving revision 1.69
diff -u -p -u -r1.69 traceroute.8
--- usr.sbin/traceroute/traceroute.8 11 Feb 2020 18:41:39 -0000 1.69
+++ usr.sbin/traceroute/traceroute.8 20 Aug 2021 06:33:30 -0000
@@ -201,7 +201,7 @@ and
are listed.
.It Fl w Ar waittime
Set the time, in seconds, to wait for a response to a probe.
-The default is 5.
+The default is 1.
.It Fl x
Print the ICMP extended headers if available.
This option is not available for IPv6.
Index: usr.sbin/traceroute/traceroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/traceroute/traceroute.c,v
retrieving revision 1.164
diff -u -p -u -r1.164 traceroute.c
--- usr.sbin/traceroute/traceroute.c 12 Jul 2021 15:09:21 -0000 1.164
+++ usr.sbin/traceroute/traceroute.c 20 Aug 2021 06:33:30 -0000
@@ -351,7 +351,7 @@ main(int argc, char *argv[])
rcvsock4 = rcvsock6 = sndsock4 = sndsock6 = -1;
v4sock_errno = v6sock_errno = 0;
- conf->waittime = 5 * 1000;
+ conf->waittime = 1000;
if ((rcvsock6 = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) == -1)
v6sock_errno = errno;
@@ -554,9 +554,9 @@ main(int argc, char *argv[])
err(1, "setsockopt SO_RTABLE");
break;
case 'w':
- conf->waittime = strtonum(optarg, 2, INT_MAX, &errstr);
+ conf->waittime = strtonum(optarg, 1, INT_MAX, &errstr);
if (errstr)
- errx(1, "wait must be >1 sec.");
+ errx(1, "wait must be >=1 sec.");
conf->waittime *= 1000;
break;
case 'x':