Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[sfrench/cifs-2.6.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      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 */