| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  |