Merge tag 'nfsd-5.5' of git://linux-nfs.org/~bfields/linux
[linux-2.6-microblaze.git] / include / linux / sunrpc / xprtsock.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  *  linux/include/linux/sunrpc/xprtsock.h
4  *
5  *  Declarations for the RPC transport socket provider.
6  */
7
8 #ifndef _LINUX_SUNRPC_XPRTSOCK_H
9 #define _LINUX_SUNRPC_XPRTSOCK_H
10
11 int             init_socket_xprt(void);
12 void            cleanup_socket_xprt(void);
13
14 #define RPC_MIN_RESVPORT        (1U)
15 #define RPC_MAX_RESVPORT        (65535U)
16 #define RPC_DEF_MIN_RESVPORT    (665U)
17 #define RPC_DEF_MAX_RESVPORT    (1023U)
18
19 struct sock_xprt {
20         struct rpc_xprt         xprt;
21
22         /*
23          * Network layer
24          */
25         struct socket *         sock;
26         struct sock *           inet;
27         struct file *           file;
28
29         /*
30          * State of TCP reply receive
31          */
32         struct {
33                 struct {
34                         __be32  fraghdr,
35                                 xid,
36                                 calldir;
37                 } __attribute__((packed));
38
39                 u32             offset,
40                                 len;
41
42                 unsigned long   copied;
43         } recv;
44
45         /*
46          * State of TCP transmit queue
47          */
48         struct {
49                 u32             offset;
50         } xmit;
51
52         /*
53          * Connection of transports
54          */
55         unsigned long           sock_state;
56         struct delayed_work     connect_worker;
57         struct work_struct      error_worker;
58         struct work_struct      recv_worker;
59         struct mutex            recv_mutex;
60         struct sockaddr_storage srcaddr;
61         unsigned short          srcport;
62         int                     xprt_err;
63
64         /*
65          * UDP socket buffer size parameters
66          */
67         size_t                  rcvsize,
68                                 sndsize;
69
70         struct rpc_timeout      tcp_timeout;
71
72         /*
73          * Saved socket callback addresses
74          */
75         void                    (*old_data_ready)(struct sock *);
76         void                    (*old_state_change)(struct sock *);
77         void                    (*old_write_space)(struct sock *);
78         void                    (*old_error_report)(struct sock *);
79 };
80
81 /*
82  * TCP RPC flags
83  */
84 #define XPRT_SOCK_CONNECTING    1U
85 #define XPRT_SOCK_DATA_READY    (2)
86 #define XPRT_SOCK_UPD_TIMEOUT   (3)
87 #define XPRT_SOCK_WAKE_ERROR    (4)
88 #define XPRT_SOCK_WAKE_WRITE    (5)
89 #define XPRT_SOCK_WAKE_PENDING  (6)
90 #define XPRT_SOCK_WAKE_DISCONNECT       (7)
91
92 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */