PageRenderTime 41ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/bsd/sys/sys/sockstate.h

https://gitlab.com/jforge/osv
C Header | 88 lines | 27 code | 7 blank | 54 comment | 0 complexity | e66ace0285c5c3df8ca4ca848748e84d MD5 | raw file
Possible License(s): BSD-3-Clause, 0BSD, MPL-2.0-no-copyleft-exception
  1. /*-
  2. * Copyright (c) 1982, 1986, 1990, 1993
  3. * The Regents of the University of California. All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions
  7. * are met:
  8. * 1. Redistributions of source code must retain the above copyright
  9. * notice, this list of conditions and the following disclaimer.
  10. * 2. Redistributions in binary form must reproduce the above copyright
  11. * notice, this list of conditions and the following disclaimer in the
  12. * documentation and/or other materials provided with the distribution.
  13. * 4. Neither the name of the University nor the names of its contributors
  14. * may be used to endorse or promote products derived from this software
  15. * without specific prior written permission.
  16. *
  17. * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  18. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20. * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  21. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27. * SUCH DAMAGE.
  28. *
  29. * @(#)socketvar.h 8.3 (Berkeley) 2/19/95
  30. *
  31. * $FreeBSD$
  32. */
  33. #ifndef _SYS_SOCKTATE_H_
  34. #define _SYS_SOCKTATE_H_
  35. #include <sys/cdefs.h>
  36. /*
  37. * Socket state bits.
  38. *
  39. * Historically, this bits were all kept in the so_state field. For
  40. * locking reasons, they are now in multiple fields, as they are
  41. * locked differently. so_state maintains basic socket state protected
  42. * by the socket lock. so_qstate holds information about the socket
  43. * accept queues. Each socket buffer also has a state field holding
  44. * information relevant to that socket buffer (can't send, rcv). Many
  45. * fields will be read without locks to improve performance and avoid
  46. * lock order issues. However, this approach must be used with caution.
  47. */
  48. #define SS_NOFDREF 0x0001 /* no file table ref any more */
  49. #define SS_ISCONNECTED 0x0002 /* socket connected to a peer */
  50. #define SS_ISCONNECTING 0x0004 /* in process of connecting to peer */
  51. #define SS_ISDISCONNECTING 0x0008 /* in process of disconnecting */
  52. #define SS_NBIO 0x0100 /* non-blocking ops */
  53. #define SS_ASYNC 0x0200 /* async i/o notify */
  54. #define SS_ISCONFIRMING 0x0400 /* deciding to accept connection req */
  55. #define SS_ISDISCONNECTED 0x2000 /* socket disconnected from peer */
  56. /*
  57. * Protocols can mark a socket as SS_PROTOREF to indicate that, following
  58. * pru_detach, they still want the socket to persist, and will free it
  59. * themselves when they are done. Protocols should only ever call sofree()
  60. * following setting this flag in pru_detach(), and never otherwise, as
  61. * sofree() bypasses socket reference counting.
  62. */
  63. #define SS_PROTOREF 0x4000 /* strong protocol reference */
  64. /*
  65. * Socket state bits now stored in the socket buffer state field.
  66. */
  67. #define SBS_CANTSENDMORE 0x0010 /* can't send more data to peer */
  68. #define SBS_CANTRCVMORE 0x0020 /* can't receive more data from peer */
  69. #define SBS_RCVATMARK 0x0040 /* at mark on input */
  70. struct socket;
  71. __BEGIN_DECLS
  72. void soisconnected(struct socket *so);
  73. void soisconnecting(struct socket *so);
  74. void soisdisconnected(struct socket *so);
  75. void soisdisconnecting(struct socket *so);
  76. void socantrcvmore(struct socket *so);
  77. void socantrcvmore_locked(struct socket *so);
  78. void socantsendmore(struct socket *so);
  79. void socantsendmore_locked(struct socket *so);
  80. __END_DECLS
  81. #endif /* _SYS_SOCKTATE_H_ */