Commit d68e00f7 authored by vadimk's avatar vadimk Committed by Stephen Hemminger

ss: Fix layout/output issues introduced by regression

This patch fixes the following issues which was introduced by me in commits:

    #1 (2dc85485) ss: Fixed broken output for Netlink 'Peer Address:Port' column
    ISSUE: Broken layout when all sockets are printed out

    #2 (eef43b50) ss: Identify more netlink protocol names
    ISSUE: Protocol id is not printed if 'numbers only' output was specified (-n)

Also aligned the width of the local/peer ports to be more wider.

I tested with a lot of option combinations (I may miss some test cases),
but layout seems to me better than the previous released version of iproute2/ss.
Signed-off-by: default avatarVadim Kochan <vadim4j@gmail.com>
parent 9d2c1643
...@@ -101,8 +101,6 @@ int state_width; ...@@ -101,8 +101,6 @@ int state_width;
int addrp_width; int addrp_width;
int addr_width; int addr_width;
int serv_width; int serv_width;
int paddr_width;
int pserv_width;
int screen_width; int screen_width;
static const char *TCP_PROTO = "tcp"; static const char *TCP_PROTO = "tcp";
...@@ -2912,10 +2910,11 @@ static void netlink_show_one(struct filter *f, ...@@ -2912,10 +2910,11 @@ static void netlink_show_one(struct filter *f,
printf("%-*s ", state_width, "UNCONN"); printf("%-*s ", state_width, "UNCONN");
printf("%-6d %-6d ", rq, wq); printf("%-6d %-6d ", rq, wq);
if (resolve_services) if (resolve_services) {
{
printf("%*s:", addr_width, nl_proto_n2a(prot, prot_name, printf("%*s:", addr_width, nl_proto_n2a(prot, prot_name,
sizeof(prot_name))); sizeof(prot_name)));
} else {
printf("%*d:", addr_width, prot);
} }
if (pid == -1) { if (pid == -1) {
...@@ -2947,10 +2946,10 @@ static void netlink_show_one(struct filter *f, ...@@ -2947,10 +2946,10 @@ static void netlink_show_one(struct filter *f,
if (state == NETLINK_CONNECTED) { if (state == NETLINK_CONNECTED) {
printf("%*d:%-*d", printf("%*d:%-*d",
paddr_width, dst_group, pserv_width, dst_pid); addr_width, dst_group, serv_width, dst_pid);
} else { } else {
printf("%*s*%-*s", printf("%*s*%-*s",
paddr_width, "", pserv_width, ""); addr_width, "", serv_width, "");
} }
char *pid_context = NULL; char *pid_context = NULL;
...@@ -3684,22 +3683,13 @@ int main(int argc, char *argv[]) ...@@ -3684,22 +3683,13 @@ int main(int argc, char *argv[])
printf("%-*s ", state_width, "State"); printf("%-*s ", state_width, "State");
printf("%-6s %-6s ", "Recv-Q", "Send-Q"); printf("%-6s %-6s ", "Recv-Q", "Send-Q");
paddr_width = addr_width; /* Make enough space for the local/remote port field */
pserv_width = serv_width; addr_width -= 13;
serv_width += 13;
/* Netlink service column can be resolved as process name/pid thus it
* can be much wider than address column which is just a
* protocol name/id.
*/
if (current_filter.dbs & (1<<NETLINK_DB)) {
serv_width = addr_width - 10;
paddr_width = 13;
pserv_width = 13;
}
printf("%*s:%-*s %*s:%-*s\n", printf("%*s:%-*s %*s:%-*s\n",
addr_width, "Local Address", serv_width, "Port", addr_width, "Local Address", serv_width, "Port",
paddr_width, "Peer Address", pserv_width, "Port"); addr_width, "Peer Address", serv_width, "Port");
fflush(stdout); fflush(stdout);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment