Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v5.3-rc8 95 lines 1.8 kB view raw
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 13int init_socket_xprt(void); 14void 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 21struct 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 error_worker; 60 struct work_struct recv_worker; 61 struct mutex recv_mutex; 62 struct sockaddr_storage srcaddr; 63 unsigned short srcport; 64 65 /* 66 * UDP socket buffer size parameters 67 */ 68 size_t rcvsize, 69 sndsize; 70 71 struct rpc_timeout tcp_timeout; 72 73 /* 74 * Saved socket callback addresses 75 */ 76 void (*old_data_ready)(struct sock *); 77 void (*old_state_change)(struct sock *); 78 void (*old_write_space)(struct sock *); 79 void (*old_error_report)(struct sock *); 80}; 81 82/* 83 * TCP RPC flags 84 */ 85#define XPRT_SOCK_CONNECTING 1U 86#define XPRT_SOCK_DATA_READY (2) 87#define XPRT_SOCK_UPD_TIMEOUT (3) 88#define XPRT_SOCK_WAKE_ERROR (4) 89#define XPRT_SOCK_WAKE_WRITE (5) 90#define XPRT_SOCK_WAKE_PENDING (6) 91#define XPRT_SOCK_WAKE_DISCONNECT (7) 92 93#endif /* __KERNEL__ */ 94 95#endif /* _LINUX_SUNRPC_XPRTSOCK_H */