The branch main has been updated by michaelo:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=fe81e3944c085e765c83c4f78941d7529ceb556e

commit fe81e3944c085e765c83c4f78941d7529ceb556e
Author:     Michael Osipov <[email protected]>
AuthorDate: 2025-12-26 17:27:12 +0000
Commit:     Michael Osipov <[email protected]>
CommitDate: 2026-01-31 20:48:56 +0000

    sockstat: Surround explicit IPv6 addresses with brackets
    
    PR:             254611
    Approved by:    otis, tuexen, des
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D54375
---
 usr.bin/sockstat/main.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/usr.bin/sockstat/main.c b/usr.bin/sockstat/main.c
index 32b1ac1a8d20..ea4449300866 100644
--- a/usr.bin/sockstat/main.c
+++ b/usr.bin/sockstat/main.c
@@ -928,6 +928,7 @@ formataddr(struct sockaddr_storage *ss, char *buf, size_t 
bufsize)
        struct sockaddr_un *sun;
        int error, off, port = 0;
        char addrstr[NI_MAXHOST] = "";
+       bool needs_ipv6_brackets = false;
 
        switch (ss->ss_family) {
        case AF_INET:
@@ -938,6 +939,8 @@ formataddr(struct sockaddr_storage *ss, char *buf, size_t 
bufsize)
        case AF_INET6:
                if (IN6_IS_ADDR_UNSPECIFIED(&sstosin6(ss)->sin6_addr))
                        addrstr[0] = '*';
+               else
+                       needs_ipv6_brackets = true;
                port = ntohs(sstosin6(ss)->sin6_port);
                break;
        case AF_UNIX:
@@ -946,7 +949,7 @@ formataddr(struct sockaddr_storage *ss, char *buf, size_t 
bufsize)
                if (is_xo_style_encoding) {
                        xo_emit("{:path/%.*s}", sun->sun_len - off,
                                sun->sun_path);
-                       return 0;
+                       return (0);
                }
                return snprintf(buf, bufsize, "%.*s",
                                sun->sun_len - off, sun->sun_path);
@@ -962,6 +965,11 @@ formataddr(struct sockaddr_storage *ss, char *buf, size_t 
bufsize)
                xo_emit("{:port/%d}", port);
                return (0);
        }
+       if (needs_ipv6_brackets) {
+               if (port == 0)
+                       return (snprintf(buf, bufsize, "[%s]:*", addrstr));
+               return (snprintf(buf, bufsize, "[%s]:%d", addrstr, port));
+       }
        if (port == 0)
                return (snprintf(buf, bufsize, "%s:*", addrstr));
        return (snprintf(buf, bufsize, "%s:%d", addrstr, port));

Reply via email to