summaryrefslogtreecommitdiffstats
path: root/tapset/inet_sock.stp
diff options
context:
space:
mode:
authortpnguyen <tpnguyen>2006-06-24 06:02:35 +0000
committertpnguyen <tpnguyen>2006-06-24 06:02:35 +0000
commitc587b35d1025b3eb8f1161cfc11abfd0150dfb12 (patch)
treee863eef7dc748ec86fb6a7217d68e8548e89887b /tapset/inet_sock.stp
parentccdc792f7dfd3c390d96fa998ec1891936ce8d12 (diff)
downloadsystemtap-steved-c587b35d1025b3eb8f1161cfc11abfd0150dfb12.tar.gz
systemtap-steved-c587b35d1025b3eb8f1161cfc11abfd0150dfb12.tar.xz
systemtap-steved-c587b35d1025b3eb8f1161cfc11abfd0150dfb12.zip
Added UDP tapset and common inet_sock functions. Added more descriptions to
TCP tapset.
Diffstat (limited to 'tapset/inet_sock.stp')
-rw-r--r--tapset/inet_sock.stp47
1 files changed, 47 insertions, 0 deletions
diff --git a/tapset/inet_sock.stp b/tapset/inet_sock.stp
new file mode 100644
index 00000000..995bdcfb
--- /dev/null
+++ b/tapset/inet_sock.stp
@@ -0,0 +1,47 @@
+// inet_sock information tapset
+// Copyright (C) 2006 IBM Corp.
+// Copyright (C) 2006 Intel Corporation.
+//
+// This file is part of systemtap, and is free software. You can
+// redistribute it and/or modify it under the terms of the GNU General
+// Public License (GPL); either version 2, or (at your option) any
+// later version.
+
+%{
+#include <linux/version.h>
+#include <net/sock.h>
+#include <net/tcp.h>
+#include <net/ip.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11)
+#define LPORT (inet->inet.num)
+#define DADDR (&inet->inet.daddr)
+#else
+#define LPORT (inet->num)
+#define DADDR (&inet->daddr)
+#endif
+%}
+
+// Get local port number
+function inet_get_local_port:long(sock:long)
+%{
+ unsigned long ptr = (unsigned long) THIS->sock;
+ struct inet_sock *inet = (struct inet_sock *) ptr;
+ THIS->__retvalue = deref(sizeof(LPORT), &(LPORT));
+ if (0) {
+deref_fault:
+ CONTEXT->last_error = "pointer dereference fault";
+ }
+%}
+
+// Get IP source address string
+function inet_get_ip_source:string(sock:long)
+%{
+ unsigned long ptr = (unsigned long) THIS->sock;
+ struct inet_sock *inet = (struct inet_sock *) ptr;
+ unsigned char addr[4];
+
+ memcpy(addr, DADDR, sizeof(addr));
+ sprintf(THIS->__retvalue, "%d.%d.%d.%d",
+ addr[0], addr[1], addr[2], addr[3]);
+%}