Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Oct 2025 14:01:40 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        Michael Tuexen <tuexen@freebsd.org>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org,  dev-commits-src-main@freebsd.org
Subject:   Re: git: 746eadecaa7d - main - sockstat: show path state column only when useful
Message-ID:  <CAOtMX2g_JyhQY%2BccLmt4c5Tq-oh%2BMazz4xCHdvcZzCyi%2BDGYcw@mail.gmail.com>
In-Reply-To: <202510091919.599JJ5dd028526@gitrepo.freebsd.org>
References:  <202510091919.599JJ5dd028526@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--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 <tuexen@freebsd.org> =
wrote:

> The branch main has been updated by tuexen:
>
> URL:
> https://cgit.FreeBSD.org/src/commit/?id=3D746eadecaa7dc8913721cbaa9be4e60=
3bd36ea49
>
> commit 746eadecaa7dc8913721cbaa9be4e603bd36ea49
> Author:     Michael Tuexen <tuexen@FreeBSD.org>
> AuthorDate: 2025-10-09 19:16:38 +0000
> Commit:     Michael Tuexen <tuexen@FreeBSD.org>
> 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

<div dir=3D"ltr"><div>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.</div><div>Also, the English in the man page is =
awkward.=C2=A0 I think you mean &quot;at least one path to show&quot;.</div=
></div><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr=
" class=3D"gmail_attr">On Thu, Oct 9, 2025 at 1:19=E2=80=AFPM Michael Tuexe=
n &lt;<a href=3D"mailto:tuexen@freebsd.org">tuexen@freebsd.org</a>&gt; wrot=
e:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The branch ma=
in has been updated by tuexen:<br>
<br>
URL: <a href=3D"https://cgit.FreeBSD.org/src/commit/?id=3D746eadecaa7dc8913=
721cbaa9be4e603bd36ea49" rel=3D"noreferrer" target=3D"_blank">https://cgit.=
FreeBSD.org/src/commit/?id=3D746eadecaa7dc8913721cbaa9be4e603bd36ea49</a><b=
r>
<br>
commit 746eadecaa7dc8913721cbaa9be4e603bd36ea49<br>
Author:=C2=A0 =C2=A0 =C2=A0Michael Tuexen &lt;tuexen@FreeBSD.org&gt;<br>
AuthorDate: 2025-10-09 19:16:38 +0000<br>
Commit:=C2=A0 =C2=A0 =C2=A0Michael Tuexen &lt;tuexen@FreeBSD.org&gt;<br>
CommitDate: 2025-10-09 19:16:38 +0000<br>
<br>
=C2=A0 =C2=A0 sockstat: show path state column only when useful<br>
<br>
=C2=A0 =C2=A0 Showing the path state column is only useful, if there is at =
least one<br>
=C2=A0 =C2=A0 SCTP endpoint shown, which is not in the state CLOSED or LIST=
EN.<br>
=C2=A0 =C2=A0 Don&#39;t show it when it is not useful.<br>
<br>
=C2=A0 =C2=A0 Reviewed by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 rrs<br>
=C2=A0 =C2=A0 MFC after:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 3 =
days<br>
=C2=A0 =C2=A0 Sponsored by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Netflix=
, Inc.<br>
=C2=A0 =C2=A0 Differential Revision:=C2=A0 <a href=3D"https://reviews.freeb=
sd.org/D52986" rel=3D"noreferrer" target=3D"_blank">https://reviews.freebsd=
.org/D52986</a><br>
---<br>
=C2=A0usr.bin/sockstat/main.c=C2=A0 =C2=A0 =C2=A0| 8 ++++++--<br>
=C2=A0usr.bin/sockstat/sockstat.1 | 3 ++-<br>
=C2=A02 files changed, 8 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/usr.bin/sockstat/main.c b/usr.bin/sockstat/main.c<br>
index f0eb83eb3e9f..7fedfd5b8724 100644<br>
--- a/usr.bin/sockstat/main.c<br>
+++ b/usr.bin/sockstat/main.c<br>
@@ -103,6 +103,7 @@ static bool=C2=A0 opt_u;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0/* Show Unix domain sockets */<br>
=C2=A0static u_int=C2=A0 =C2=A0 opt_v;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* =
Verbose mode */<br>
=C2=A0static bool=C2=A0 =C2=A0 =C2=A0opt_w;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0/* Automatically size the columns */<br>
=C2=A0static bool=C2=A0 =C2=A0 =C2=A0is_xo_style_encoding;<br>
+static bool=C2=A0 =C2=A0 =C2=A0show_path_state =3D false;<br>
<br>
=C2=A0/*<br>
=C2=A0 * Default protocols to use if no -P was defined.<br>
@@ -584,6 +585,7 @@ gather_sctp(void)<br>
=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 ||<br>
=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))) {<br>
=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, &amp;socks, sock);<br>
+=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;<br>
=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 {<br>
=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);<br>
=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 }<br>
@@ -1485,7 +1487,7 @@ display_sock(struct sock *s, struct col_widths *cw, c=
har *buf, size_t bufsize)<br>
=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)<br>
=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(&quot; {:encaps/%*s}&quot;, =
cw-&gt;encaps, &quot;??&quot;);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (opt_s) {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (opt_s &amp;&amp=
; show_path_state) {<br>
=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 &amp;&amp;<br>
=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-&gt;proto =3D=3D IPPROTO_SCTP &amp;&amp;<br>
=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-&gt;state !=3D SCTP_CLOSED &amp;&amp;<br>
@@ -1632,7 +1634,9 @@ display(void)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (opt_U)<br>
=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(&quot; {T:/%*s}&quot;, cw.encaps, &quot;ENCAPS&quot;);<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (opt_s) {<br>
-=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(&quot; {T:/%-*s}&quot;, cw.path_state, &quot;PATH STATE&q=
uot;);<br>
+=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)<br>
+=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(&quot; {T:/%-*s}&quot;, cw.pa=
th_state,<br>
+=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&quot;PATH STATE&quot;)=
;<br>
=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(&quot; {T:/%-*s}&quot;, cw.conn_state, &quot;CONN STATE&=
quot;);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (opt_b)<br>
diff --git a/usr.bin/sockstat/sockstat.1 b/usr.bin/sockstat/sockstat.1<br>
index dabb3042bfd4..d14eb967ad0f 100644<br>
--- a/usr.bin/sockstat/sockstat.1<br>
+++ b/usr.bin/sockstat/sockstat.1<br>
@@ -25,7 +25,7 @@<br>
=C2=A0.\&quot; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT O=
F THE USE OF<br>
=C2=A0.\&quot; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DA=
MAGE.<br>
=C2=A0.\&quot;<br>
-.Dd October 7, 2025<br>
+.Dd October 9, 2025<br>
=C2=A0.Dt SOCKSTAT 1<br>
=C2=A0.Os<br>
=C2=A0.Sh NAME<br>
@@ -205,6 +205,7 @@ is specified (only for SCTP or TCP).<br>
=C2=A0The path state if<br>
=C2=A0.Fl s<br>
=C2=A0is specified (only for SCTP).<br>
+This column is only shown when there is at least one path state shown.<br>
=C2=A0.It Li CONN STATE<br>
=C2=A0The connection state if<br>
=C2=A0.Fl s<br>
</blockquote></div>

--000000000000a9f23a0640bf4532--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2g_JyhQY%2BccLmt4c5Tq-oh%2BMazz4xCHdvcZzCyi%2BDGYcw>