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.
diff --git a/misc/ss.c b/misc/ss.c
index 7beac8d..4017918 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -1534,8 +1534,10 @@
.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 @@
fprintf(stderr, "ERROR truncated\n");
} else {
errno = -err->error;
+ if (errno == EOPNOTSUPP) {
+ close(fd);
+ return -1;
+ }
perror("TCPDIAG answers");
}
close(fd);