socksys.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /* $Id: socksys.h,v 1.2 1998/03/26 08:46:07 jj Exp $
  2. * socksys.h: Definitions for STREAMS modules emulation code.
  3. *
  4. * Copyright (C) 1998 Patrik Rak (prak3264@ss1000.ms.mff.cuni.cz)
  5. */
  6. #define MSG_HIPRI 0x01
  7. #define MSG_ANY 0x02
  8. #define MSG_BAND 0x04
  9. #define MORECTL 1
  10. #define MOREDATA 2
  11. #define TBADADDR 1
  12. #define TBADOPT 2
  13. #define TACCES 3
  14. #define TBADF 4
  15. #define TNOADDR 5
  16. #define TOUTSTATE 6
  17. #define TBADSEQ 7
  18. #define TSYSERR 8
  19. #define TLOOK 9
  20. #define TBADDATA 10
  21. #define TBUFOVFLW 11
  22. #define TFLOW 12
  23. #define TNODATA 13
  24. #define TNODIS 14
  25. #define TNOUDERR 15
  26. #define TBADFLAG 16
  27. #define TNOREL 17
  28. #define TNOTSUPPORT 18
  29. #define TSTATECHNG 19
  30. #define T_CONN_REQ 0
  31. #define T_CONN_RES 1
  32. #define T_DISCON_REQ 2
  33. #define T_DATA_REQ 3
  34. #define T_EXDATA_REQ 4
  35. #define T_INFO_REQ 5
  36. #define T_BIND_REQ 6
  37. #define T_UNBIND_REQ 7
  38. #define T_UNITDATA_REQ 8
  39. #define T_OPTMGMT_REQ 9
  40. #define T_ORDREL_REQ 10
  41. #define T_CONN_IND 11
  42. #define T_CONN_CON 12
  43. #define T_DISCON_IND 13
  44. #define T_DATA_IND 14
  45. #define T_EXDATA_IND 15
  46. #define T_INFO_ACK 16
  47. #define T_BIND_ACK 17
  48. #define T_ERROR_ACK 18
  49. #define T_OK_ACK 19
  50. #define T_UNITDATA_IND 20
  51. #define T_UDERROR_IND 21
  52. #define T_OPTMGMT_ACK 22
  53. #define T_ORDREL_IND 23
  54. #define T_NEGOTIATE 0x0004
  55. #define T_FAILURE 0x0040
  56. #define TS_UNBND 0 /* unbound */
  57. #define TS_WACK_BREQ 1 /* waiting for T_BIND_REQ ack */
  58. #define TS_WACK_UREQ 2 /* waiting for T_UNBIND_REQ ack */
  59. #define TS_IDLE 3 /* idle */
  60. #define TS_WACK_OPTREQ 4 /* waiting for T_OPTMGMT_REQ ack */
  61. #define TS_WACK_CREQ 5 /* waiting for T_CONN_REQ ack */
  62. #define TS_WCON_CREQ 6 /* waiting for T_CONN_REQ confirmation */
  63. #define TS_WRES_CIND 7 /* waiting for T_CONN_IND */
  64. #define TS_WACK_CRES 8 /* waiting for T_CONN_RES ack */
  65. #define TS_DATA_XFER 9 /* data transfer */
  66. #define TS_WIND_ORDREL 10 /* releasing read but not write */
  67. #define TS_WREQ_ORDREL 11 /* wait to release write but not read */
  68. #define TS_WACK_DREQ6 12 /* waiting for T_DISCON_REQ ack */
  69. #define TS_WACK_DREQ7 13 /* waiting for T_DISCON_REQ ack */
  70. #define TS_WACK_DREQ9 14 /* waiting for T_DISCON_REQ ack */
  71. #define TS_WACK_DREQ10 15 /* waiting for T_DISCON_REQ ack */
  72. #define TS_WACK_DREQ11 16 /* waiting for T_DISCON_REQ ack */
  73. #define TS_NOSTATES 17
  74. struct T_conn_req {
  75. s32 PRIM_type;
  76. s32 DEST_length;
  77. s32 DEST_offset;
  78. s32 OPT_length;
  79. s32 OPT_offset;
  80. };
  81. struct T_bind_req {
  82. s32 PRIM_type;
  83. s32 ADDR_length;
  84. s32 ADDR_offset;
  85. u32 CONIND_number;
  86. };
  87. struct T_unitdata_req {
  88. s32 PRIM_type;
  89. s32 DEST_length;
  90. s32 DEST_offset;
  91. s32 OPT_length;
  92. s32 OPT_offset;
  93. };
  94. struct T_optmgmt_req {
  95. s32 PRIM_type;
  96. s32 OPT_length;
  97. s32 OPT_offset;
  98. s32 MGMT_flags;
  99. };
  100. struct T_bind_ack {
  101. s32 PRIM_type;
  102. s32 ADDR_length;
  103. s32 ADDR_offset;
  104. u32 CONIND_number;
  105. };
  106. struct T_error_ack {
  107. s32 PRIM_type;
  108. s32 ERROR_prim;
  109. s32 TLI_error;
  110. s32 UNIX_error;
  111. };
  112. struct T_ok_ack {
  113. s32 PRIM_type;
  114. s32 CORRECT_prim;
  115. };
  116. struct T_conn_ind {
  117. s32 PRIM_type;
  118. s32 SRC_length;
  119. s32 SRC_offset;
  120. s32 OPT_length;
  121. s32 OPT_offset;
  122. s32 SEQ_number;
  123. };
  124. struct T_conn_con {
  125. s32 PRIM_type;
  126. s32 RES_length;
  127. s32 RES_offset;
  128. s32 OPT_length;
  129. s32 OPT_offset;
  130. };
  131. struct T_discon_ind {
  132. s32 PRIM_type;
  133. s32 DISCON_reason;
  134. s32 SEQ_number;
  135. };
  136. struct T_unitdata_ind {
  137. s32 PRIM_type;
  138. s32 SRC_length;
  139. s32 SRC_offset;
  140. s32 OPT_length;
  141. s32 OPT_offset;
  142. };
  143. struct T_optmgmt_ack {
  144. s32 PRIM_type;
  145. s32 OPT_length;
  146. s32 OPT_offset;
  147. s32 MGMT_flags;
  148. };
  149. struct opthdr {
  150. s32 level;
  151. s32 name;
  152. s32 len;
  153. char value[0];
  154. };
  155. struct T_primsg {
  156. struct T_primsg *next;
  157. unsigned char pri;
  158. unsigned char band;
  159. int length;
  160. s32 type;
  161. };
  162. struct strbuf {
  163. s32 maxlen;
  164. s32 len;
  165. u32 buf;
  166. } ;
  167. /* Constants used by STREAMS modules emulation code */
  168. typedef char sol_module;
  169. #define MAX_NR_STREAM_MODULES 16
  170. /* Private data structure assigned to sockets. */
  171. struct sol_socket_struct {
  172. int magic;
  173. int modcount;
  174. sol_module module[MAX_NR_STREAM_MODULES];
  175. long state;
  176. int offset;
  177. struct T_primsg *pfirst, *plast;
  178. };
  179. #define SOLARIS_SOCKET_MAGIC 0xADDED