diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index e4af82a653a5..3480997a748a 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -58,6 +58,7 @@ extern int errno; #include #include #include +#include #include #include #include @@ -528,14 +529,23 @@ ktrsyscall(struct ktr_syscall *ktr) ip++; narg-=2; } else if (ktr->ktr_code == SYS_socket) { + int sockdomain; (void)putchar('('); - sockdomainname((int)*ip); + sockdomain=(int)*ip; + sockdomainname(sockdomain); ip++; narg--; (void)putchar(','); socktypename((int)*ip); ip++; narg--; + if (sockdomain == PF_INET || + sockdomain == PF_INET6) { + (void)putchar(','); + sockipprotoname((int)*ip); + ip++; + narg--; + } c = ','; } else if (ktr->ktr_code == SYS_setsockopt || ktr->ktr_code == SYS_getsockopt) { diff --git a/usr.bin/kdump/kdump_subr.h b/usr.bin/kdump/kdump_subr.h index f69921d8c0de..6e336ddbc22a 100644 --- a/usr.bin/kdump/kdump_subr.h +++ b/usr.bin/kdump/kdump_subr.h @@ -21,6 +21,7 @@ void flockname (int); void sockoptname (int); void sockoptlevelname (int, int); void sockdomainname (int); +void sockipprotoname (int); void socktypename (int); void thrcreateflagsname (int); void mlockallname (int); diff --git a/usr.bin/kdump/mksubr b/usr.bin/kdump/mksubr index 78cbeabc3d68..4231aab48be2 100644 --- a/usr.bin/kdump/mksubr +++ b/usr.bin/kdump/mksubr @@ -138,6 +138,7 @@ cat <<_EOF_ #define _KERNEL #include #undef _KERNEL +#include #include #include #include @@ -335,6 +336,7 @@ auto_switch_type "lio_listioname" "LIO_(NO)?WAIT[[:space:]]+[0-9]+" "aio.h" auto_switch_type "minheritname" "INHERIT_[A-Z]+[[:space:]]+[0-9]+" "sys/mman.h" auto_switch_type "quotactlname" "Q_[A-Z]+[[:space:]]+0x[0-9]+" "ufs/ufs/quota.h" auto_if_type "sockdomainname" "PF_[[:alnum:]]+[[:space:]]+" "sys/socket.h" +auto_if_type "sockipprotoname" "IPPROTO_[[:alnum:]]+[[:space:]]+" "netinet/in.h" auto_switch_type "sockoptname" "SO_[A-Z]+[[:space:]]+0x[0-9]+" "sys/socket.h" auto_switch_type "socktypename" "SOCK_[A-Z]+[[:space:]]+[1-9]+[0-9]*" "sys/socket.h"