summaryrefslogtreecommitdiffstats
path: root/sys_bind
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2008-11-21 12:29:33 -0500
committerSteve Dickson <steved@redhat.com>2008-11-21 12:29:33 -0500
commitc6425b809d873bb602e4192e7ccea56653f6a6db (patch)
tree83825592e84648c58c00251890d7bdd4f2555f27 /sys_bind
parentb4e375cf7ab4f309661d548d0169bbdc10504aab (diff)
downloadsystemtap-c6425b809d873bb602e4192e7ccea56653f6a6db.tar.gz
systemtap-c6425b809d873bb602e4192e7ccea56653f6a6db.tar.xz
systemtap-c6425b809d873bb602e4192e7ccea56653f6a6db.zip
Added sys_bind/inet_bind.stp
Added tracemarks/nfs_mount.trace Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'sys_bind')
-rw-r--r--sys_bind/inet_bind.stp72
1 files changed, 72 insertions, 0 deletions
diff --git a/sys_bind/inet_bind.stp b/sys_bind/inet_bind.stp
new file mode 100644
index 0000000..0048791
--- /dev/null
+++ b/sys_bind/inet_bind.stp
@@ -0,0 +1,72 @@
+%{
+#include <net/sock.h>
+#include <linux/in.h>
+%}
+
+function _inet_ntoa:string (_uaddr:long) %{
+ struct sockaddr_in *addr;
+ unsigned char *bytes;
+
+ addr = (struct sockaddr_in *)(long)kread(&THIS->_uaddr);
+ bytes = (unsigned char *)&addr->sin_addr.s_addr;
+
+ snprintf(THIS->__retvalue, MAXSTRINGLEN,
+ "%d.%d.%d.%d", bytes[0], bytes[1], bytes[2], bytes[3]);
+
+ CATCH_DEREF_FAULT();
+%}
+function _sock_dump:string (_sk:long) %{
+ struct sock *sk;
+
+ sk = (struct sock *)(long)kread(&THIS->_sk);
+ snprintf(THIS->__retvalue, MAXSTRINGLEN,
+ "reuse %d state %d", sk->sk_reuse, sk->sk_state);
+
+ CATCH_DEREF_FAULT();
+%}
+
+probe kernel.function("inet_bind") {
+ if (isinstr(execname(), "rpc.nfsd")) {
+ printf("inet_bind(%s): sock %p uaddr %s addr_len %d\n",
+ execname(), $sock, _inet_ntoa($uaddr), $addr_len);
+ }
+}
+probe kernel.function("inet_bind").return {
+ if (isinstr(execname(), "rpc.nfsd"))
+ printf("inet_bind: return %d (%s)\n", $return, errno_str($return));
+}
+probe kernel.function("udp_v4_get_port") {
+ if (isinstr(execname(), "rpc.nfsd")) {
+ printf(" udp_v4_get_port(%s): sock %p snum %d\n",
+ execname(), $sk, $snum);
+ }
+}
+probe kernel.function("udp_v4_get_port").return {
+ if (isinstr(execname(), "rpc.nfsd"))
+ printf(" udp_v4_get_port: return %d (%s)\n",
+ $return, errno_str($return));
+}
+probe kernel.function("tcp_v4_get_port") {
+ if (isinstr(execname(), "rpc.nfsd")) {
+ printf(" tcp_v4_get_port(%s): sock [%s] snum %d\n",
+ execname(), _sock_dump($sk), $snum);
+ }
+}
+probe kernel.function("tcp_v4_get_port").return {
+ if (isinstr(execname(), "rpc.nfsd"))
+ printf(" tcp_v4_get_port: return %d (%s)\n",
+ $return, errno_str($return));
+}
+probe kernel.function("inet_csk_bind_conflict") {
+ if (isinstr(execname(), "rpc.nfsd")) {
+ printf(" bind_conflict(%s): sock [%s] snum tb %p\n",
+ execname(), _sock_dump($sk), $tb);
+ }
+}
+probe kernel.function("inet_csk_bind_conflict").return {
+ if (isinstr(execname(), "rpc.nfsd"))
+ printf(" bind_conflict: return %d (%s)\n",
+ $return, errno_str($return));
+}
+probe begin { log("starting inet_bind probe") }
+probe end { log("ending inet_bind probe") }