| /* $Id: socksys.h,v 1.2 1998/03/26 08:46:07 jj Exp $ |
| * socksys.h: Definitions for STREAMS modules emulation code. |
| * |
| * Copyright (C) 1998 Patrik Rak (prak3264@ss1000.ms.mff.cuni.cz) |
| */ |
| |
| #define MSG_HIPRI 0x01 |
| #define MSG_ANY 0x02 |
| #define MSG_BAND 0x04 |
| |
| #define MORECTL 1 |
| #define MOREDATA 2 |
| |
| #define TBADADDR 1 |
| #define TBADOPT 2 |
| #define TACCES 3 |
| #define TBADF 4 |
| #define TNOADDR 5 |
| #define TOUTSTATE 6 |
| #define TBADSEQ 7 |
| #define TSYSERR 8 |
| #define TLOOK 9 |
| #define TBADDATA 10 |
| #define TBUFOVFLW 11 |
| #define TFLOW 12 |
| #define TNODATA 13 |
| #define TNODIS 14 |
| #define TNOUDERR 15 |
| #define TBADFLAG 16 |
| #define TNOREL 17 |
| #define TNOTSUPPORT 18 |
| #define TSTATECHNG 19 |
| |
| #define T_CONN_REQ 0 |
| #define T_CONN_RES 1 |
| #define T_DISCON_REQ 2 |
| #define T_DATA_REQ 3 |
| #define T_EXDATA_REQ 4 |
| #define T_INFO_REQ 5 |
| #define T_BIND_REQ 6 |
| #define T_UNBIND_REQ 7 |
| #define T_UNITDATA_REQ 8 |
| #define T_OPTMGMT_REQ 9 |
| #define T_ORDREL_REQ 10 |
| |
| #define T_CONN_IND 11 |
| #define T_CONN_CON 12 |
| #define T_DISCON_IND 13 |
| #define T_DATA_IND 14 |
| #define T_EXDATA_IND 15 |
| #define T_INFO_ACK 16 |
| #define T_BIND_ACK 17 |
| #define T_ERROR_ACK 18 |
| #define T_OK_ACK 19 |
| #define T_UNITDATA_IND 20 |
| #define T_UDERROR_IND 21 |
| #define T_OPTMGMT_ACK 22 |
| #define T_ORDREL_IND 23 |
| |
| #define T_NEGOTIATE 0x0004 |
| #define T_FAILURE 0x0040 |
| |
| #define TS_UNBND 0 /* unbound */ |
| #define TS_WACK_BREQ 1 /* waiting for T_BIND_REQ ack */ |
| #define TS_WACK_UREQ 2 /* waiting for T_UNBIND_REQ ack */ |
| #define TS_IDLE 3 /* idle */ |
| #define TS_WACK_OPTREQ 4 /* waiting for T_OPTMGMT_REQ ack */ |
| #define TS_WACK_CREQ 5 /* waiting for T_CONN_REQ ack */ |
| #define TS_WCON_CREQ 6 /* waiting for T_CONN_REQ confirmation */ |
| #define TS_WRES_CIND 7 /* waiting for T_CONN_IND */ |
| #define TS_WACK_CRES 8 /* waiting for T_CONN_RES ack */ |
| #define TS_DATA_XFER 9 /* data transfer */ |
| #define TS_WIND_ORDREL 10 /* releasing read but not write */ |
| #define TS_WREQ_ORDREL 11 /* wait to release write but not read */ |
| #define TS_WACK_DREQ6 12 /* waiting for T_DISCON_REQ ack */ |
| #define TS_WACK_DREQ7 13 /* waiting for T_DISCON_REQ ack */ |
| #define TS_WACK_DREQ9 14 /* waiting for T_DISCON_REQ ack */ |
| #define TS_WACK_DREQ10 15 /* waiting for T_DISCON_REQ ack */ |
| #define TS_WACK_DREQ11 16 /* waiting for T_DISCON_REQ ack */ |
| #define TS_NOSTATES 17 |
| |
| struct T_conn_req { |
| s32 PRIM_type; |
| s32 DEST_length; |
| s32 DEST_offset; |
| s32 OPT_length; |
| s32 OPT_offset; |
| }; |
| |
| struct T_bind_req { |
| s32 PRIM_type; |
| s32 ADDR_length; |
| s32 ADDR_offset; |
| u32 CONIND_number; |
| }; |
| |
| struct T_unitdata_req { |
| s32 PRIM_type; |
| s32 DEST_length; |
| s32 DEST_offset; |
| s32 OPT_length; |
| s32 OPT_offset; |
| }; |
| |
| struct T_optmgmt_req { |
| s32 PRIM_type; |
| s32 OPT_length; |
| s32 OPT_offset; |
| s32 MGMT_flags; |
| }; |
| |
| struct T_bind_ack { |
| s32 PRIM_type; |
| s32 ADDR_length; |
| s32 ADDR_offset; |
| u32 CONIND_number; |
| }; |
| |
| struct T_error_ack { |
| s32 PRIM_type; |
| s32 ERROR_prim; |
| s32 TLI_error; |
| s32 UNIX_error; |
| }; |
| |
| struct T_ok_ack { |
| s32 PRIM_type; |
| s32 CORRECT_prim; |
| }; |
| |
| struct T_conn_ind { |
| s32 PRIM_type; |
| s32 SRC_length; |
| s32 SRC_offset; |
| s32 OPT_length; |
| s32 OPT_offset; |
| s32 SEQ_number; |
| }; |
| |
| struct T_conn_con { |
| s32 PRIM_type; |
| s32 RES_length; |
| s32 RES_offset; |
| s32 OPT_length; |
| s32 OPT_offset; |
| }; |
| |
| struct T_discon_ind { |
| s32 PRIM_type; |
| s32 DISCON_reason; |
| s32 SEQ_number; |
| }; |
| |
| struct T_unitdata_ind { |
| s32 PRIM_type; |
| s32 SRC_length; |
| s32 SRC_offset; |
| s32 OPT_length; |
| s32 OPT_offset; |
| }; |
| |
| struct T_optmgmt_ack { |
| s32 PRIM_type; |
| s32 OPT_length; |
| s32 OPT_offset; |
| s32 MGMT_flags; |
| }; |
| |
| struct opthdr { |
| s32 level; |
| s32 name; |
| s32 len; |
| char value[0]; |
| }; |
| |
| struct T_primsg { |
| struct T_primsg *next; |
| unsigned char pri; |
| unsigned char band; |
| int length; |
| s32 type; |
| }; |
| |
| struct strbuf { |
| s32 maxlen; |
| s32 len; |
| u32 buf; |
| } ; |
| |
| /* Constants used by STREAMS modules emulation code */ |
| |
| typedef char sol_module; |
| |
| #define MAX_NR_STREAM_MODULES 16 |
| |
| /* Private data structure assigned to sockets. */ |
| |
| struct sol_socket_struct { |
| int magic; |
| int modcount; |
| sol_module module[MAX_NR_STREAM_MODULES]; |
| long state; |
| int offset; |
| struct T_primsg *pfirst, *plast; |
| }; |
| |
| #define SOLARIS_SOCKET_MAGIC 0xADDED |
| |