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