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