Hi,

scope is there, just not shown. While there, use proper constants for
two sizes.

        -Otto


Index: ktrstruct.c
===================================================================
RCS file: /cvs/src/usr.bin/kdump/ktrstruct.c,v
retrieving revision 1.28
diff -u -p -r1.28 ktrstruct.c
--- ktrstruct.c 17 Nov 2018 20:46:12 -0000      1.28
+++ ktrstruct.c 20 Dec 2020 12:34:34 -0000
@@ -90,7 +90,7 @@ ktrsockaddr(struct sockaddr *sa)
        switch(sa->sa_family) {
        case AF_INET: {
                struct sockaddr_in      *sa_in;
-               char addr[64];
+               char addr[INET_ADDRSTRLEN];
 
                sa_in = (struct sockaddr_in *)sa;
                check_sockaddr_len(in);
@@ -100,12 +100,15 @@ ktrsockaddr(struct sockaddr *sa)
        }
        case AF_INET6: {
                struct sockaddr_in6     *sa_in6;
-               char addr[64];
+               char addr[INET6_ADDRSTRLEN], scope[12] = { 0 };
 
                sa_in6 = (struct sockaddr_in6 *)sa;
                check_sockaddr_len(in6);
                inet_ntop(AF_INET6, &sa_in6->sin6_addr, addr, sizeof addr);
-               printf("[%s]:%u", addr, htons(sa_in6->sin6_port));
+               if (sa_in6->sin6_scope_id)
+                       snprintf(scope, sizeof(scope), "%%%u",
+                           sa_in6->sin6_scope_id);
+               printf("[%s%s]:%u", addr, scope, htons(sa_in6->sin6_port));
                break;
        }
        case AF_UNIX: {

Reply via email to