From nobody Thu Oct 09 20:01:40 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cjLPG1ZpRz6C2ll for ; Thu, 09 Oct 2025 20:01:54 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cjLPF6XxKz3Twt for ; Thu, 09 Oct 2025 20:01:53 +0000 (UTC) (envelope-from asomers@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-63163a6556bso2771579a12.1 for ; Thu, 09 Oct 2025 13:01:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760040112; x=1760644912; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=f6wbkj/qHgSDAXaGE5MoVbavkNYZPrWhcOdnku5g/mw=; b=g3/7BTTV/Y6Qhgyqa3XDfSiE0ftVX3xbdgU+e0n7B55dDAwfTbKdiQzFwGvpOxn2qZ W+3dimIzwXvLtNSaPgzAYxUMg/Cm2XzOybBHLHmJwZDy4KQxFzzTUR0ZTcvHEj5qxjbQ hW39h+EDqCDkh7FDtSkRSe76rTDqmpzPQEGMD24rq8s1FuotJhoEPOw8h2l2J6CqCXNI HvZM0QQvfQUNZdUv0RJV4JdlzpMut2Re1pZMBLkpDllXFPpT0lNJ6a2jxp6jrwuR1oiA PPm639I3oNrP9GmX8gWZZHwBNc/acq++5tfhZUz/zM7mWNXgMiCAk+xp1KBzAE3ZiZSy BqhQ== X-Forwarded-Encrypted: i=1; AJvYcCUDtve4k74PfKcUS4sl+ZQZ9SJHHRQuRcTF4wUs4euz3ztzJ4cqDlOJLCQ9LhJ4RrjMltu2dAzTD5aVPtpOxgs+0rfu4Q==@freebsd.org X-Gm-Message-State: AOJu0Yxf5Kc/SymVaEa8TsiNj066AQeyKpcprNDkRg9glm8zX8IJnsVt 7rvozo7q6vrKskI1JhpuORnt938iOg5ALmg5zK27Ute4DlTw3k4iWzj21U2Q7JwOoP72EceGErR I5pipaqWNoDhZToJD23p8h/jRjD+tY2B28T8JR4M= X-Gm-Gg: ASbGncs7g+K9YCbXJE+UOLJuonBRIxqklYHRtDMDIwYCLlSeDoLWbRfPzjCEpNeqF5j karrjjXKuapOq8+WhxgJGDT7gWSFtuIOIdemNUbXFWdCg5pNhou+sAh5Z9hpLcUyw1QqiO6afyK k2cguOvn5kxtMjylg1Hkz6Utzrq5Y7wUGBVGI0dAZwhAC/YYVr9gTiqepIDUC4Pq3rT0cXjhxrr +kbb43EFmnBgroAmStq8PrsOTN+Wo+KhKfa9RDHCXbrxCjJd/cG8g== X-Google-Smtp-Source: AGHT+IGwi+790JMbUsJFq0WQ3MCVHvA9Nxc3fmdEMsCcr+2AkLYKBPr927TgTlb0MVNkxlPq8o/YcckJxfMIqoCoAWA= X-Received: by 2002:a05:6402:4312:b0:637:f374:eeda with SMTP id 4fb4d7f45d1cf-639d5c31e8amr8343857a12.20.1760040111959; Thu, 09 Oct 2025 13:01:51 -0700 (PDT) List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 References: <202510091919.599JJ5dd028526@gitrepo.freebsd.org> In-Reply-To: <202510091919.599JJ5dd028526@gitrepo.freebsd.org> From: Alan Somers Date: Thu, 9 Oct 2025 14:01:40 -0600 X-Gm-Features: AS18NWDFQRkPGfKmglQWbd4ufRjeArXqckoxl1Jm4fIaHA07nqdSJzeux42F9dU Message-ID: Subject: Re: git: 746eadecaa7d - main - sockstat: show path state column only when useful To: Michael Tuexen Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="000000000000a9f23a0640bf4532" X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: 4cjLPF6XxKz3Twt --000000000000a9f23a0640bf4532 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable It looks like this change will cause sockstat to skip output path state even in JSON output mode. Is that deliberate? I would think that it would be better for machine-readable formats if the output were predictable. Also, the English in the man page is awkward. I think you mean "at least one path to show". On Thu, Oct 9, 2025 at 1:19=E2=80=AFPM Michael Tuexen = wrote: > The branch main has been updated by tuexen: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=3D746eadecaa7dc8913721cbaa9be4e60= 3bd36ea49 > > commit 746eadecaa7dc8913721cbaa9be4e603bd36ea49 > Author: Michael Tuexen > AuthorDate: 2025-10-09 19:16:38 +0000 > Commit: Michael Tuexen > CommitDate: 2025-10-09 19:16:38 +0000 > > sockstat: show path state column only when useful > > Showing the path state column is only useful, if there is at least on= e > SCTP endpoint shown, which is not in the state CLOSED or LISTEN. > Don't show it when it is not useful. > > Reviewed by: rrs > MFC after: 3 days > Sponsored by: Netflix, Inc. > Differential Revision: https://reviews.freebsd.org/D52986 > --- > usr.bin/sockstat/main.c | 8 ++++++-- > usr.bin/sockstat/sockstat.1 | 3 ++- > 2 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/usr.bin/sockstat/main.c b/usr.bin/sockstat/main.c > index f0eb83eb3e9f..7fedfd5b8724 100644 > --- a/usr.bin/sockstat/main.c > +++ b/usr.bin/sockstat/main.c > @@ -103,6 +103,7 @@ static bool opt_u; /* Show Unix domain > sockets */ > static u_int opt_v; /* Verbose mode */ > static bool opt_w; /* Automatically size the columns */ > static bool is_xo_style_encoding; > +static bool show_path_state =3D false; > > /* > * Default protocols to use if no -P was defined. > @@ -584,6 +585,7 @@ gather_sctp(void) > !(local_all_loopback || > foreign_all_loopback))) { > RB_INSERT(socks_t, &socks, sock); > + show_path_state =3D true; > } else { > free_socket(sock); > } > @@ -1485,7 +1487,7 @@ display_sock(struct sock *s, struct col_widths *cw, > char *buf, size_t bufsize) > } else if (!is_xo_style_encoding) > xo_emit(" {:encaps/%*s}", cw->encaps, > "??"); > } > - if (opt_s) { > + if (opt_s && show_path_state) { > if (faddr !=3D NULL && > s->proto =3D=3D IPPROTO_SCTP && > s->state !=3D SCTP_CLOSED && > @@ -1632,7 +1634,9 @@ display(void) > if (opt_U) > xo_emit(" {T:/%*s}", cw.encaps, "ENCAPS"); > if (opt_s) { > - xo_emit(" {T:/%-*s}", cw.path_state, "PATH STATE"= ); > + if (show_path_state) > + xo_emit(" {T:/%-*s}", cw.path_state, > + "PATH STATE"); > xo_emit(" {T:/%-*s}", cw.conn_state, "CONN STATE"= ); > } > if (opt_b) > diff --git a/usr.bin/sockstat/sockstat.1 b/usr.bin/sockstat/sockstat.1 > index dabb3042bfd4..d14eb967ad0f 100644 > --- a/usr.bin/sockstat/sockstat.1 > +++ b/usr.bin/sockstat/sockstat.1 > @@ -25,7 +25,7 @@ > .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE US= E > OF > .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > .\" > -.Dd October 7, 2025 > +.Dd October 9, 2025 > .Dt SOCKSTAT 1 > .Os > .Sh NAME > @@ -205,6 +205,7 @@ is specified (only for SCTP or TCP). > The path state if > .Fl s > is specified (only for SCTP). > +This column is only shown when there is at least one path state shown. > .It Li CONN STATE > The connection state if > .Fl s > --000000000000a9f23a0640bf4532 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
It looks like this change will cause sockstat to skip= output path state even in JSON output mode.=C2=A0 Is that deliberate?=C2= =A0 I would think that it would be better for machine-readable formats if t= he output were predictable.
Also, the English in the man page is = awkward.=C2=A0 I think you mean "at least one path to show".

On Thu, Oct 9, 2025 at 1:19=E2=80=AFPM Michael Tuexe= n <tuexen@freebsd.org> wrot= e:
The branch ma= in has been updated by tuexen:

URL: https://cgit.= FreeBSD.org/src/commit/?id=3D746eadecaa7dc8913721cbaa9be4e603bd36ea49
commit 746eadecaa7dc8913721cbaa9be4e603bd36ea49
Author:=C2=A0 =C2=A0 =C2=A0Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2025-10-09 19:16:38 +0000
Commit:=C2=A0 =C2=A0 =C2=A0Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2025-10-09 19:16:38 +0000

=C2=A0 =C2=A0 sockstat: show path state column only when useful

=C2=A0 =C2=A0 Showing the path state column is only useful, if there is at = least one
=C2=A0 =C2=A0 SCTP endpoint shown, which is not in the state CLOSED or LIST= EN.
=C2=A0 =C2=A0 Don't show it when it is not useful.

=C2=A0 =C2=A0 Reviewed by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 rrs
=C2=A0 =C2=A0 MFC after:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 3 = days
=C2=A0 =C2=A0 Sponsored by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Netflix= , Inc.
=C2=A0 =C2=A0 Differential Revision:=C2=A0 https://reviews.freebsd= .org/D52986
---
=C2=A0usr.bin/sockstat/main.c=C2=A0 =C2=A0 =C2=A0| 8 ++++++--
=C2=A0usr.bin/sockstat/sockstat.1 | 3 ++-
=C2=A02 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/usr.bin/sockstat/main.c b/usr.bin/sockstat/main.c
index f0eb83eb3e9f..7fedfd5b8724 100644
--- a/usr.bin/sockstat/main.c
+++ b/usr.bin/sockstat/main.c
@@ -103,6 +103,7 @@ static bool=C2=A0 opt_u;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0/* Show Unix domain sockets */
=C2=A0static u_int=C2=A0 =C2=A0 opt_v;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* = Verbose mode */
=C2=A0static bool=C2=A0 =C2=A0 =C2=A0opt_w;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0/* Automatically size the columns */
=C2=A0static bool=C2=A0 =C2=A0 =C2=A0is_xo_style_encoding;
+static bool=C2=A0 =C2=A0 =C2=A0show_path_state =3D false;

=C2=A0/*
=C2=A0 * Default protocols to use if no -P was defined.
@@ -584,6 +585,7 @@ gather_sctp(void)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0!(local_all_loop= back ||
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0foreign_all_loop= back))) {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RB_INSER= T(socks_t, &socks, sock);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0show_path= _state =3D true;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } else {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 free_soc= ket(sock);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
@@ -1485,7 +1487,7 @@ display_sock(struct sock *s, struct col_widths *cw, c= har *buf, size_t bufsize)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 } else if (!is_xo_style_encoding)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 xo_emit(" {:encaps/%*s}", = cw->encaps, "??");
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (opt_s) {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (opt_s &&= ; show_path_state) {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 if (faddr !=3D NULL &&
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 s->proto =3D=3D IPPROTO_SCTP &&
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 s->state !=3D SCTP_CLOSED &&
@@ -1632,7 +1634,9 @@ display(void)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (opt_U)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 xo_emit(" {T:/%*s}", cw.encaps, "ENCAPS"); =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (opt_s) {
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0xo_emit(" {T:/%-*s}", cw.path_state, "PATH STATE&q= uot;);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0if (show_path_state)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0xo_emit(" {T:/%-*s}", cw.pa= th_state,
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"PATH STATE")= ;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 xo_emit(" {T:/%-*s}", cw.conn_state, "CONN STATE&= quot;);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (opt_b)
diff --git a/usr.bin/sockstat/sockstat.1 b/usr.bin/sockstat/sockstat.1
index dabb3042bfd4..d14eb967ad0f 100644
--- a/usr.bin/sockstat/sockstat.1
+++ b/usr.bin/sockstat/sockstat.1
@@ -25,7 +25,7 @@
=C2=A0.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT O= F THE USE OF
=C2=A0.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DA= MAGE.
=C2=A0.\"
-.Dd October 7, 2025
+.Dd October 9, 2025
=C2=A0.Dt SOCKSTAT 1
=C2=A0.Os
=C2=A0.Sh NAME
@@ -205,6 +205,7 @@ is specified (only for SCTP or TCP).
=C2=A0The path state if
=C2=A0.Fl s
=C2=A0is specified (only for SCTP).
+This column is only shown when there is at least one path state shown.
=C2=A0.It Li CONN STATE
=C2=A0The connection state if
=C2=A0.Fl s
--000000000000a9f23a0640bf4532--