Commit | Line | Data |
---|---|---|
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 |
11 | int init_socket_xprt(void); |
12 | void 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 |
19 | struct 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 */ |