From c587b35d1025b3eb8f1161cfc11abfd0150dfb12 Mon Sep 17 00:00:00 2001 From: tpnguyen Date: Sat, 24 Jun 2006 06:02:35 +0000 Subject: Added UDP tapset and common inet_sock functions. Added more descriptions to TCP tapset. --- tapset/inet_sock.stp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tapset/inet_sock.stp (limited to 'tapset/inet_sock.stp') 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 +#include +#include +#include + +#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]); +%} -- cgit