Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  *  linux/include/linux/sunrpc/xprtsock.h
0004  *
0005  *  Declarations for the RPC transport socket provider.
0006  */
0007 
0008 #ifndef _LINUX_SUNRPC_XPRTSOCK_H
0009 #define _LINUX_SUNRPC_XPRTSOCK_H
0010 
0011 int     init_socket_xprt(void);
0012 void        cleanup_socket_xprt(void);
0013 
0014 #define RPC_MIN_RESVPORT    (1U)
0015 #define RPC_MAX_RESVPORT    (65535U)
0016 #define RPC_DEF_MIN_RESVPORT    (665U)
0017 #define RPC_DEF_MAX_RESVPORT    (1023U)
0018 
0019 struct sock_xprt {
0020     struct rpc_xprt     xprt;
0021 
0022     /*
0023      * Network layer
0024      */
0025     struct socket *     sock;
0026     struct sock *       inet;
0027     struct file *       file;
0028 
0029     /*
0030      * State of TCP reply receive
0031      */
0032     struct {
0033         struct {
0034             __be32  fraghdr,
0035                 xid,
0036                 calldir;
0037         } __attribute__((packed));
0038 
0039         u32     offset,
0040                 len;
0041 
0042         unsigned long   copied;
0043     } recv;
0044 
0045     /*
0046      * State of TCP transmit queue
0047      */
0048     struct {
0049         u32     offset;
0050     } xmit;
0051 
0052     /*
0053      * Connection of transports
0054      */
0055     unsigned long       sock_state;
0056     struct delayed_work connect_worker;
0057     struct work_struct  error_worker;
0058     struct work_struct  recv_worker;
0059     struct mutex        recv_mutex;
0060     struct sockaddr_storage srcaddr;
0061     unsigned short      srcport;
0062     int         xprt_err;
0063 
0064     /*
0065      * UDP socket buffer size parameters
0066      */
0067     size_t          rcvsize,
0068                 sndsize;
0069 
0070     struct rpc_timeout  tcp_timeout;
0071 
0072     /*
0073      * Saved socket callback addresses
0074      */
0075     void            (*old_data_ready)(struct sock *);
0076     void            (*old_state_change)(struct sock *);
0077     void            (*old_write_space)(struct sock *);
0078     void            (*old_error_report)(struct sock *);
0079 };
0080 
0081 /*
0082  * TCP RPC flags
0083  */
0084 #define XPRT_SOCK_CONNECTING    1U
0085 #define XPRT_SOCK_DATA_READY    (2)
0086 #define XPRT_SOCK_UPD_TIMEOUT   (3)
0087 #define XPRT_SOCK_WAKE_ERROR    (4)
0088 #define XPRT_SOCK_WAKE_WRITE    (5)
0089 #define XPRT_SOCK_WAKE_PENDING  (6)
0090 #define XPRT_SOCK_WAKE_DISCONNECT   (7)
0091 #define XPRT_SOCK_CONNECT_SENT  (8)
0092 #define XPRT_SOCK_NOSPACE   (9)
0093 
0094 #endif /* _LINUX_SUNRPC_XPRTSOCK_H */