summaryrefslogtreecommitdiffstats
path: root/tapset/rpc.stp
diff options
context:
space:
mode:
authorguanglei <guanglei>2006-12-29 08:02:07 +0000
committerguanglei <guanglei>2006-12-29 08:02:07 +0000
commit5282f2bda20be7380a06afc339538d64c5e8e611 (patch)
treec37852d3214efc52cb9bf5609d9e95b72a4930c3 /tapset/rpc.stp
parenta9711974fa10d0c8cb57247183fadcf93cb06c91 (diff)
downloadsystemtap-steved-5282f2bda20be7380a06afc339538d64c5e8e611.tar.gz
systemtap-steved-5282f2bda20be7380a06afc339538d64c5e8e611.tar.xz
systemtap-steved-5282f2bda20be7380a06afc339538d64c5e8e611.zip
bugfix for 2.6.19 kernel
Diffstat (limited to 'tapset/rpc.stp')
-rw-r--r--tapset/rpc.stp20
1 files changed, 18 insertions, 2 deletions
diff --git a/tapset/rpc.stp b/tapset/rpc.stp
index 042f878f..ef001e9e 100644
--- a/tapset/rpc.stp
+++ b/tapset/rpc.stp
@@ -828,25 +828,41 @@ function xid_from_clnt:long(clnt:long)
function prog_from_clnt:long(clnt:long)
%{
struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
+ THIS->__retvalue = clnt ? clnt->cl_prog : 0;
+#else
THIS->__retvalue = clnt ? clnt->cl_pmap->pm_prog : 0;
+#endif
%}
function vers_from_clnt:long(clnt:long)
%{
struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
+ THIS->__retvalue = clnt ? clnt->cl_vers : 0;
+#else
THIS->__retvalue = clnt ? clnt->cl_pmap->pm_vers : 0;
+#endif
%}
function prot_from_clnt:long(clnt:long)
%{
struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt;
- THIS->__retvalue = clnt ? clnt->cl_pmap->pm_prot : 0;
+ THIS->__retvalue = clnt ? clnt->cl_xprt->prot : 0;
%}
function port_from_clnt:long(clnt:long)
%{
struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt;
- THIS->__retvalue = clnt ? clnt->cl_pmap->pm_port : 0;
+ if(clnt != NULL) {
+ struct sockaddr_in *addr = (struct sockaddr_in *)&(clnt->cl_xprt->addr);
+ if(addr != NULL && addr->sin_family == AF_INET) {
+ /* Now consider ipv4 only */
+ THIS->__retvalue = ntohs(addr->sin_port);
+ return;
+ }
+ }
+ THIS->__retvalue = 0;
%}
function clones_from_clnt:long(clnt:long)