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 #define XPRT_SOCK_CONNECT_SENT	(8)
92 #define XPRT_SOCK_NOSPACE	(9)
93 
94 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */
95