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 <redacted>
---
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