From 930a75f9257a3e00fcfede94de5a4516fe34bd22 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Tue, 10 Apr 2012 09:00:16 -0700 Subject: [PATCH] Fix ss if INET_DIAG not enabled in kernel If kernel doesn't have INET_DIAG and using newish version of iproute nothing would be displayed. --- misc/ss.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/misc/ss.c b/misc/ss.c index 7beac8ddb..401791892 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -1534,8 +1534,10 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) .msg_iovlen = f->f ? 3 : 1, }; - if (sendmsg(fd, &msg, 0) < 0) + if (sendmsg(fd, &msg, 0) < 0) { + close(fd); return -1; + } iov[0] = (struct iovec){ .iov_base = buf, @@ -1589,6 +1591,10 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) fprintf(stderr, "ERROR truncated\n"); } else { errno = -err->error; + if (errno == EOPNOTSUPP) { + close(fd); + return -1; + } perror("TCPDIAG answers"); } close(fd); -- 2.47.2