From: vadimk Date: Fri, 5 Dec 2014 17:19:11 +0000 (+0200) Subject: ss: Fix layout/output issues introduced by regression X-Git-Tag: v3.18.0~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d68e00f704c19aee1419c56eced3a8e8e7157e35;p=thirdparty%2Fiproute2.git ss: Fix layout/output issues introduced by regression This patch fixes the following issues which was introduced by me in commits: #1 (2dc854854b7f1b) ss: Fixed broken output for Netlink 'Peer Address:Port' column ISSUE: Broken layout when all sockets are printed out #2 (eef43b5052afb7) 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: Vadim Kochan --- diff --git a/misc/ss.c b/misc/ss.c index a99294dcd..c9733a772 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -101,8 +101,6 @@ int state_width; int addrp_width; int addr_width; int serv_width; -int paddr_width; -int pserv_width; int screen_width; static const char *TCP_PROTO = "tcp"; @@ -2912,10 +2910,11 @@ static void netlink_show_one(struct filter *f, printf("%-*s ", state_width, "UNCONN"); printf("%-6d %-6d ", rq, wq); - if (resolve_services) - { + if (resolve_services) { printf("%*s:", addr_width, nl_proto_n2a(prot, prot_name, sizeof(prot_name))); + } else { + printf("%*d:", addr_width, prot); } if (pid == -1) { @@ -2947,10 +2946,10 @@ static void netlink_show_one(struct filter *f, if (state == NETLINK_CONNECTED) { printf("%*d:%-*d", - paddr_width, dst_group, pserv_width, dst_pid); + addr_width, dst_group, serv_width, dst_pid); } else { printf("%*s*%-*s", - paddr_width, "", pserv_width, ""); + addr_width, "", serv_width, ""); } char *pid_context = NULL; @@ -3684,22 +3683,13 @@ int main(int argc, char *argv[]) printf("%-*s ", state_width, "State"); printf("%-6s %-6s ", "Recv-Q", "Send-Q"); - paddr_width = addr_width; - pserv_width = serv_width; - - /* 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<