]> sourceware.org Git - systemtap.git/commitdiff
PR26181: Use explicit @cast() within get_ip_from_client()
authorMartin Cermak <mcermak@redhat.com>
Mon, 29 Jun 2020 14:30:34 +0000 (16:30 +0200)
committerMartin Cermak <mcermak@redhat.com>
Mon, 29 Jun 2020 14:30:34 +0000 (16:30 +0200)
Commit 00ee19ff030f665df7e087a579f39105256a0253 changed how @cast()
operations work and they no longer default to using the kernel
debuginfo for type information.  Need to include kernel as location for
this information for the  @cast() rather than just assuming a default.

Also, fix the type of server_ip, which historically had been a long,
but since systemtap_v >= "4.3", it is a string.

tapset/linux/nfs_proc.stp

index 8da3f6b7b8678d94a0ceac713edfee442b648836..25790745717e471596f4d425a0f2fc93609a63a9 100644 (file)
@@ -77,11 +77,11 @@ function get_ip_from_client:string(clnt:long)
         * inside that buffer. */
        if (@cast(addr, "sockaddr")->sa_family
                == @const("AF_INET")) {
-               return format_ipaddr(&@cast(addr, "sockaddr_in")->sin_addr->s_addr, @const("AF_INET"))
+               return format_ipaddr(&@cast(addr, "sockaddr_in", "kernel:sunrpc")->sin_addr->s_addr, @const("AF_INET"))
        }
        else if (@cast(addr, "sockaddr")->sa_family 
                == @const("AF_INET6"))  {
-               return format_ipaddr(&@cast(addr, "sockaddr_in6")->sin6_addr, @const("AF_INET6"))
+               return format_ipaddr(&@cast(addr, "sockaddr_in6", "kernel:sunrpc")->sin6_addr, @const("AF_INET6"))
        }
        return ""       
 }
@@ -90,12 +90,12 @@ function get_ip_from_client:long(clnt:long)
 {
        cl_xprt = @cast(clnt, "rpc_clnt", "kernel:sunrpc")->cl_xprt
         addr = &@cast(cl_xprt, "rpc_xprt", "kernel:sunrpc")->addr
-       if (@cast(addr, "sockaddr_in")->sin_family
+       if (@cast(addr, "sockaddr_in", "kernel:sunrpc")->sin_family
                != @const("AF_INET")) {
                /* Now consider ipv4 only */
                return 0
        }
-       return @cast(addr, "sockaddr_in")->sin_addr->s_addr
+       return @cast(addr, "sockaddr_in", "kernel:sunrpc")->sin_addr->s_addr
 }
 %)
 
@@ -758,7 +758,11 @@ probe _nfs.proc2.missing_read_setup = never
 {
        inode = 0
        client = 0
+%( systemtap_v >= "4.3" %?
+       server_ip = "0"
+%:
        server_ip = 0
+%)
        prot = 0
 
        count = 0
This page took 0.02919 seconds and 5 git commands to generate.