]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ss: show extra info when '--processes' is not used
authorMatthieu Baerts (NGI0) <matttbe@kernel.org>
Sat, 13 Jan 2024 17:10:21 +0000 (18:10 +0100)
committerStephen Hemminger <stephen@networkplumber.org>
Wed, 17 Jan 2024 17:18:04 +0000 (09:18 -0800)
A recent modification broke "extra" options for all protocols showing
info about the processes when '-p' / '--processes' option was not used
as well. In other words, all the additional bits displayed at the end or
at the next line were no longer printed if the user didn't ask to show
info about processes as well.

The reason is that, the "current_field" pointer never switched to the
"Ext" column. If the user didn't ask to display the processes, nothing
happened when trying to print extra bits using the "out()" function,
because the current field was still pointing to the "Process" one, now
marked as disabled.

Before the commit mentioned below, it was not an issue not to switch to
the "Ext" or "Process" columns because they were never marked as
"disabled".

Here is a quick list of options that were no longer displayed if '-p' /
'--processes' was not set:

- AF_INET(6):
  -o, --options
  -e, --extended
  --tos
  --cgroup
  --inet-sockopt
  -m, --memory
  -i, --info

- AF_PACKET:
  -e, --extended

- AF_XDP:
  -e, --extended

- AF_UNIX:
  -m, --memory
  -e, --extended

- TIPC:
  --tipcinfo

That was just by quickly reading the code, I probably missed some. But
this shows that the impact can be quite important for all scripts using
'ss' to monitor connections or to report info.

Fixes: 1607bf53 ("ss: prevent "Process" column from being printed unless requested")
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
misc/ss.c

index 900fefa420155682baf3029d51807e7fbd7d5263..5296cabe9982a35143b7f47402c02ff5d532109d 100644 (file)
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -2427,6 +2427,8 @@ static void proc_ctx_print(struct sockstat *s)
                        free(buf);
                }
        }
+
+       field_next();
 }
 
 static void inet_stats_print(struct sockstat *s, bool v6only)