summaryrefslogtreecommitdiffstats
path: root/include/linux/sunrpc/xprtsock.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/sunrpc/xprtsock.h')
-rw-r--r--include/linux/sunrpc/xprtsock.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/include/linux/sunrpc/xprtsock.h b/include/linux/sunrpc/xprtsock.h
new file mode 100644
index 000000000..700a1e6c0
--- /dev/null
+++ b/include/linux/sunrpc/xprtsock.h
@@ -0,0 +1,97 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * linux/include/linux/sunrpc/xprtsock.h
+ *
+ * Declarations for the RPC transport socket provider.
+ */
+
+#ifndef _LINUX_SUNRPC_XPRTSOCK_H
+#define _LINUX_SUNRPC_XPRTSOCK_H
+
+int init_socket_xprt(void);
+void cleanup_socket_xprt(void);
+
+#define RPC_MIN_RESVPORT (1U)
+#define RPC_MAX_RESVPORT (65535U)
+#define RPC_DEF_MIN_RESVPORT (665U)
+#define RPC_DEF_MAX_RESVPORT (1023U)
+
+struct sock_xprt {
+ struct rpc_xprt xprt;
+
+ /*
+ * Network layer
+ */
+ struct socket * sock;
+ struct sock * inet;
+ struct file * file;
+
+ /*
+ * State of TCP reply receive
+ */
+ struct {
+ struct {
+ __be32 fraghdr,
+ xid,
+ calldir;
+ } __attribute__((packed));
+
+ u32 offset,
+ len;
+
+ unsigned long copied;
+ } recv;
+
+ /*
+ * State of TCP transmit queue
+ */
+ struct {
+ u32 offset;
+ } xmit;
+
+ /*
+ * Connection of transports
+ */
+ unsigned long sock_state;
+ struct delayed_work connect_worker;
+ struct work_struct error_worker;
+ struct work_struct recv_worker;
+ struct mutex recv_mutex;
+ struct completion handshake_done;
+ struct sockaddr_storage srcaddr;
+ unsigned short srcport;
+ int xprt_err;
+ struct rpc_clnt *clnt;
+
+ /*
+ * UDP socket buffer size parameters
+ */
+ size_t rcvsize,
+ sndsize;
+
+ struct rpc_timeout tcp_timeout;
+
+ /*
+ * Saved socket callback addresses
+ */
+ void (*old_data_ready)(struct sock *);
+ void (*old_state_change)(struct sock *);
+ void (*old_write_space)(struct sock *);
+ void (*old_error_report)(struct sock *);
+};
+
+/*
+ * TCP RPC flags
+ */
+#define XPRT_SOCK_CONNECTING 1U
+#define XPRT_SOCK_DATA_READY (2)
+#define XPRT_SOCK_UPD_TIMEOUT (3)
+#define XPRT_SOCK_WAKE_ERROR (4)
+#define XPRT_SOCK_WAKE_WRITE (5)
+#define XPRT_SOCK_WAKE_PENDING (6)
+#define XPRT_SOCK_WAKE_DISCONNECT (7)
+#define XPRT_SOCK_CONNECT_SENT (8)
+#define XPRT_SOCK_NOSPACE (9)
+#define XPRT_SOCK_IGNORE_RECV (10)
+
+#endif /* _LINUX_SUNRPC_XPRTSOCK_H */