Merge tag 'input-for-v6.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / include / linux / sunrpc / xprtsock.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
49c36fcc
TT
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
49c36fcc
TT
11int init_socket_xprt(void);
12void cleanup_socket_xprt(void);
13
49c36fcc
TT
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
1a867a08
JL
19struct sock_xprt {
20 struct rpc_xprt xprt;
21
22 /*
23 * Network layer
24 */
25 struct socket * sock;
26 struct sock * inet;
a73881c9 27 struct file * file;
1a867a08
JL
28
29 /*
30 * State of TCP reply receive
31 */
d1109aa5 32 struct {
277e4ab7
TM
33 struct {
34 __be32 fraghdr,
d1109aa5
TM
35 xid,
36 calldir;
277e4ab7 37 } __attribute__((packed));
1a867a08 38
d1109aa5
TM
39 u32 offset,
40 len;
1a867a08 41
277e4ab7 42 unsigned long copied;
d1109aa5 43 } recv;
1a867a08 44
6c7a64e5
TM
45 /*
46 * State of TCP transmit queue
47 */
48 struct {
49 u32 offset;
50 } xmit;
51
1a867a08
JL
52 /*
53 * Connection of transports
54 */
0fdea1e8 55 unsigned long sock_state;
1a867a08 56 struct delayed_work connect_worker;
4f8943f8 57 struct work_struct error_worker;
edc1b01c
TM
58 struct work_struct recv_worker;
59 struct mutex recv_mutex;
75eb6af7 60 struct completion handshake_done;
1a867a08
JL
61 struct sockaddr_storage srcaddr;
62 unsigned short srcport;
af84537d 63 int xprt_err;
75eb6af7 64 struct rpc_clnt *clnt;
1a867a08
JL
65
66 /*
67 * UDP socket buffer size parameters
68 */
69 size_t rcvsize,
70 sndsize;
71
7196dbb0
TM
72 struct rpc_timeout tcp_timeout;
73
1a867a08
JL
74 /*
75 * Saved socket callback addresses
76 */
77 void (*old_data_ready)(struct sock *);
78 void (*old_state_change)(struct sock *);
79 void (*old_write_space)(struct sock *);
80 void (*old_error_report)(struct sock *);
81};
82
1a867a08
JL
83/*
84 * TCP RPC flags
85 */
0fdea1e8 86#define XPRT_SOCK_CONNECTING 1U
42d42a5b 87#define XPRT_SOCK_DATA_READY (2)
7196dbb0 88#define XPRT_SOCK_UPD_TIMEOUT (3)
4f8943f8
TM
89#define XPRT_SOCK_WAKE_ERROR (4)
90#define XPRT_SOCK_WAKE_WRITE (5)
91#define XPRT_SOCK_WAKE_PENDING (6)
92#define XPRT_SOCK_WAKE_DISCONNECT (7)
89f42494 93#define XPRT_SOCK_CONNECT_SENT (8)
2790a624 94#define XPRT_SOCK_NOSPACE (9)
0d3ca07f 95#define XPRT_SOCK_IGNORE_RECV (10)
0fdea1e8 96
49c36fcc 97#endif /* _LINUX_SUNRPC_XPRTSOCK_H */