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