linux/include/linux/sunrpc/xprtsock.h
<<
>>
Prefs
   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
  11int             init_socket_xprt(void);
  12void            cleanup_socket_xprt(void);
  13
  14#define RPC_MIN_RESVPORT        (1U)
  15#define RPC_MAX_RESVPORT        (65535U)
  16#define RPC_DEF_MIN_RESVPORT    (665U)
  17#define RPC_DEF_MAX_RESVPORT    (1023U)
  18
  19struct sock_xprt {
  20        struct rpc_xprt         xprt;
  21
  22        /*
  23         * Network layer
  24         */
  25        struct socket *         sock;
  26        struct sock *           inet;
  27        struct file *           file;
  28
  29        /*
  30         * State of TCP reply receive
  31         */
  32        struct {
  33                struct {
  34                        __be32  fraghdr,
  35                                xid,
  36                                calldir;
  37                } __attribute__((packed));
  38
  39                u32             offset,
  40                                len;
  41
  42                unsigned long   copied;
  43        } recv;
  44
  45        /*
  46         * State of TCP transmit queue
  47         */
  48        struct {
  49                u32             offset;
  50        } xmit;
  51
  52        /*
  53         * Connection of transports
  54         */
  55        unsigned long           sock_state;
  56        struct delayed_work     connect_worker;
  57        struct work_struct      error_worker;
  58        struct work_struct      recv_worker;
  59        struct mutex            recv_mutex;
  60        struct sockaddr_storage srcaddr;
  61        unsigned short          srcport;
  62        int                     xprt_err;
  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#define XPRT_SOCK_WAKE_ERROR    (4)
  88#define XPRT_SOCK_WAKE_WRITE    (5)
  89#define XPRT_SOCK_WAKE_PENDING  (6)
  90#define XPRT_SOCK_WAKE_DISCONNECT       (7)
  91
  92#endif /* _LINUX_SUNRPC_XPRTSOCK_H */
  93