Change dumpon(8)'s handling of -g.

Rather than using a special value to denote "use the default router",
treat the absence of the -g option to mean the same thing.  The
in-kernel netdump client will always attempt to reach the server
directly before falling back to the configured gateway anyway.  This
change makes it cleaner to support a hostname value for -g.

Reviewed by:	cem
MFC after:	3 days
Differential Revision:	https://reviews.freebsd.org/D18025
This commit is contained in:
Mark Johnston 2018-11-18 01:58:48 +00:00
parent 92e78c1012
commit e5fff57dd0
2 changed files with 24 additions and 23 deletions

View File

@ -28,7 +28,7 @@
.\" From: @(#)swapon.8 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
.Dd October 26, 2018
.Dd November 17, 2018
.Dt DUMPON 8
.Os
.Sh NAME
@ -46,7 +46,7 @@
.Op Fl k Ar pubkey
.Op Fl Z
.Op Fl z
.Op Fl g Ar gateway | Li default
.Op Fl g Ar gateway
.Fl s Ar server
.Fl c Ar client
.Ar iface
@ -140,21 +140,22 @@ The local IP address of the
.Xr netdump 4
client.
.It Fl g Ar gateway
Optional.
If not specified, it is assumed that the
.Ar server
is on the same link as the
.Ar client .
.Pp
If specified,
.Ar gateway
is the address of the first-hop router between the
The first-hop router between
.Ar client
and the
and
.Ar server .
The special value
.Dv Dq default
indicates that the currently configured system default route should be used.
If the
.Fl g
option is not specified and the system has a default route, the default
router is used as the
.Xr netdump 4
gateway.
If the
.Fl g
option is not specified and the system does not have a default route,
.Ar server
is assumed to be on the same link as
.Ar client .
.It Fl s Ar server
The IP address of the
.Xr netdumpd 8

View File

@ -88,7 +88,7 @@ usage(void)
fprintf(stderr,
"usage: dumpon [-v] [-k <pubkey>] [-Zz] <device>\n"
" dumpon [-v] [-k <pubkey>] [-Zz]\n"
" [-g <gateway>|default] -s <server> -c <client> <iface>\n"
" [-g <gateway>] -s <server> -c <client> <iface>\n"
" dumpon [-v] off\n"
" dumpon [-v] -l\n");
exit(EX_USAGE);
@ -109,8 +109,6 @@ find_gateway(const char *ifname)
size_t sz;
int error, i, ifindex, mib[7];
ret = NULL;
/* First look up the interface index. */
if (getifaddrs(&ifap) != 0)
err(EX_OSERR, "getifaddrs");
@ -148,6 +146,7 @@ find_gateway(const char *ifname)
free(buf);
}
ret = NULL;
for (next = buf; next < buf + sz; next += rtm->rtm_msglen) {
rtm = (struct rt_msghdr *)(void *)next;
if (rtm->rtm_version != RTM_VERSION)
@ -476,12 +475,13 @@ main(int argc, char *argv[])
if (inet_aton(client, &ndconf.ndc_client) == 0)
errx(EX_USAGE, "invalid client address '%s'", client);
if (gateway == NULL)
gateway = find_gateway(argv[0]);
if (gateway == NULL) {
if (verbose)
printf("failed to look up gateway for %s\n",
server);
gateway = server;
else if (strcmp(gateway, "default") == 0 &&
(gateway = find_gateway(argv[0])) == NULL)
errx(EX_NOHOST,
"failed to look up next-hop router for %s", server);
}
if (inet_aton(gateway, &ndconf.ndc_gateway) == 0)
errx(EX_USAGE, "invalid gateway address '%s'", gateway);