root/include/linux/sunrpc/xprtsock.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */

/* [<][>][^][v][top][bottom][index][help] */