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