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 "at least one path to show".</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 <<a href=3D"mailto:tuexen@freebsd.org">tuexen@freebsd.org</a>> 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 <tuexen@FreeBSD.org><br> AuthorDate: 2025-10-09 19:16:38 +0000<br> Commit:=C2=A0 =C2=A0 =C2=A0Michael Tuexen <tuexen@FreeBSD.org><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'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, &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(" {:encaps/%*s}", = cw->encaps, "??");<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 &&= ; 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 &&<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->proto =3D=3D IPPROTO_SCTP &&<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->state !=3D SCTP_CLOSED &&<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(" {T:/%*s}", cw.encaps, "ENCAPS");<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(" {T:/%-*s}", cw.path_state, "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(" {T:/%-*s}", 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"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 xo_emit(" {T:/%-*s}", cw.conn_state, "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.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT O= F THE USE OF<br> =C2=A0.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DA= MAGE.<br> =C2=A0.\"<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>