1/* $Id: socksys.h,v 1.1.1.1 2007/08/03 18:52:19 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 82struct 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 90struct T_bind_req { 91 s32 PRIM_type; 92 s32 ADDR_length; 93 s32 ADDR_offset; 94 u32 CONIND_number; 95}; 96 97struct 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 105struct T_optmgmt_req { 106 s32 PRIM_type; 107 s32 OPT_length; 108 s32 OPT_offset; 109 s32 MGMT_flags; 110}; 111 112struct T_bind_ack { 113 s32 PRIM_type; 114 s32 ADDR_length; 115 s32 ADDR_offset; 116 u32 CONIND_number; 117}; 118 119struct T_error_ack { 120 s32 PRIM_type; 121 s32 ERROR_prim; 122 s32 TLI_error; 123 s32 UNIX_error; 124}; 125 126struct T_ok_ack { 127 s32 PRIM_type; 128 s32 CORRECT_prim; 129}; 130 131struct 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 140struct 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 148struct T_discon_ind { 149 s32 PRIM_type; 150 s32 DISCON_reason; 151 s32 SEQ_number; 152}; 153 154struct 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 162struct T_optmgmt_ack { 163 s32 PRIM_type; 164 s32 OPT_length; 165 s32 OPT_offset; 166 s32 MGMT_flags; 167}; 168 169struct opthdr { 170 s32 level; 171 s32 name; 172 s32 len; 173 char value[0]; 174}; 175 176struct T_primsg { 177 struct T_primsg *next; 178 unsigned char pri; 179 unsigned char band; 180 int length; 181 s32 type; 182}; 183 184struct strbuf { 185 s32 maxlen; 186 s32 len; 187 u32 buf; 188} ; 189 190/* Constants used by STREAMS modules emulation code */ 191 192typedef char sol_module; 193 194#define MAX_NR_STREAM_MODULES 16 195 196/* Private data structure assigned to sockets. */ 197 198struct 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