From: Hannes Frederic Sowa Date: Fri, 22 Feb 2013 15:28:10 +0000 (+0000) Subject: ss: show send queue length on unix domain sockets X-Git-Tag: v3.9.0~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=defd61ca9191e0c93950e7ea5466682a67dcbafb;p=thirdparty%2Fiproute2.git ss: show send queue length on unix domain sockets On sockets in listen state Send-Q reports the maximum backlog, otherwise it reports allocated socket write memory. Cc: Stephen Hemminger Signed-off-by: Hannes Frederic Sowa --- diff --git a/misc/ss.c b/misc/ss.c index ff7c194d5..0de700a03 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -2139,7 +2139,7 @@ static int unix_show_sock(struct nlmsghdr *nlh, struct filter *f) struct rtattr *tb[UNIX_DIAG_MAX+1]; char name[128]; int peer_ino; - int rqlen; + __u32 rqlen, wqlen; parse_rtattr(tb, UNIX_DIAG_MAX, (struct rtattr*)(r+1), nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*r))); @@ -2150,12 +2150,16 @@ static int unix_show_sock(struct nlmsghdr *nlh, struct filter *f) if (state_width) printf("%-*s ", state_width, sstate_name[r->udiag_state]); - if (tb[UNIX_DIAG_RQLEN]) - rqlen = *(int *)RTA_DATA(tb[UNIX_DIAG_RQLEN]); - else + if (tb[UNIX_DIAG_RQLEN]) { + struct unix_diag_rqlen *rql = RTA_DATA(tb[UNIX_DIAG_RQLEN]); + rqlen = rql->udiag_rqueue; + wqlen = rql->udiag_wqueue; + } else { rqlen = 0; + wqlen = 0; + } - printf("%-6d %-6d ", rqlen, 0); + printf("%-6u %-6u ", rqlen, wqlen); if (tb[UNIX_DIAG_NAME]) { int len = RTA_PAYLOAD(tb[UNIX_DIAG_NAME]);