Author: rmacklem
Date: Sat Apr 13 21:45:45 2019
New Revision: 346190
URL: https://svnweb.freebsd.org/changeset/base/346190

Log:
  Fix nfsdumpstate(8) so that it can print out INET6 callback addresses.
  
  The patch adds support for printing of INET6 callback addresses.
  It also adds the #ifdef INET, INET6 as requested by bz@.
  
  PR:           223036
  Reviewed by:  bz, rgrimes
  MFC after:    2 weeks
  Differential Revision:        https://reviews.freebsd.org/D19839

Modified:
  head/usr.sbin/nfsdumpstate/Makefile
  head/usr.sbin/nfsdumpstate/nfsdumpstate.c

Modified: head/usr.sbin/nfsdumpstate/Makefile
==============================================================================
--- head/usr.sbin/nfsdumpstate/Makefile Sat Apr 13 20:49:16 2019        
(r346189)
+++ head/usr.sbin/nfsdumpstate/Makefile Sat Apr 13 21:45:45 2019        
(r346190)
@@ -1,6 +1,15 @@
 # $FreeBSD$
 
+.include <src.opts.mk>
+
 PROG=  nfsdumpstate
 MAN=   nfsdumpstate.8
+
+.if ${MK_INET_SUPPORT} != "no"
+CFLAGS+= -DINET
+.endif
+.if ${MK_INET6_SUPPORT} != "no"
+CFLAGS+= -DINET6
+.endif
 
 .include <bsd.prog.mk>

Modified: head/usr.sbin/nfsdumpstate/nfsdumpstate.c
==============================================================================
--- head/usr.sbin/nfsdumpstate/nfsdumpstate.c   Sat Apr 13 20:49:16 2019        
(r346189)
+++ head/usr.sbin/nfsdumpstate/nfsdumpstate.c   Sat Apr 13 21:45:45 2019        
(r346190)
@@ -121,13 +121,14 @@ dump_openstate(void)
 {
        struct nfsd_dumplist dumplist;
        int cnt, i;
+       char nbuf[INET6_ADDRSTRLEN];
 
        dumplist.ndl_size = DUMPSIZE;
        dumplist.ndl_list = (void *)dp;
        if (nfssvc(NFSSVC_DUMPCLIENTS, &dumplist) < 0)
                errx(1, "Can't perform dump clients syscall");
 
-       printf("%-13s %9.9s %9.9s %9.9s %9.9s %9.9s %9.9s %-15s %s\n",
+       printf("%-13s %9.9s %9.9s %9.9s %9.9s %9.9s %9.9s %-45s %s\n",
            "Flags", "OpenOwner", "Open", "LockOwner",
            "Lock", "Deleg", "OldDeleg", "Clientaddr", "ClientID");
        /*
@@ -143,9 +144,23 @@ dump_openstate(void)
                    dp[cnt].ndcl_nlocks,
                    dp[cnt].ndcl_ndelegs,
                    dp[cnt].ndcl_nolddelegs);
-               if (dp[cnt].ndcl_addrfam == AF_INET)
-                       printf("%-15s ",
+               switch (dp[cnt].ndcl_addrfam) {
+#ifdef INET
+               case AF_INET:
+                       printf("%-45s ",
                            inet_ntoa(dp[cnt].ndcl_cbaddr.sin_addr));
+                       break;
+#endif
+#ifdef INET6
+               case AF_INET6:
+                       if (inet_ntop(AF_INET6, &dp[cnt].ndcl_cbaddr.sin6_addr,
+                           nbuf, sizeof(nbuf)) != NULL)
+                               printf("%-45s ", nbuf);
+                       else
+                               printf("%-45s ", " ");
+                       break;
+#endif
+               }
                for (i = 0; i < dp[cnt].ndcl_clid.nclid_idlen; i++)
                        printf("%02x", dp[cnt].ndcl_clid.nclid_id[i]);
                printf("\n");
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to