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 #ifdef __KERNEL__ 12 13 int init_socket_xprt(void); 14 void cleanup_socket_xprt(void); 15 16 #define RPC_MIN_RESVPORT (1U) 17 #define RPC_MAX_RESVPORT (65535U) 18 #define RPC_DEF_MIN_RESVPORT (665U) 19 #define RPC_DEF_MAX_RESVPORT (1023U) 20 21 struct sock_xprt { 22 struct rpc_xprt xprt; 23 24 /* 25 * Network layer 26 */ 27 struct socket * sock; 28 struct sock * inet; 29 struct file * file; 30 31 /* 32 * State of TCP reply receive 33 */ 34 struct { 35 struct { 36 __be32 fraghdr, 37 xid, 38 calldir; 39 } __attribute__((packed)); 40 41 u32 offset, 42 len; 43 44 unsigned long copied; 45 } recv; 46 47 /* 48 * State of TCP transmit queue 49 */ 50 struct { 51 u32 offset; 52 } xmit; 53 54 /* 55 * Connection of transports 56 */ 57 unsigned long sock_state; 58 struct delayed_work connect_worker; 59 struct work_struct recv_worker; 60 struct mutex recv_mutex; 61 struct sockaddr_storage srcaddr; 62 unsigned short srcport; 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 88 #endif /* __KERNEL__ */ 89 90 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */ 91