Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F102644952
D34137.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D34137.diff
View Options
diff --git a/usr.bin/sockstat/sockstat.1 b/usr.bin/sockstat/sockstat.1
--- a/usr.bin/sockstat/sockstat.1
+++ b/usr.bin/sockstat/sockstat.1
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 11, 2021
+.Dd February 2, 2022
.Dt SOCKSTAT 1
.Os
.Sh NAME
@@ -35,7 +35,7 @@
.Nd list open sockets
.Sh SYNOPSIS
.Nm
-.Op Fl 46CcLlnqSsUuvw
+.Op Fl 46CciLlnqSsUuvw
.Op Fl j Ar jail
.Op Fl p Ar ports
.Op Fl P Ar protocols
@@ -61,6 +61,9 @@
This is currently only implemented for TCP.
.It Fl c
Show connected sockets.
+.It Fl i
+Display the
+.Dv inp_gencnt .
.It Fl j Ar jail
Show only sockets belonging to the specified jail ID or name.
.It Fl L
@@ -160,6 +163,10 @@
(Internet sockets only)
The address the foreign end of the socket is bound to (see
.Xr getpeername 2 ) .
+.It Li ID
+The inp_gencnt if
+.Fl i
+is specified (only for TCP or UDP).
.It Li ENCAPS
The remote UDP encapsulation port number if
.Fl U
diff --git a/usr.bin/sockstat/sockstat.c b/usr.bin/sockstat/sockstat.c
--- a/usr.bin/sockstat/sockstat.c
+++ b/usr.bin/sockstat/sockstat.c
@@ -59,6 +59,7 @@
#include <ctype.h>
#include <err.h>
#include <errno.h>
+#include <inttypes.h>
#include <jail.h>
#include <netdb.h>
#include <pwd.h>
@@ -83,6 +84,7 @@
static int opt_6; /* Show IPv6 sockets */
static int opt_C; /* Show congestion control */
static int opt_c; /* Show connected sockets */
+static int opt_i; /* Show inp_gencnt */
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 */
@@ -120,6 +122,7 @@
struct sock {
kvaddr_t socket;
kvaddr_t pcb;
+ uint64_t inp_gencnt;
int shown;
int vflag;
int family;
@@ -713,6 +716,7 @@
err(1, "malloc()");
sock->socket = so->xso_so;
sock->proto = proto;
+ sock->inp_gencnt = xip->inp_gencnt;
if (xip->inp_vflag & INP_IPV4) {
sock->family = AF_INET;
sockaddr(&laddr->address, sock->family,
@@ -1107,6 +1111,15 @@
default:
abort();
}
+ if (opt_i) {
+ if (s->proto == IPPROTO_TCP ||
+ s->proto == IPPROTO_UDP) {
+ while (pos < offset)
+ pos += xprintf(" ");
+ pos += xprintf("%" PRIu64, s->inp_gencnt);
+ }
+ offset += 9;
+ }
if (opt_U) {
if (faddr != NULL &&
((s->proto == IPPROTO_SCTP &&
@@ -1204,6 +1217,8 @@
"USER", "COMMAND", "PID", "FD", "PROTO",
opt_w ? 45 : 21, "LOCAL ADDRESS",
opt_w ? 45 : 21, "FOREIGN ADDRESS");
+ if (opt_i)
+ printf(" %-8s", "ID");
if (opt_U)
printf(" %-6s", "ENCAPS");
if (opt_s) {
@@ -1324,7 +1339,7 @@
usage(void)
{
fprintf(stderr,
- "usage: sockstat [-46cLlSsUuvw] [-j jid] [-p ports] [-P protocols]\n");
+ "usage: sockstat [-46ciLlSsUuvw] [-j jid] [-p ports] [-P protocols]\n");
exit(1);
}
@@ -1339,7 +1354,7 @@
int o, i;
opt_j = -1;
- while ((o = getopt(argc, argv, "46Ccj:Llnp:P:qSsUuvw")) != -1)
+ while ((o = getopt(argc, argv, "46Ccij:Llnp:P:qSsUuvw")) != -1)
switch (o) {
case '4':
opt_4 = 1;
@@ -1353,6 +1368,9 @@
case 'c':
opt_c = 1;
break;
+ case 'i':
+ opt_i = 1;
+ break;
case 'j':
opt_j = jail_getid(optarg);
if (opt_j < 0)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 16, 6:49 AM (20 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14654764
Default Alt Text
D34137.diff (3 KB)
Attached To
Mode
D34137: Add -i option to sockstat
Attached
Detach File
Event Timeline
Log In to Comment