4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #
pragma D depends_on library ip
.d
28 #
pragma D depends_on library net
.d
29 #
pragma D depends_on
module nfs
31 inline
int T_RDMA
= 4;
32 #
pragma D binding
"1.5" T_RDMA
34 typedef struct nfsv4opinfo
{
35 uint64_t noi_xid
; /* unique transation ID */
36 cred_t
*noi_cred
; /* credentials for operation */
37 string noi_curpath
; /* current file handle path (if any) */
40 typedef struct nfsv4cbinfo
{
41 string nci_curpath
; /* current file handle path (if any) */
44 #
pragma D binding
"1.5" translator
45 translator conninfo_t
< struct svc_req
*P
> {
46 ci_protocol
= P
->rq_xprt
->xp_xpc
.xpc_type
== T_RDMA ?
"rdma" :
47 P
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp" ?
"ipv4" :
48 P
->rq_xprt
->xp_xpc
.xpc_netid
== "udp" ?
"ipv4" :
49 P
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp6" ?
"ipv6" :
50 P
->rq_xprt
->xp_xpc
.xpc_netid
== "udp6" ?
"ipv6" :
53 ci_local
= (P
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp" ||
54 P
->rq_xprt
->xp_xpc
.xpc_netid
== "udp") ?
55 inet_ntoa(&((struct sockaddr_in
*)
56 P
->rq_xprt
->xp_xpc
.xpc_lcladdr
.buf
)->sin_addr
.S_un
.S_addr
) :
57 (P
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp6" ||
58 P
->rq_xprt
->xp_xpc
.xpc_netid
== "udp6") ?
59 inet_ntoa6(&((struct sockaddr_in6
*)
60 P
->rq_xprt
->xp_xpc
.xpc_lcladdr
.buf
)->sin6_addr
) :
63 ci_remote
= (P
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp" ||
64 P
->rq_xprt
->xp_xpc
.xpc_netid
== "udp") ?
65 inet_ntoa(&((struct sockaddr_in
*)
66 P
->rq_xprt
->xp_xpc
.xpc_rtaddr
.buf
)->sin_addr
.S_un
.S_addr
) :
67 (P
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp6" ||
68 P
->rq_xprt
->xp_xpc
.xpc_netid
== "udp6") ?
69 inet_ntoa6(&((struct sockaddr_in6
*)
70 P
->rq_xprt
->xp_xpc
.xpc_rtaddr
.buf
)->sin6_addr
) :
74 #
pragma D binding
"1.5" translator
75 translator conninfo_t
< struct compound_state
*P
> {
76 ci_protocol
= P
->req
->rq_xprt
->xp_xpc
.xpc_type
== T_RDMA ?
"rdma" :
77 P
->req
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp" ?
"ipv4" :
78 P
->req
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp6" ?
"ipv6" :
81 ci_local
= (P
->req
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp") ?
82 inet_ntoa(&((struct sockaddr_in
*)
83 P
->req
->rq_xprt
->xp_xpc
.xpc_lcladdr
.buf
)->sin_addr
.S_un
.S_addr
) :
84 (P
->req
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp6") ?
85 inet_ntoa6(&((struct sockaddr_in6
*)
86 P
->req
->rq_xprt
->xp_xpc
.xpc_lcladdr
.buf
)->sin6_addr
) :
89 ci_remote
= (P
->req
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp") ?
90 inet_ntoa(&((struct sockaddr_in
*)
91 P
->req
->rq_xprt
->xp_xpc
.xpc_rtaddr
.buf
)->sin_addr
.S_un
.S_addr
) :
92 (P
->req
->rq_xprt
->xp_xpc
.xpc_netid
== "tcp6") ?
93 inet_ntoa6(&((struct sockaddr_in6
*)
94 P
->req
->rq_xprt
->xp_xpc
.xpc_rtaddr
.buf
)->sin6_addr
) :
99 #
pragma D binding
"1.5" translator
100 translator nfsv4opinfo_t
< struct compound_state
*P
> {
101 noi_xid
= P
->req
->rq_xprt
->xp_xid
;
102 noi_cred
= P
->basecr
;
103 noi_curpath
= (P
->vp
== NULL
) ?
"<unknown>" : P
->vp
->v_path
;
106 typedef struct nfsv3opinfo
{
107 uint64_t noi_xid
; /* unique transation ID */
108 cred_t
*noi_cred
; /* credentials for operation */
109 string noi_curpath
; /* current file handle path (if any) */
112 typedef struct nfsv3oparg nfsv3oparg_t
;
114 #
pragma D binding
"1.5" translator
115 translator nfsv3opinfo_t
< nfsv3oparg_t
*P
> {
116 noi_xid
= ((struct svc_req
*)arg0
)->rq_xprt
->xp_xid
;
117 noi_cred
= (cred_t
*)arg1
;
118 noi_curpath
= (arg2
== 0 ||
((vnode_t
*)arg2
)->v_path
== NULL
) ?
119 "<unknown>" : ((vnode_t
*)arg2
)->v_path
;