xprtsock.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. #ifndef _LINUX_SUNRPC_XPRTSOCK_H
  8. #define _LINUX_SUNRPC_XPRTSOCK_H
  9. int init_socket_xprt(void);
  10. void cleanup_socket_xprt(void);
  11. #define RPC_MIN_RESVPORT (1U)
  12. #define RPC_MAX_RESVPORT (65535U)
  13. #define RPC_DEF_MIN_RESVPORT (665U)
  14. #define RPC_DEF_MAX_RESVPORT (1023U)
  15. struct sock_xprt {
  16. struct rpc_xprt xprt;
  17. /*
  18. * Network layer
  19. */
  20. struct socket * sock;
  21. struct sock * inet;
  22. struct file * file;
  23. /*
  24. * State of TCP reply receive
  25. */
  26. struct {
  27. struct {
  28. __be32 fraghdr,
  29. xid,
  30. calldir;
  31. } __attribute__((packed));
  32. u32 offset,
  33. len;
  34. unsigned long copied;
  35. } recv;
  36. /*
  37. * State of TCP transmit queue
  38. */
  39. struct {
  40. u32 offset;
  41. } xmit;
  42. /*
  43. * Connection of transports
  44. */
  45. unsigned long sock_state;
  46. struct delayed_work connect_worker;
  47. struct work_struct error_worker;
  48. struct work_struct recv_worker;
  49. struct mutex recv_mutex;
  50. struct sockaddr_storage srcaddr;
  51. unsigned short srcport;
  52. int xprt_err;
  53. /*
  54. * UDP socket buffer size parameters
  55. */
  56. size_t rcvsize,
  57. sndsize;
  58. struct rpc_timeout tcp_timeout;
  59. /*
  60. * Saved socket callback addresses
  61. */
  62. void (*old_data_ready)(struct sock *);
  63. void (*old_state_change)(struct sock *);
  64. void (*old_write_space)(struct sock *);
  65. void (*old_error_report)(struct sock *);
  66. };
  67. /*
  68. * TCP RPC flags
  69. */
  70. #define XPRT_SOCK_CONNECTING 1U
  71. #define XPRT_SOCK_DATA_READY (2)
  72. #define XPRT_SOCK_UPD_TIMEOUT (3)
  73. #define XPRT_SOCK_WAKE_ERROR (4)
  74. #define XPRT_SOCK_WAKE_WRITE (5)
  75. #define XPRT_SOCK_WAKE_PENDING (6)
  76. #define XPRT_SOCK_WAKE_DISCONNECT (7)
  77. #define XPRT_SOCK_CONNECT_SENT (8)
  78. #define XPRT_SOCK_NOSPACE (9)
  79. #endif /* _LINUX_SUNRPC_XPRTSOCK_H */