This updated patch adds support for RFC2732 IPv6 address format with brackets for the tool ss.
Now checking the complete IPv6 address if it is IN6ADDR_ANY. Signed-off-by: Lehner Florian <d...@der-flo.net> --- misc/ss.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/misc/ss.c b/misc/ss.c index 12763c9..83683b5 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -1046,8 +1046,9 @@ do_numeric: static void inet_addr_print(const inet_prefix *a, int port, unsigned int ifindex) { - char buf[1024]; + char buf[1024], buf2[1024]; const char *ap = buf; + char *c = NULL; int est_len = addr_width; const char *ifname = NULL; @@ -1059,7 +1060,18 @@ static void inet_addr_print(const inet_prefix *a, int port, unsigned int ifindex ap = format_host(AF_INET, 4, a->data); } } else { - ap = format_host(a->family, 16, a->data); + if (a->data[0] == 0 && a->data[1] == 0 && + a->data[2] == 0 && a->data[3] == 0) { + buf[0] = '*'; + buf[1] = 0; + } else { + ap = format_host(a->family, 16, a->data); + c = strchr(ap, ':'); + if (c != NULL && a->family == AF_INET6) { + sprintf(buf2, "[%s]", ap); + ap = buf2; + } + } est_len = strlen(ap); if (est_len <= addr_width) est_len = addr_width; -- 2.9.4