Re: git: 746eadecaa7d - main - sockstat: show path state column only when useful
Date: Thu, 09 Oct 2025 20:22:29 UTC
> On 9. Oct 2025, at 22:01, Alan Somers <asomers@FreeBSD.org> wrote:
>
> 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.
I haven't used it in that setup. So you would prefer to only drop the column
when generating plain text?
> Also, the English in the man page is awkward. I think you mean "at least one path to show".
Would "at least one path state to show" be acceptable?
Best regards
Michael
>
> On Thu, Oct 9, 2025 at 1:19 PM Michael Tuexen <tuexen@freebsd.org> wrote:
> The branch main has been updated by tuexen:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=746eadecaa7dc8913721cbaa9be4e603bd36ea49
>
> 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 one
> 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 = 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 = 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 != NULL &&
> s->proto == IPPROTO_SCTP &&
> s->state != 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 USE 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