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 sockaddr_storage	srcaddr;
48 	unsigned short		srcport;
49 
50 	/*
51 	 * UDP socket buffer size parameters
52 	 */
53 	size_t			rcvsize,
54 				sndsize;
55 
56 	/*
57 	 * Saved socket callback addresses
58 	 */
59 	void			(*old_data_ready)(struct sock *);
60 	void			(*old_state_change)(struct sock *);
61 	void			(*old_write_space)(struct sock *);
62 	void			(*old_error_report)(struct sock *);
63 };
64 
65 /*
66  * TCP receive state flags
67  */
68 #define TCP_RCV_LAST_FRAG	(1UL << 0)
69 #define TCP_RCV_COPY_FRAGHDR	(1UL << 1)
70 #define TCP_RCV_COPY_XID	(1UL << 2)
71 #define TCP_RCV_COPY_DATA	(1UL << 3)
72 #define TCP_RCV_READ_CALLDIR	(1UL << 4)
73 #define TCP_RCV_COPY_CALLDIR	(1UL << 5)
74 
75 /*
76  * TCP RPC flags
77  */
78 #define TCP_RPC_REPLY		(1UL << 6)
79 
80 #define XPRT_SOCK_CONNECTING	1U
81 
82 #endif /* __KERNEL__ */
83 
84 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */
85