1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ****************************************************************************
11  ****************************************************************************/
12 #ifndef _LINUX_SUNRPC_CLNT_H
13 #define _LINUX_SUNRPC_CLNT_H
14 
15 #include <linux/sunrpc/msg_prot.h>
16 #include <linux/sunrpc/sched.h>
17 #include <linux/sunrpc/xprt.h>
18 #include <linux/sunrpc/auth.h>
19 #include <linux/sunrpc/stats.h>
20 #include <linux/sunrpc/xdr.h>
21 #include <linux/sunrpc/timer.h>
22 #include <asm/signal.h>
23 
24 struct rpc_portmap {
25  __u32 pm_prog;
26  __u32 pm_vers;
27  __u32 pm_prot;
28  __u16 pm_port;
29  unsigned char pm_binding : 1;
30  struct rpc_wait_queue pm_bindwait;
31 };
32 
33 struct rpc_inode;
34 
35 struct rpc_clnt {
36  atomic_t cl_count;
37  atomic_t cl_users;
38  struct rpc_xprt * cl_xprt;
39  struct rpc_procinfo * cl_procinfo;
40  u32 cl_maxproc;
41 
42  char * cl_server;
43  char * cl_protname;
44  struct rpc_auth * cl_auth;
45  struct rpc_stat * cl_stats;
46  struct rpc_iostats * cl_metrics;
47 
48  unsigned int cl_softrtry : 1,
49  cl_intr : 1,
50  cl_autobind : 1,
51  cl_oneshot : 1,
52  cl_dead : 1;
53 
54  struct rpc_rtt * cl_rtt;
55  struct rpc_portmap * cl_pmap;
56 
57  int cl_nodelen;
58  char cl_nodename[UNX_MAXNODENAME];
59  char cl_pathname[30];
60  struct vfsmount * cl_vfsmnt;
61  struct dentry * cl_dentry;
62  struct rpc_clnt * cl_parent;
63  struct rpc_rtt cl_rtt_default;
64  struct rpc_portmap cl_pmap_default;
65  char cl_inline_name[32];
66 };
67 #define cl_timeout cl_xprt->timeout
68 #define cl_prog cl_pmap->pm_prog
69 #define cl_vers cl_pmap->pm_vers
70 #define cl_port cl_pmap->pm_port
71 #define cl_prot cl_pmap->pm_prot
72 
73 #define RPC_MAXVERSION 4
74 struct rpc_program {
75  char * name;
76  u32 number;
77  unsigned int nrvers;
78  struct rpc_version ** version;
79  struct rpc_stat * stats;
80  char * pipe_dir_name;
81 };
82 
83 struct rpc_version {
84  u32 number;
85  unsigned int nrprocs;
86  struct rpc_procinfo * procs;
87 };
88 
89 struct rpc_procinfo {
90  u32 p_proc;
91  kxdrproc_t p_encode;
92  kxdrproc_t p_decode;
93  unsigned int p_bufsiz;
94  unsigned int p_count;
95  unsigned int p_timer;
96  u32 p_statidx;
97  char * p_name;
98 };
99 
100 #define RPC_CONGESTED(clnt) (RPCXPRT_CONGESTED((clnt)->cl_xprt))
101 #define RPC_PEERADDR(clnt) (&(clnt)->cl_xprt->addr)
102 
103 #endif
104