GNU Linux-libre 4.14.290-gnu1
[releases.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 #ifdef __KERNEL__
12
13 int             init_socket_xprt(void);
14 void            cleanup_socket_xprt(void);
15
16 #define RPC_MIN_RESVPORT        (1U)
17 #define RPC_MAX_RESVPORT        (65535U)
18 #define RPC_DEF_MIN_RESVPORT    (665U)
19 #define RPC_DEF_MAX_RESVPORT    (1023U)
20
21 struct sock_xprt {
22         struct rpc_xprt         xprt;
23
24         /*
25          * Network layer
26          */
27         struct socket *         sock;
28         struct sock *           inet;
29
30         /*
31          * State of TCP reply receive
32          */
33         __be32                  tcp_fraghdr,
34                                 tcp_xid,
35                                 tcp_calldir;
36
37         u32                     tcp_offset,
38                                 tcp_reclen;
39
40         unsigned long           tcp_copied,
41                                 tcp_flags;
42
43         /*
44          * Connection of transports
45          */
46         unsigned long           sock_state;
47         struct delayed_work     connect_worker;
48         struct work_struct      recv_worker;
49         struct mutex            recv_mutex;
50         struct sockaddr_storage srcaddr;
51         unsigned short          srcport;
52
53         /*
54          * UDP socket buffer size parameters
55          */
56         size_t                  rcvsize,
57                                 sndsize;
58
59         struct rpc_timeout      tcp_timeout;
60
61         /*
62          * Saved socket callback addresses
63          */
64         void                    (*old_data_ready)(struct sock *);
65         void                    (*old_state_change)(struct sock *);
66         void                    (*old_write_space)(struct sock *);
67         void                    (*old_error_report)(struct sock *);
68 };
69
70 /*
71  * TCP receive state flags
72  */
73 #define TCP_RCV_LAST_FRAG       (1UL << 0)
74 #define TCP_RCV_COPY_FRAGHDR    (1UL << 1)
75 #define TCP_RCV_COPY_XID        (1UL << 2)
76 #define TCP_RCV_COPY_DATA       (1UL << 3)
77 #define TCP_RCV_READ_CALLDIR    (1UL << 4)
78 #define TCP_RCV_COPY_CALLDIR    (1UL << 5)
79
80 /*
81  * TCP RPC flags
82  */
83 #define TCP_RPC_REPLY           (1UL << 6)
84
85 #define XPRT_SOCK_CONNECTING    1U
86 #define XPRT_SOCK_DATA_READY    (2)
87 #define XPRT_SOCK_UPD_TIMEOUT   (3)
88
89 #endif /* __KERNEL__ */
90
91 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */