Page MenuHomeFreeBSD

D34137.diff
No OneTemporary

D34137.diff

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

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)

Event Timeline