Author: markj
Date: Sun Nov 18 01:58:48 2018
New Revision: 340547
URL: https://svnweb.freebsd.org/changeset/base/340547

Log:
  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

Modified:
  head/sbin/dumpon/dumpon.8
  head/sbin/dumpon/dumpon.c

Modified: head/sbin/dumpon/dumpon.8
==============================================================================
--- head/sbin/dumpon/dumpon.8   Sun Nov 18 01:27:17 2018        (r340546)
+++ head/sbin/dumpon/dumpon.8   Sun Nov 18 01:58:48 2018        (r340547)
@@ -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

Modified: head/sbin/dumpon/dumpon.c
==============================================================================
--- head/sbin/dumpon/dumpon.c   Sun Nov 18 01:27:17 2018        (r340546)
+++ head/sbin/dumpon/dumpon.c   Sun Nov 18 01:58:48 2018        (r340547)
@@ -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);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to