Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / include / linux / sunrpc / xprtsock.h
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      error_worker;
60         struct work_struct      recv_worker;
61         struct mutex            recv_mutex;
62         struct sockaddr_storage srcaddr;
63         unsigned short          srcport;
64         int                     xprt_err;
65
66         /*
67          * UDP socket buffer size parameters
68          */
69         size_t                  rcvsize,
70                                 sndsize;
71
72         struct rpc_timeout      tcp_timeout;
73
74         /*
75          * Saved socket callback addresses
76          */
77         void                    (*old_data_ready)(struct sock *);
78         void                    (*old_state_change)(struct sock *);
79         void                    (*old_write_space)(struct sock *);
80         void                    (*old_error_report)(struct sock *);
81 };
82
83 /*
84  * TCP RPC flags
85  */
86 #define XPRT_SOCK_CONNECTING    1U
87 #define XPRT_SOCK_DATA_READY    (2)
88 #define XPRT_SOCK_UPD_TIMEOUT   (3)
89 #define XPRT_SOCK_WAKE_ERROR    (4)
90 #define XPRT_SOCK_WAKE_WRITE    (5)
91 #define XPRT_SOCK_WAKE_PENDING  (6)
92 #define XPRT_SOCK_WAKE_DISCONNECT       (7)
93
94 #endif /* __KERNEL__ */
95
96 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */