]>
Commit | Line | Data |
---|---|---|
1c79356b | 1 | /* |
5d5c5d0d A |
2 | * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. |
3 | * | |
6601e61a | 4 | * @APPLE_LICENSE_HEADER_START@ |
1c79356b | 5 | * |
6601e61a A |
6 | * The contents of this file constitute Original Code as defined in and |
7 | * are subject to the Apple Public Source License Version 1.1 (the | |
8 | * "License"). You may not use this file except in compliance with the | |
9 | * License. Please obtain a copy of the License at | |
10 | * http://www.apple.com/publicsource and read it before using this file. | |
8f6c56a5 | 11 | * |
6601e61a A |
12 | * This Original Code and all software distributed under the License are |
13 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
8f6c56a5 A |
14 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, |
15 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
6601e61a A |
16 | * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the |
17 | * License for the specific language governing rights and limitations | |
18 | * under the License. | |
8f6c56a5 | 19 | * |
6601e61a | 20 | * @APPLE_LICENSE_HEADER_END@ |
1c79356b A |
21 | */ |
22 | /* | |
23 | * | |
24 | * ORIGINS: 82 | |
25 | * | |
26 | * (C) COPYRIGHT Apple Computer, Inc. 1992-1996 | |
27 | * All Rights Reserved | |
28 | * | |
29 | */ | |
30 | ||
31 | #ifndef _NETAT_ADSP_H_ | |
32 | #define _NETAT_ADSP_H_ | |
9bccf70c | 33 | #include <sys/appleapiopts.h> |
91447636 A |
34 | #include <netat/appletalk.h> |
35 | ||
36 | #ifdef __APPLE_API_OBSOLETE | |
37 | ||
1c79356b A |
38 | /* ADSP flags for read, write, and close routines */ |
39 | ||
40 | #define ADSP_EOM 0x01 /* Sent or received EOM with data */ | |
41 | #define ADSP_FLUSH 0x02 /* Send all data in send queue */ | |
42 | #define ADSP_WAIT 0x04 /* Graceful close, wait 'til snd queue emptys */ | |
43 | ||
44 | ||
45 | /* ADSP events to be fielded by the user event handler */ | |
46 | ||
47 | #define ADSP_EV_ATTN 0x02 /* Attention data recvd. */ | |
48 | #define ADSP_EV_RESET 0x04 /* Forward reset recvd. */ | |
49 | #define ADSP_EV_CLOSE 0x08 /* Close advice recvd. */ | |
50 | ||
51 | ||
52 | /* ADSP packet control codes */ | |
53 | ||
54 | #define ADSP_PROBEACK 0 /* Probe or acknowledgement */ | |
55 | #define ADSP_OPENCONREQUEST 1 /* Open connection request */ | |
56 | #define ADSP_OPENCONACK 2 /* Open connection acknowledgement */ | |
57 | #define ADSP_OPENCONREQACK 3 /* Open connection request + ack */ | |
58 | #define ADSP_OPENCONDENIAL 4 /* Open connection denial */ | |
59 | #define ADSP_CLOSEADVICE 5 /* Close connection advice */ | |
60 | #define ADSP_FORWARDRESET 6 /* Forward reset */ | |
61 | #define ADSP_FORWARDRESETACK 7 /* Forward reset acknowledgement */ | |
62 | #define ADSP_RETRANSADVICE 8 /* Retransmit advice */ | |
63 | ||
64 | ||
65 | /* Miscellaneous constants */ | |
66 | ||
67 | #define ADSP_MAXDATA 572 /* Maximum data bytes in ADSP packet */ | |
68 | #define ADSP_MAXATTNDATA 570 /* Maximum data bytes in attn msg */ | |
69 | #define ADSP_DDPTYPE 7 /* DDP protocol type for ADSP */ | |
70 | #define ADSP_VERSION 0x0100 /* ADSP version */ | |
71 | ||
72 | ||
73 | /* Some additional ADSP error codes */ | |
74 | ||
75 | #define EQUEWASEMP 10001 | |
76 | #define EONEENTQUE 10002 | |
77 | #define EQUEBLOCKED 10003 | |
78 | #define EFWDRESET 10004 | |
79 | #define EENDOFMSG 10005 | |
80 | #define EADDRNOTINUSE 10006 | |
81 | ||
82 | ||
83 | ||
84 | /* Tuning Parameter Block */ | |
85 | ||
86 | struct tpb { | |
87 | unsigned Valid : 1; /* Tuning parameter block is valid */ | |
88 | unsigned short TransThresh; /* Transmit threshold */ | |
89 | unsigned TransTimerIntrvl; /* Transmit timer interval */ | |
90 | unsigned short SndWdwCloThresh; /* Send window closing threshold */ | |
91 | unsigned SndWdwCloIntrvl; /* Send window closed interval */ | |
92 | unsigned char SndWdwCloBckoff; /* Send window closed backoff rate */ | |
93 | unsigned ReTransIntrvl; /* Retransmit interval */ | |
94 | unsigned char ReTransBckoff; /* Retransmit backoff rate */ | |
95 | unsigned RestartIntrvl; /* Restart sender interval */ | |
96 | unsigned char RestartBckoff; /* Restart sender backoff rate */ | |
97 | unsigned SndQBufSize; /* Send queue buffer size */ | |
98 | unsigned short RcvQMaxSize; /* Maximum size of the receive queue */ | |
99 | unsigned short RcvQCpyThresh; /* Receive queue copy threshold */ | |
100 | unsigned FwdRstIntrvl; /* Forward reset interval */ | |
101 | unsigned char FwdRstBckoff; /* Forward reset backoff rate */ | |
102 | unsigned AttnIntrvl; /* Retransmit attn msg interval */ | |
103 | unsigned char AttnBckoff; /* Retransmit attn msg backoff rate */ | |
104 | unsigned OpenIntrvl; /* Retransmit open request interval */ | |
105 | unsigned char OpenMaxRetry; /* Open request maximum retrys */ | |
106 | unsigned char RetransThresh; /* Retransmit advice threshold */ | |
107 | unsigned ProbeRetryMax; /* Maximum number of probes */ | |
108 | unsigned SndByteCntMax; /* Maximum number bytes in send queue */ | |
109 | }; | |
110 | ||
111 | ||
112 | /* Tuning Parameter Tags */ | |
113 | ||
114 | #define ADSP_TRANSTHRESH 1 /* Transmit threshold */ | |
115 | #define ADSP_TRANSTIMERINTRVL 2 /* Transmit timer interval */ | |
116 | #define ADSP_SNDWDWCLOTHRESH 3 /* Send window closing threshold */ | |
117 | #define ADSP_SNDWDWCLOINTRVL 4 /* Send window closed interval */ | |
118 | #define ADSP_SNDWDWCLOBCKOFF 5 /* Send window closed backoff rate */ | |
119 | #define ADSP_RETRANSINTRVL 6 /* Retransmit interval */ | |
120 | #define ADSP_RETRANSBCKOFF 7 /* Retransmit backoff rate */ | |
121 | #define ADSP_RESTARTINTRVL 8 /* Restart sender interval */ | |
122 | #define ADSP_RESTARTBCKOFF 9 /* Restart sender backoff rate */ | |
123 | #define ADSP_SNDQBUFSIZE 10 /* Send queue buffer size */ | |
124 | #define ADSP_RCVQMAXSIZE 11 /* Receive queue maximum size */ | |
125 | #define ADSP_RCVQCPYTHRESH 12 /* Receive queue copy threshold */ | |
126 | #define ADSP_FWDRSTINTRVL 13 /* Forward reset retransmit interval */ | |
127 | #define ADSP_FWDRSTBCKOFF 14 /* Forward reset backoff rate */ | |
128 | #define ADSP_ATTNINTRVL 15 /* Rexmit attention message interval */ | |
129 | #define ADSP_ATTNBCKOFF 16 /* Attention message backoff rate */ | |
130 | #define ADSP_OPENINTRVL 17 /* Retransmit open request interval */ | |
131 | #define ADSP_OPENMAXRETRY 18 /* Open request max retrys */ | |
132 | #define ADSP_RETRANSTHRESH 19 /* Retransmit advice threshold */ | |
133 | #define ADSP_PROBERETRYMAX 20 | |
134 | #define ADSP_SNDBYTECNTMAX 21 | |
135 | ||
136 | #define TuneParamCnt 21 /* The number of tuning parameters */ | |
137 | ||
138 | /* Connection Status Tags */ | |
139 | ||
140 | #define ADSP_STATE 1 /* The connection state */ | |
141 | #define ADSP_SNDSEQ 2 /* Send sequence number */ | |
142 | #define ADSP_FIRSTRTMTSEQ 3 /* First retransmit sequence number */ | |
143 | #define ADSP_SNDWDWSEQ 4 /* Send window sequence number */ | |
144 | #define ADSP_RCVSEQ 5 /* Receive sequence number */ | |
145 | #define ADSP_ATTNSNDSEQ 6 /* Attn msg send sequence number */ | |
146 | #define ADSP_ATTNRCVSEQ 7 /* Attn msg receive sequence number */ | |
147 | #define ADSP_RCVWDW 8 /* Receive window size */ | |
148 | #define ADSP_ATTNMSGWAIT 9 /* Attn msg is in the receive queue */ | |
149 | ||
150 | #define ConStatTagCnt 9 /* Number of connection status tags */ | |
151 | ||
152 | #define ADSP_INVALID 0 /* Invalid connection control block */ | |
153 | #define ADSP_LISTEN 1 /* Waiting for an open con req */ | |
154 | #define ADSP_OPENING 2 /* No state info, sending open req */ | |
155 | #define ADSP_MYHALFOPEN 4 /* His state info, sending open req */ | |
156 | #define ADSP_HISHALFOPEN 8 /* He has my state info, sndng op req */ | |
157 | #define ADSP_OPEN 16 /* Connection is operational */ | |
158 | #define ADSP_TORNDOWN 32 /* Probe timer has expired 4 times */ | |
159 | #define ADSP_CLOSING 64 /* Client close, emptying send Queues */ | |
160 | #define ADSP_CLOSED 128 /* Close adv rcvd, emptying rcv Queues */ | |
161 | ||
162 | /* Management Counters */ | |
163 | ||
164 | #define ADSP_ATTNACKRCVD 1 /* Attn msg ack received */ | |
165 | #define ADSP_ATTNACKACPTD 2 /* Attn msg ack accepted */ | |
166 | #define ADSP_PROBERCVD 3 /* Probe received */ | |
167 | #define ADSP_ACKRCVD 4 /* Explicit ack msg received */ | |
168 | #define ADSP_FWDRSTRCVD 5 /* Forward reset received */ | |
169 | #define ADSP_FWDRSTACPTD 6 /* Forward reset accepted */ | |
170 | #define ADSP_FWDRSTACKRCVD 7 /* Forward reset ack received */ | |
171 | #define ADSP_FWDRSTACKACPTD 8 /* Forward reset ack accepted */ | |
172 | #define ADSP_ATTNRCVD 9 /* Attn msg received */ | |
173 | #define ADSP_ATTNACPTD 10 /* Attn msg accepted */ | |
174 | #define ADSP_DATARCVD 11 /* Data msg received */ | |
175 | #define ADSP_DATAACPTD 12 /* Data msg Accepted */ | |
176 | #define ADSP_ACKFIELDCHKD 13 /* Ack field checked */ | |
177 | #define ADSP_ACKNRSFIELDACPTD 14 /* Next receive seq field accepted */ | |
178 | #define ADSP_ACKSWSFIELDACPTD 15 /* Send window seq field accepted */ | |
179 | #define ADSP_ACKREQSTD 16 /* Ack requested */ | |
180 | #define ADSP_LOWMEM 17 /* Low memory */ | |
181 | #define ADSP_OPNREQEXP 18 /* Open request timer expired */ | |
182 | #define ADSP_PROBEEXP 19 /* Probe timer expired */ | |
183 | #define ADSP_FWDRSTEXP 20 /* Forward reset timer expired */ | |
184 | #define ADSP_ATTNEXP 21 /* Attention timer expired */ | |
185 | #define ADSP_TRANSEXP 22 /* Transmit timer expired */ | |
186 | #define ADSP_RETRANSEXP 23 /* Retransmit timer expired */ | |
187 | #define ADSP_SNDWDWCLOEXP 24 /* Send window closed timer expired */ | |
188 | #define ADSP_RESTARTEXP 25 /* Restart sender timer expired */ | |
189 | #define ADSP_RESLOWEXP 26 /* Resources are low timer expired */ | |
190 | #define ADSP_RETRANSRCVD 27 /* Retransmit advice received */ | |
191 | ||
192 | #define InfoTagCnt 27 | |
193 | ||
194 | /* Length of the parameter and status lists */ | |
195 | ||
196 | #define ADSP_DEFLEN (TuneParamCnt * 6 + 1) | |
197 | #define ADSP_STALEN (ConStatTagCnt * 6 + 1) | |
198 | #define ADSP_INFOLEN (InfoTagCnt * 6 + 1) | |
199 | ||
200 | /* from h/ADSP.h */ | |
201 | ||
202 | /* result codes */ | |
203 | ||
204 | #define controlErr -17 /*I/O System Errors*/ | |
205 | ||
206 | #define errENOBUFS -1281 | |
207 | #define errRefNum -1280 /* bad connection refNum */ | |
208 | #define errAborted -1279 /* control call was aborted */ | |
209 | #define errState -1278 /* bad connection state for this operation */ | |
210 | #define errOpening -1277 /* open connection request failed */ | |
211 | #define errAttention -1276 /* attention message too long */ | |
212 | #define errFwdReset -1275 /* read terminated by forward reset */ | |
213 | #define errDSPQueueSize -1274 /* DSP Read/Write Queue Too small */ | |
214 | #define errOpenDenied -1273 /* open connection request was denied */ | |
215 | ||
216 | /* control codes */ | |
217 | ||
218 | #define dspInit 255 /* create a new connection end */ | |
219 | #define dspRemove 254 /* remove a connection end */ | |
220 | #define dspOpen 253 /* open a connection */ | |
221 | #define dspClose 252 /* close a connection */ | |
222 | #define dspCLInit 251 /* create a connection listener */ | |
223 | #define dspCLRemove 250 /* remove a connection listener */ | |
224 | #define dspCLListen 249 /* post a listener request */ | |
225 | #define dspCLDeny 248 /* deny an open connection request */ | |
226 | #define dspStatus 247 /* get status of connection end */ | |
227 | #define dspRead 246 /* read data from the connection */ | |
228 | #define dspWrite 245 /* write data on the connection */ | |
229 | #define dspAttention 244 /* send an attention message */ | |
230 | #define dspOptions 243 /* set connection end options */ | |
231 | #define dspReset 242 /* forward reset the connection */ | |
232 | #define dspNewCID 241 /* generate a cid for a connection end */ | |
233 | ||
234 | ||
235 | /* connection opening modes */ | |
236 | ||
237 | #define ocRequest 1 /* request a connection with remote */ | |
238 | #define ocPassive 2 /* wait for a connection request from remote */ | |
239 | #define ocAccept 3 /* accept request as delivered by listener */ | |
240 | #define ocEstablish 4 /* consider connection to be open */ | |
241 | ||
242 | ||
243 | /* connection end states */ | |
244 | ||
245 | #define sListening 1 /* for connection listeners */ | |
246 | #define sPassive 2 /* waiting for a connection request from remote */ | |
247 | #define sOpening 3 /* requesting a connection with remote */ | |
248 | #define sOpen 4 /* connection is open */ | |
249 | #define sClosing 5 /* connection is being torn down */ | |
250 | #define sClosed 6 /* connection end state is closed */ | |
251 | ||
252 | ||
253 | ||
254 | /* client event flags */ | |
255 | ||
256 | #define eClosed 0x80 /* received connection closed advice */ | |
257 | #define eTearDown 0x40 /* connection closed due to broken connection */ | |
258 | #define eAttention 0x20 /* received attention message */ | |
259 | #define eFwdReset 0x10 /* received forward reset advice */ | |
260 | ||
261 | /* miscellaneous constants */ | |
262 | ||
263 | #define attnBufSize 570 /* size of client attention buffer */ | |
264 | #define minDSPQueueSize 100 /* Minimum size of receive or send Queue */ | |
265 | #define defaultDSPQS 16384 /* random guess */ | |
266 | #define RecvQSize defaultDSPQS | |
267 | #define SendQSize defaultDSPQS | |
268 | ||
269 | /* *** Seems to be a problem in Mac OS X too *** */ | |
270 | /* Solaris defines u as (curproc->p_user) | |
271 | #if defined(u) | |
272 | #undef u | |
273 | #endif | |
274 | */ | |
275 | ||
91447636 | 276 | typedef long (*ProcPtr)(); /* XXX */ |
1c79356b A |
277 | typedef ProcPtr *ProcHandle; |
278 | typedef char *Ptr; | |
279 | typedef Ptr *Handle; | |
280 | ||
281 | /* connection control block */ | |
282 | ||
283 | struct TRCCB { | |
284 | u_char *ccbLink; /* link to next ccb */ | |
285 | u_short refNum; /* user reference number */ | |
286 | u_short state; /* state of the connection end */ | |
287 | u_char userFlags; /* flags for unsolicited connection events */ | |
288 | u_char localSocket; /* socket number of this connection end */ | |
289 | at_inet_t remoteAddress; /* internet address of remote end */ | |
290 | u_short attnCode; /* attention code received */ | |
291 | u_short attnSize; /* size of received attention data */ | |
292 | u_char *attnPtr; /* ptr to received attention data */ | |
293 | u_char reserved[220]; /* for adsp internal use */ | |
294 | }; | |
295 | ||
296 | typedef struct TRCCB TRCCB; | |
297 | typedef TRCCB *TPCCB; | |
298 | ||
299 | /* init connection end parameters */ | |
300 | ||
301 | struct TRinitParams { | |
302 | TPCCB ccbPtr; /* pointer to connection control block */ | |
303 | ProcPtr userRoutine; /* client routine to call on event */ | |
304 | u_char *sendQueue; /* client passed send queue buffer */ | |
305 | u_char *recvQueue; /* client passed receive queue buffer */ | |
306 | u_char *attnPtr; /* client passed receive attention buffer */ | |
307 | u_short sendQSize; /* size of send queue (0..64K bytes) */ | |
308 | u_short recvQSize; /* size of receive queue (0..64K bytes) */ | |
309 | u_char localSocket; /* local socket number */ | |
310 | }; | |
311 | ||
312 | typedef struct TRinitParams TRinitParams; | |
313 | ||
314 | /* open connection parameters */ | |
315 | ||
316 | struct TRopenParams { | |
317 | u_short localCID; /* local connection id */ | |
318 | u_short remoteCID; /* remote connection id */ | |
319 | at_inet_t remoteAddress; /* address of remote end */ | |
320 | at_inet_t filterAddress; /* address filter */ | |
321 | unsigned long sendSeq; /* local send sequence number */ | |
322 | u_long recvSeq; /* receive sequence number */ | |
323 | u_long attnSendSeq; /* attention send sequence number */ | |
324 | u_long attnRecvSeq; /* attention receive sequence number */ | |
325 | u_short sendWindow; /* send window size */ | |
326 | u_char ocMode; /* open connection mode */ | |
327 | u_char ocInterval; /* open connection request retry interval */ | |
328 | u_char ocMaximum; /* open connection request retry maximum */ | |
329 | }; | |
330 | ||
331 | typedef struct TRopenParams TRopenParams; | |
332 | ||
333 | /* close connection parameters */ | |
334 | ||
335 | struct TRcloseParams { | |
336 | u_char abort; /* abort connection immediately if non-zero */ | |
337 | }; | |
338 | ||
339 | typedef struct TRcloseParams TRcloseParams; | |
340 | ||
341 | /* client status parameter block */ | |
342 | ||
343 | struct TRstatusParams { | |
344 | TPCCB ccbPtr; /* pointer to ccb */ | |
345 | u_short sendQPending; /* pending bytes in send queue */ | |
346 | u_short sendQFree; /* available buffer space in send queue */ | |
347 | u_short recvQPending; /* pending bytes in receive queue */ | |
348 | u_short recvQFree; /* available buffer space in receive queue */ | |
349 | }; | |
350 | ||
351 | typedef struct TRstatusParams TRstatusParams; | |
352 | ||
353 | /* read/write parameter block */ | |
354 | ||
355 | struct TRioParams { | |
356 | u_short reqCount; /* requested number of bytes */ | |
357 | u_short actCount; /* actual number of bytes */ | |
358 | u_char *dataPtr; /* pointer to data buffer */ | |
359 | u_char eom; /* indicates logical end of message */ | |
360 | u_char flush; /* send data now */ | |
361 | u_char dummy[2]; /*### LD */ | |
362 | }; | |
363 | ||
364 | typedef struct TRioParams TRioParams; | |
365 | ||
366 | /* attention parameter block */ | |
367 | ||
368 | struct TRattnParams { | |
369 | u_short attnCode; /* client attention code */ | |
370 | u_short attnSize; /* size of attention data */ | |
371 | u_char *attnData; /* pointer to attention data */ | |
372 | u_char attnInterval; /* retransmit timer in 10-tick intervals */ | |
373 | u_char dummy[3]; /* ### LD */ | |
374 | }; | |
375 | ||
376 | typedef struct TRattnParams TRattnParams; | |
377 | ||
378 | /* client send option parameter block */ | |
379 | ||
380 | struct TRoptionParams { | |
381 | u_short sendBlocking; /* quantum for data packets */ | |
382 | u_char sendTimer; /* send timer in 10-tick intervals */ | |
383 | u_char rtmtTimer; /* retransmit timer in 10-tick intervals */ | |
384 | u_char badSeqMax; /* threshold for sending retransmit advice */ | |
385 | u_char useCheckSum; /* use ddp packet checksum */ | |
386 | u_short filler; /* ### LD */ | |
387 | int newPID; /* ### Temp for backward compatibility 02/11/94 */ | |
388 | }; | |
389 | ||
390 | typedef struct TRoptionParams TRoptionParams; | |
391 | ||
392 | /* new cid parameters */ | |
393 | ||
394 | struct TRnewcidParams { | |
395 | u_short newcid; /* new connection id returned */ | |
396 | }; | |
397 | ||
398 | typedef struct TRnewcidParams TRnewcidParams; | |
399 | ||
400 | union adsp_command { | |
401 | TRinitParams initParams; /* dspInit, dspCLInit */ | |
402 | TRopenParams openParams; /* dspOpen, dspCLListen, dspCLDeny */ | |
403 | TRcloseParams closeParams; /* dspClose, dspRemove */ | |
404 | TRioParams ioParams; /* dspRead, dspWrite, dspAttnRead */ | |
405 | TRattnParams attnParams; /* dspAttention */ | |
406 | TRstatusParams statusParams; /* dspStatus */ | |
407 | TRoptionParams optionParams; /* dspOptions */ | |
408 | TRnewcidParams newCIDParams; /* dspNewCID */ | |
409 | }; | |
410 | ||
411 | /* ADSP CntrlParam ioQElement */ | |
412 | ||
413 | struct DSPParamBlock { | |
414 | struct QElem *qLink; | |
415 | short qType; | |
416 | short ioTrap; | |
417 | Ptr ioCmdAddr; | |
418 | ProcPtr ioCompletion; | |
419 | short ioResult; | |
420 | char *ioNamePtr; | |
421 | short ioVRefNum; | |
422 | short ioCRefNum; /* adsp driver refNum */ | |
423 | short csCode; /* adsp driver control code */ | |
424 | long qStatus; /* adsp internal use */ | |
425 | u_short ccbRefNum; /* connection end refNum */ | |
426 | union adsp_command u; | |
427 | }; | |
428 | ||
429 | typedef struct DSPParamBlock DSPParamBlock; | |
430 | typedef DSPParamBlock *DSPPBPtr; | |
431 | ||
432 | struct adspcmd { | |
433 | struct adspcmd *qLink; | |
434 | u_int ccbRefNum; | |
435 | caddr_t ioc; | |
436 | #ifdef KERNEL | |
437 | gref_t *gref; | |
438 | gbuf_t *mp; | |
439 | #else | |
440 | void *gref; | |
441 | void *mp; | |
442 | #endif | |
443 | short ioResult; | |
444 | u_short ioDirection; | |
445 | short csCode; | |
446 | u_short socket; | |
447 | union adsp_command u; | |
448 | }; | |
449 | ||
450 | /* from h/adsp_frames.h */ | |
451 | ||
452 | #ifdef NOT_USED | |
453 | /* | |
454 | * LAP Frame Information | |
455 | */ | |
456 | ||
457 | typedef struct { | |
458 | u_char lap_dest; | |
459 | u_char lap_src; | |
460 | u_char lap_type; | |
461 | u_char lap_data[1]; | |
462 | } LAP_FRAME; | |
463 | ||
464 | #define LAP_FRAME_LEN 3 | |
465 | ||
466 | #define MAX_FRAME_SIZE 603 | |
467 | ||
468 | #define LAP_DDP 0x01 | |
469 | #define LAP_DDPX 0x02 | |
470 | ||
471 | typedef struct { | |
472 | ua_short ddp_length; /* length of ddp fields */ | |
473 | u_char ddp_dest; /* destination socket */ | |
474 | u_char ddp_source; /* source socket */ | |
475 | u_char ddp_type; /* protocol type */ | |
476 | u_char ddp_data[1]; /* data field */ | |
477 | } DDP_FRAME; | |
478 | ||
479 | #define DDPS_FRAME_LEN 5 | |
d7e50217 | 480 | #endif /* NOT_USED */ |
1c79356b A |
481 | |
482 | typedef struct { | |
483 | ua_short ddpx_length; /* length and hop count */ | |
484 | ua_short ddpx_cksm; /* checksum */ | |
485 | at_net ddpx_dnet; /* destination network number */ | |
486 | at_net ddpx_snet; /* source network number */ | |
487 | u_char ddpx_dnode; /* destination node */ | |
488 | u_char ddpx_snode; /* source node */ | |
489 | u_char ddpx_dest; /* destination socket */ | |
490 | u_char ddpx_source; /* source socket */ | |
491 | u_char ddpx_type; /* protocol type */ | |
492 | u_char ddpx_data[1]; /* data field */ | |
493 | } DDPX_FRAME; | |
494 | ||
495 | #define DDPL_FRAME_LEN 13 | |
496 | ||
497 | #ifdef NOT_USED | |
498 | typedef struct { | |
499 | u_char nbp_ctrl_cnt; /* control and tuple count */ | |
500 | u_char nbp_id; /* enquiry/reply id */ | |
501 | u_char nbp_data[1]; /* tuple space */ | |
502 | } NBP_FRAME; | |
503 | ||
504 | #define NBP_TYPE_MASK 0xf0 /* mask of ctrl_cnt field */ | |
505 | #define NBP_CNT_MASK 0x0f /* mask for number of tuples */ | |
506 | #define NBP_BROADCAST 0x10 /* internet lookup */ | |
507 | #define NBP_LOOKUP 0x20 /* lookup request */ | |
508 | #define NBP_REPLY 0x30 /* response to lookup */ | |
509 | ||
510 | typedef struct { | |
511 | u_char atp_control; /* control field */ | |
512 | u_char atp_map; /* bitmap for acknowlegement */ | |
513 | ua_short atp_tid; /* transaction id */ | |
514 | union | |
515 | { | |
516 | u_char b[4]; /* user u_chars */ | |
517 | ua_long dw; | |
518 | } atp_ub; | |
519 | u_char atp_data[1]; /* data field */ | |
520 | } ATP_FRAME; | |
521 | ||
522 | #define ATP_FRAME_LEN 8 | |
523 | ||
524 | #define ATP_TREQ 0x40 /* transaction request */ | |
525 | #define ATP_TRESP 0x80 /* response packet */ | |
526 | #define ATP_TREL 0xc0 /* transaction release packet */ | |
527 | #define ATP_XO 0x20 /* exactly once flag */ | |
528 | #define ATP_EOM 0x10 /* end of message flag */ | |
529 | #define ATP_STS 0x08 /* send transaction status */ | |
530 | ||
531 | #define ATP_TYPE(x) ((x)->atp_control & 0xc0) | |
532 | ||
533 | typedef struct { | |
534 | at_net net1; | |
535 | u_char zonename[33]; | |
536 | } ZIP_1; | |
537 | ||
538 | typedef struct { | |
539 | at_net net1; | |
540 | at_net net2; | |
541 | u_char zonename[33]; | |
542 | } ZIP_2; | |
543 | ||
544 | typedef struct { | |
545 | u_char zip_command; /* zip command number */ | |
546 | u_char flags; /* Bit-mapped */ | |
547 | union | |
548 | { | |
549 | ZIP_1 o; /* Packet has one net number */ | |
550 | ZIP_2 r; /* Packet has cable range */ | |
551 | } u; | |
552 | } ZIP_FRAME; | |
553 | ||
554 | /* Flags in the ZIP GetNetInfo & NetInfoReply buffer */ | |
555 | ||
556 | #define ZIPF_BROADCAST 0x80 | |
557 | #define ZIPF_ZONE_INVALID 0x80 | |
558 | #define ZIPF_USE_BROADCAST 0x40 | |
559 | #define ZIPF_ONE_ZONE 0x20 | |
560 | ||
561 | #define ZIP_QUERY 1 /* ZIP Commands in zip frames */ | |
562 | #define ZIP_REPLY 2 | |
563 | #define ZIP_TAKEDOWN 3 | |
564 | #define ZIP_BRINGUP 4 | |
565 | #define ZIP_GETNETINFO 5 | |
566 | #define ZIP_NETINFOREPLY 6 | |
567 | #define ZIP_NOTIFY 7 | |
568 | ||
569 | #define ZIP_GETMYZONE 7 /* ZIP commands in atp user u_chars[0] */ | |
570 | #define ZIP_GETZONELIST 8 | |
571 | #define ZIP_GETLOCALZONES 9 | |
572 | #define ZIP_GETYOURZONE 10 | |
573 | ||
574 | /* | |
575 | * Response to Reponder Request type #1. | |
576 | * | |
577 | * The first 4 u_chars are actually the 4 ATP user u_chars | |
578 | * Following this structure are 4 PASCAL strings: | |
579 | * System Version String. (max 127) | |
580 | * Finder Version String. (max 127) | |
581 | * LaserWriter Version String. (max 127) | |
582 | * AppleShare Version String. (max 24) | |
583 | */ | |
584 | typedef struct | |
585 | { | |
586 | u_char UserU_Chars[2]; | |
587 | ua_short ResponderVersion; | |
588 | ua_short AtalkVersion; | |
589 | u_char ROMVersion; | |
590 | u_char SystemType; | |
591 | u_char SystemClass; | |
592 | u_char HdwrConfig; | |
593 | ua_short ROM85Version; | |
594 | u_char ResponderLevel; | |
595 | u_char ResponderLink; | |
596 | u_char data[1]; | |
597 | } RESPONDER_FRAME; | |
d7e50217 | 598 | #endif /* NOT_USED */ |
1c79356b A |
599 | |
600 | /* | |
601 | * ADSP Frame | |
602 | */ | |
603 | typedef struct { | |
604 | ua_short CID; | |
605 | ua_long pktFirstByteSeq; | |
606 | ua_long pktNextRecvSeq; | |
607 | ua_short pktRecvWdw; | |
608 | u_char descriptor; /* Bit-Mapped */ | |
609 | u_char data[1]; | |
610 | } ADSP_FRAME, *ADSP_FRAMEPtr; | |
611 | ||
612 | #define ADSP_FRAME_LEN 13 | |
613 | ||
614 | #define ADSP_CONTROL_BIT 0x80 | |
615 | #define ADSP_ACK_REQ_BIT 0x40 | |
616 | #define ADSP_EOM_BIT 0x20 | |
617 | #define ADSP_ATTENTION_BIT 0x10 | |
618 | #define ADSP_CONTROL_MASK 0x0F | |
619 | ||
620 | #define ADSP_CTL_PROBE 0x00 /* Probe or acknowledgement */ | |
621 | #define ADSP_CTL_OREQ 0x01 /* Open Connection Request */ | |
622 | #define ADSP_CTL_OACK 0x02 /* Open Request acknowledgment */ | |
623 | #define ADSP_CTL_OREQACK 0x03 /* Open Request and acknowledgement */ | |
624 | #define ADSP_CTL_ODENY 0x04 /* Open Request denial */ | |
625 | #define ADSP_CTL_CLOSE 0x05 /* Close connection advice */ | |
626 | #define ADSP_CTL_FRESET 0x06 /* Forward Reset */ | |
627 | #define ADSP_CTL_FRESET_ACK 0x07 /* Forward Reset Acknowledgement */ | |
628 | #define ADSP_CTL_RETRANSMIT 0x08 /* Retransmit advice */ | |
629 | ||
630 | typedef struct { | |
631 | ua_short version; /* Must be in network byte order */ | |
632 | ua_short dstCID; /* */ | |
633 | ua_long pktAttnRecvSeq; /* Must be in network byte order */ | |
634 | } ADSP_OPEN_DATA, *ADSP_OPEN_DATAPtr; | |
635 | ||
636 | #define ADSP_OPEN_FRAME_LEN 8 | |
637 | ||
638 | #define ADSP_MAX_DATA_LEN 572 | |
639 | ||
640 | /* from h/adsp_ioctl.h */ | |
641 | ||
642 | /* | |
643 | * Defines that correspond to atlog.h in the N & C Appletalk | |
644 | * sources. | |
645 | */ | |
646 | ||
647 | #define AT_MID_ADSP 212 | |
648 | ||
649 | /* Streams ioctl definitions */ | |
650 | ||
651 | #define ADSP_IOCTL(i) ((i>>8) == AT_MID_ADSP) | |
652 | #define ADSPATTNREAD ((AT_MID_ADSP<<8) | 254) /* read attention data */ | |
653 | #define ADSPOPEN ((AT_MID_ADSP<<8) | 253) /* open a connection */ | |
654 | #define ADSPCLOSE ((AT_MID_ADSP<<8) | 252) /* close a connection */ | |
655 | #define ADSPCLINIT ((AT_MID_ADSP<<8) | 251) /* create a conn listener */ | |
656 | #define ADSPCLREMOVE ((AT_MID_ADSP<<8) | 250) /* remove a conn listener */ | |
657 | #define ADSPCLLISTEN ((AT_MID_ADSP<<8) | 249) /* post a listener request */ | |
658 | #define ADSPCLDENY ((AT_MID_ADSP<<8) | 248) /* deny an open connection request */ | |
659 | #define ADSPSTATUS ((AT_MID_ADSP<<8) | 247) /* get status of conn end */ | |
660 | #define ADSPREAD ((AT_MID_ADSP<<8) | 246) /* read data from conn */ | |
661 | #define ADSPWRITE ((AT_MID_ADSP<<8) | 245) /* write data on the conn */ | |
662 | #define ADSPATTENTION ((AT_MID_ADSP<<8) | 244) /* send attention message */ | |
663 | #define ADSPOPTIONS ((AT_MID_ADSP<<8) | 243) /* set conn end options */ | |
664 | #define ADSPRESET ((AT_MID_ADSP<<8) | 242) /* forward reset connection */ | |
665 | #define ADSPNEWCID ((AT_MID_ADSP<<8) | 241) /* generate a cid conn end */ | |
666 | #define ADSPBINDREQ ((AT_MID_ADSP<<8) | 240) | |
667 | #define ADSPGETSOCK ((AT_MID_ADSP<<8) | 239) | |
668 | #define ADSPGETPEER ((AT_MID_ADSP<<8) | 238) | |
669 | ||
91447636 | 670 | #ifdef KERNEL_PRIVATE |
1c79356b A |
671 | |
672 | /* from h/adsp_adsp.h */ | |
673 | ||
674 | /* Definitions from strgeneric.h (on AIX?) */ | |
675 | #define STR_IGNORE 0 | |
676 | #define STR_PUTNEXT 1 | |
677 | #define STR_PUTBACK 2 | |
678 | #define STR_QTIME (HZ >> 3) | |
679 | ||
91447636 A |
680 | struct ccb; |
681 | #define CCBPtr struct ccb * | |
682 | extern int adspInit(CCBPtr sp, struct adspcmd *ap); | |
683 | extern int adspOpen(register CCBPtr sp, register struct adspcmd *pb); | |
684 | extern int adspCLListen( register CCBPtr sp, register struct adspcmd *pb); | |
685 | extern int adspClose(register CCBPtr sp, register struct adspcmd *pb); | |
686 | extern int adspCLDeny(struct adspcmd *pb, CCBPtr sp); | |
687 | extern int adspStatus(CCBPtr sp, register struct adspcmd *pb); | |
688 | extern int adspRead(register CCBPtr sp, register struct adspcmd *pb); | |
689 | extern int adspWrite(CCBPtr sp, struct adspcmd *pb); | |
690 | extern int adspAttention(register struct adspcmd *pb, register CCBPtr sp); | |
691 | extern int adspOptions(CCBPtr sp, struct adspcmd *pb); | |
692 | extern int adspReset(CCBPtr sp, struct adspcmd *pb); | |
693 | extern int adspNewCID(CCBPtr sp, struct adspcmd *pb); | |
694 | extern int adspPacket(gref_t *gref, gbuf_t *mp); | |
695 | #undef CCBPtr | |
1c79356b A |
696 | |
697 | ||
698 | struct adsp_debug { | |
699 | int ad_time; | |
700 | int ad_seq; | |
701 | int ad_caller; | |
702 | int ad_descriptor; | |
703 | int ad_bits; | |
704 | short ad_sendCnt; | |
705 | short ad_sendMax; | |
706 | int ad_maxSendSeq; | |
707 | int ad_sendWdwSeq; | |
708 | }; | |
709 | ||
91447636 A |
710 | #endif /* KERNEL_PRIVATE */ |
711 | #endif /* __APPLE_API_OBSOLETE */ | |
1c79356b | 712 | #endif /* _NETAT_ADSP_H_ */ |