git: ccdd2b2b3cc2 - main - Add "-n" flag to sockstat.

Alexander Motin mav at FreeBSD.org
Wed Dec 30 18:46:05 UTC 2020


The branch main has been updated by mav:

URL: https://cgit.FreeBSD.org/src/commit/?id=ccdd2b2b3cc2f86cd08a355be2fb58e435ec8ff8

commit ccdd2b2b3cc2f86cd08a355be2fb58e435ec8ff8
Author:     Alexander Motin <mav at FreeBSD.org>
AuthorDate: 2020-12-30 18:40:37 +0000
Commit:     Alexander Motin <mav at FreeBSD.org>
CommitDate: 2020-12-30 18:45:53 +0000

    Add "-n" flag to sockstat.
    
    sockstat can "hang" on getpwuid() calls in situations when FreeBSD
    is joined to a directory service (AD/LDAP etc) and the directory
    service fail to answer in a timely manner when trying to resolve
    numeric UIDs to user names.
    
    Submitted by:   Caleb St. John <caleb at ixsystems.com>
    MFC after:      1 week
---
 usr.bin/sockstat/sockstat.1 | 6 ++++--
 usr.bin/sockstat/sockstat.c | 8 ++++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/usr.bin/sockstat/sockstat.1 b/usr.bin/sockstat/sockstat.1
index 571b3e7041bb..8521c50348c9 100644
--- a/usr.bin/sockstat/sockstat.1
+++ b/usr.bin/sockstat/sockstat.1
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 13, 2020
+.Dd December 30, 2020
 .Dt SOCKSTAT 1
 .Os
 .Sh NAME
@@ -35,7 +35,7 @@
 .Nd list open sockets
 .Sh SYNOPSIS
 .Nm
-.Op Fl 46CcLlSsUuvw
+.Op Fl 46CcLlnSsUuvw
 .Op Fl j Ar jid
 .Op Fl p Ar ports
 .Op Fl P Ar protocols
@@ -71,6 +71,8 @@ or do not contain the IPv6 loopback address
 .Li ::1 .
 .It Fl l
 Show listening sockets.
+.It Fl n
+Do not resolve numeric UIDs to user names.
 .It Fl p Ar ports
 Only show Internet sockets if the local or foreign port number
 is on the specified list.
diff --git a/usr.bin/sockstat/sockstat.c b/usr.bin/sockstat/sockstat.c
index 5ddbf0775507..26f31d96b8e0 100644
--- a/usr.bin/sockstat/sockstat.c
+++ b/usr.bin/sockstat/sockstat.c
@@ -79,6 +79,7 @@ static int	 opt_c;		/* Show connected sockets */
 static int	 opt_j;		/* Show specified jail */
 static int	 opt_L;		/* Don't show IPv4 or IPv6 loopback sockets */
 static int	 opt_l;		/* Show listening sockets */
+static int	 opt_n;		/* Don't resolve UIDs to user names */
 static int	 opt_q;		/* Don't show header */
 static int	 opt_S;		/* Show protocol stack if applicable */
 static int	 opt_s;		/* Show protocol state if applicable */
@@ -1205,7 +1206,7 @@ display(void)
 				continue;
 			s->shown = 1;
 			pos = 0;
-			if ((pwd = getpwuid(xf->xf_uid)) == NULL)
+			if (opt_n || (pwd = getpwuid(xf->xf_uid)) == NULL)
 				pos += xprintf("%lu ", (u_long)xf->xf_uid);
 			else
 				pos += xprintf("%s ", pwd->pw_name);
@@ -1304,7 +1305,7 @@ main(int argc, char *argv[])
 	int o, i;
 
 	opt_j = -1;
-	while ((o = getopt(argc, argv, "46Ccj:Llp:P:qSsUuvw")) != -1)
+	while ((o = getopt(argc, argv, "46Ccj:Llnp:P:qSsUuvw")) != -1)
 		switch (o) {
 		case '4':
 			opt_4 = 1;
@@ -1329,6 +1330,9 @@ main(int argc, char *argv[])
 		case 'l':
 			opt_l = 1;
 			break;
+		case 'n':
+			opt_n = 1;
+			break;
 		case 'p':
 			parse_ports(optarg);
 			break;


More information about the dev-commits-src-all mailing list