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