/* $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