ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / arch / sparc64 / solaris / socksys.h
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