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: {