diff options
author | rodrigc <rodrigc@FreeBSD.org> | 2007-01-04 04:46:59 +0000 |
---|---|---|
committer | rodrigc <rodrigc@FreeBSD.org> | 2007-01-04 04:46:59 +0000 |
commit | e6806e98ace2a93e54e030f51d31eeb42a5bb3a8 (patch) | |
tree | d49bb3c32d244522e3596aeda077b40b326e49f6 /usr.bin/kdump | |
parent | 16a5e10cc2135186a2bdd7b19fc81536d6501bca (diff) | |
download | FreeBSD-src-e6806e98ace2a93e54e030f51d31eeb42a5bb3a8.zip FreeBSD-src-e6806e98ace2a93e54e030f51d31eeb42a5bb3a8.tar.gz |
Add sockipprotoname() function. Decode the third parameter (protocol)
of a socket() call with sockipprotoname() if the first parameter (domain)
is PF_INET or PF_INET6.
Old parsing behavior before this change:
ping6 CALL socket(PF_INET6,SOCK_RAW,0x3a)
New behavior after this change:
ping6 CALL socket(PF_INET6,SOCK_RAW,IPPROTO_ICMPV6)
Diffstat (limited to 'usr.bin/kdump')
-rw-r--r-- | usr.bin/kdump/kdump.c | 12 | ||||
-rw-r--r-- | usr.bin/kdump/kdump_subr.h | 1 | ||||
-rw-r--r-- | usr.bin/kdump/mksubr | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index e4af82a..3480997 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -58,6 +58,7 @@ extern int errno; #include <sys/ktrace.h> #include <sys/ioctl.h> #include <sys/ptrace.h> +#include <sys/socket.h> #include <err.h> #include <locale.h> #include <stdio.h> @@ -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 f69921d..6e336dd 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 78cbeab..4231aab 100644 --- a/usr.bin/kdump/mksubr +++ b/usr.bin/kdump/mksubr @@ -138,6 +138,7 @@ cat <<_EOF_ #define _KERNEL #include <sys/socket.h> #undef _KERNEL +#include <netinet/in.h> #include <sys/param.h> #include <sys/mount.h> #include <sys/resource.h> @@ -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" |