1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31#ifndef _NETAT_ADSP_H_
32#define _NETAT_ADSP_H_
33#include <sys/appleapiopts.h>
34#include <netat/appletalk.h>
35
36#ifdef __APPLE_API_OBSOLETE
37
38
39
40#define ADSP_EOM 0x01
41#define ADSP_FLUSH 0x02
42#define ADSP_WAIT 0x04
43
44
45
46
47#define ADSP_EV_ATTN 0x02
48#define ADSP_EV_RESET 0x04
49#define ADSP_EV_CLOSE 0x08
50
51
52
53
54#define ADSP_PROBEACK 0
55#define ADSP_OPENCONREQUEST 1
56#define ADSP_OPENCONACK 2
57#define ADSP_OPENCONREQACK 3
58#define ADSP_OPENCONDENIAL 4
59#define ADSP_CLOSEADVICE 5
60#define ADSP_FORWARDRESET 6
61#define ADSP_FORWARDRESETACK 7
62#define ADSP_RETRANSADVICE 8
63
64
65
66
67#define ADSP_MAXDATA 572
68#define ADSP_MAXATTNDATA 570
69#define ADSP_DDPTYPE 7
70#define ADSP_VERSION 0x0100
71
72
73
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
85
86struct tpb {
87 unsigned Valid : 1;
88 unsigned short TransThresh;
89 unsigned TransTimerIntrvl;
90 unsigned short SndWdwCloThresh;
91 unsigned SndWdwCloIntrvl;
92 unsigned char SndWdwCloBckoff;
93 unsigned ReTransIntrvl;
94 unsigned char ReTransBckoff;
95 unsigned RestartIntrvl;
96 unsigned char RestartBckoff;
97 unsigned SndQBufSize;
98 unsigned short RcvQMaxSize;
99 unsigned short RcvQCpyThresh;
100 unsigned FwdRstIntrvl;
101 unsigned char FwdRstBckoff;
102 unsigned AttnIntrvl;
103 unsigned char AttnBckoff;
104 unsigned OpenIntrvl;
105 unsigned char OpenMaxRetry;
106 unsigned char RetransThresh;
107 unsigned ProbeRetryMax;
108 unsigned SndByteCntMax;
109};
110
111
112
113
114#define ADSP_TRANSTHRESH 1
115#define ADSP_TRANSTIMERINTRVL 2
116#define ADSP_SNDWDWCLOTHRESH 3
117#define ADSP_SNDWDWCLOINTRVL 4
118#define ADSP_SNDWDWCLOBCKOFF 5
119#define ADSP_RETRANSINTRVL 6
120#define ADSP_RETRANSBCKOFF 7
121#define ADSP_RESTARTINTRVL 8
122#define ADSP_RESTARTBCKOFF 9
123#define ADSP_SNDQBUFSIZE 10
124#define ADSP_RCVQMAXSIZE 11
125#define ADSP_RCVQCPYTHRESH 12
126#define ADSP_FWDRSTINTRVL 13
127#define ADSP_FWDRSTBCKOFF 14
128#define ADSP_ATTNINTRVL 15
129#define ADSP_ATTNBCKOFF 16
130#define ADSP_OPENINTRVL 17
131#define ADSP_OPENMAXRETRY 18
132#define ADSP_RETRANSTHRESH 19
133#define ADSP_PROBERETRYMAX 20
134#define ADSP_SNDBYTECNTMAX 21
135
136#define TuneParamCnt 21
137
138
139
140#define ADSP_STATE 1
141#define ADSP_SNDSEQ 2
142#define ADSP_FIRSTRTMTSEQ 3
143#define ADSP_SNDWDWSEQ 4
144#define ADSP_RCVSEQ 5
145#define ADSP_ATTNSNDSEQ 6
146#define ADSP_ATTNRCVSEQ 7
147#define ADSP_RCVWDW 8
148#define ADSP_ATTNMSGWAIT 9
149
150#define ConStatTagCnt 9
151
152#define ADSP_INVALID 0
153#define ADSP_LISTEN 1
154#define ADSP_OPENING 2
155#define ADSP_MYHALFOPEN 4
156#define ADSP_HISHALFOPEN 8
157#define ADSP_OPEN 16
158#define ADSP_TORNDOWN 32
159#define ADSP_CLOSING 64
160#define ADSP_CLOSED 128
161
162
163
164#define ADSP_ATTNACKRCVD 1
165#define ADSP_ATTNACKACPTD 2
166#define ADSP_PROBERCVD 3
167#define ADSP_ACKRCVD 4
168#define ADSP_FWDRSTRCVD 5
169#define ADSP_FWDRSTACPTD 6
170#define ADSP_FWDRSTACKRCVD 7
171#define ADSP_FWDRSTACKACPTD 8
172#define ADSP_ATTNRCVD 9
173#define ADSP_ATTNACPTD 10
174#define ADSP_DATARCVD 11
175#define ADSP_DATAACPTD 12
176#define ADSP_ACKFIELDCHKD 13
177#define ADSP_ACKNRSFIELDACPTD 14
178#define ADSP_ACKSWSFIELDACPTD 15
179#define ADSP_ACKREQSTD 16
180#define ADSP_LOWMEM 17
181#define ADSP_OPNREQEXP 18
182#define ADSP_PROBEEXP 19
183#define ADSP_FWDRSTEXP 20
184#define ADSP_ATTNEXP 21
185#define ADSP_TRANSEXP 22
186#define ADSP_RETRANSEXP 23
187#define ADSP_SNDWDWCLOEXP 24
188#define ADSP_RESTARTEXP 25
189#define ADSP_RESLOWEXP 26
190#define ADSP_RETRANSRCVD 27
191
192#define InfoTagCnt 27
193
194
195
196#define ADSP_DEFLEN (TuneParamCnt * 6 + 1)
197#define ADSP_STALEN (ConStatTagCnt * 6 + 1)
198#define ADSP_INFOLEN (InfoTagCnt * 6 + 1)
199
200
201
202
203
204#define controlErr -17
205
206#define errENOBUFS -1281
207#define errRefNum -1280
208#define errAborted -1279
209#define errState -1278
210#define errOpening -1277
211#define errAttention -1276
212#define errFwdReset -1275
213#define errDSPQueueSize -1274
214#define errOpenDenied -1273
215
216
217
218#define dspInit 255
219#define dspRemove 254
220#define dspOpen 253
221#define dspClose 252
222#define dspCLInit 251
223#define dspCLRemove 250
224#define dspCLListen 249
225#define dspCLDeny 248
226#define dspStatus 247
227#define dspRead 246
228#define dspWrite 245
229#define dspAttention 244
230#define dspOptions 243
231#define dspReset 242
232#define dspNewCID 241
233
234
235
236
237#define ocRequest 1
238#define ocPassive 2
239#define ocAccept 3
240#define ocEstablish 4
241
242
243
244
245#define sListening 1
246#define sPassive 2
247#define sOpening 3
248#define sOpen 4
249#define sClosing 5
250#define sClosed 6
251
252
253
254
255
256#define eClosed 0x80
257#define eTearDown 0x40
258#define eAttention 0x20
259#define eFwdReset 0x10
260
261
262
263#define attnBufSize 570
264#define minDSPQueueSize 100
265#define defaultDSPQS 16384
266#define RecvQSize defaultDSPQS
267#define SendQSize defaultDSPQS
268
269
270
271
272
273
274
275
276typedef long (*ProcPtr)();
277typedef ProcPtr *ProcHandle;
278typedef char *Ptr;
279typedef Ptr *Handle;
280
281
282
283struct TRCCB {
284 u_char *ccbLink;
285 u_short refNum;
286 u_short state;
287 u_char userFlags;
288 u_char localSocket;
289 at_inet_t remoteAddress;
290 u_short attnCode;
291 u_short attnSize;
292 u_char *attnPtr;
293 u_char reserved[220];
294};
295
296typedef struct TRCCB TRCCB;
297typedef TRCCB *TPCCB;
298
299
300
301struct TRinitParams {
302 TPCCB ccbPtr;
303 ProcPtr userRoutine;
304 u_char *sendQueue;
305 u_char *recvQueue;
306 u_char *attnPtr;
307 u_short sendQSize;
308 u_short recvQSize;
309 u_char localSocket;
310};
311
312typedef struct TRinitParams TRinitParams;
313
314
315
316struct TRopenParams {
317 u_short localCID;
318 u_short remoteCID;
319 at_inet_t remoteAddress;
320 at_inet_t filterAddress;
321 unsigned long sendSeq;
322 u_long recvSeq;
323 u_long attnSendSeq;
324 u_long attnRecvSeq;
325 u_short sendWindow;
326 u_char ocMode;
327 u_char ocInterval;
328 u_char ocMaximum;
329};
330
331typedef struct TRopenParams TRopenParams;
332
333
334
335struct TRcloseParams {
336 u_char abort;
337};
338
339typedef struct TRcloseParams TRcloseParams;
340
341
342
343struct TRstatusParams {
344 TPCCB ccbPtr;
345 u_short sendQPending;
346 u_short sendQFree;
347 u_short recvQPending;
348 u_short recvQFree;
349};
350
351typedef struct TRstatusParams TRstatusParams;
352
353
354
355struct TRioParams {
356 u_short reqCount;
357 u_short actCount;
358 u_char *dataPtr;
359 u_char eom;
360 u_char flush;
361 u_char dummy[2];
362};
363
364typedef struct TRioParams TRioParams;
365
366
367
368struct TRattnParams {
369 u_short attnCode;
370 u_short attnSize;
371 u_char *attnData;
372 u_char attnInterval;
373 u_char dummy[3];
374};
375
376typedef struct TRattnParams TRattnParams;
377
378
379
380struct TRoptionParams {
381 u_short sendBlocking;
382 u_char sendTimer;
383 u_char rtmtTimer;
384 u_char badSeqMax;
385 u_char useCheckSum;
386 u_short filler;
387 int newPID;
388};
389
390typedef struct TRoptionParams TRoptionParams;
391
392
393
394struct TRnewcidParams {
395 u_short newcid;
396};
397
398typedef struct TRnewcidParams TRnewcidParams;
399
400union adsp_command {
401 TRinitParams initParams;
402 TRopenParams openParams;
403 TRcloseParams closeParams;
404 TRioParams ioParams;
405 TRattnParams attnParams;
406 TRstatusParams statusParams;
407 TRoptionParams optionParams;
408 TRnewcidParams newCIDParams;
409};
410
411
412
413struct 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;
423 short csCode;
424 long qStatus;
425 u_short ccbRefNum;
426 union adsp_command u;
427};
428
429typedef struct DSPParamBlock DSPParamBlock;
430typedef DSPParamBlock *DSPPBPtr;
431
432struct 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
451
452#ifdef NOT_USED
453
454
455
456
457typedef 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
471typedef struct {
472 ua_short ddp_length;
473 u_char ddp_dest;
474 u_char ddp_source;
475 u_char ddp_type;
476 u_char ddp_data[1];
477} DDP_FRAME;
478
479#define DDPS_FRAME_LEN 5
480#endif
481
482typedef struct {
483 ua_short ddpx_length;
484 ua_short ddpx_cksm;
485 at_net ddpx_dnet;
486 at_net ddpx_snet;
487 u_char ddpx_dnode;
488 u_char ddpx_snode;
489 u_char ddpx_dest;
490 u_char ddpx_source;
491 u_char ddpx_type;
492 u_char ddpx_data[1];
493} DDPX_FRAME;
494
495#define DDPL_FRAME_LEN 13
496
497#ifdef NOT_USED
498typedef struct {
499 u_char nbp_ctrl_cnt;
500 u_char nbp_id;
501 u_char nbp_data[1];
502} NBP_FRAME;
503
504#define NBP_TYPE_MASK 0xf0
505#define NBP_CNT_MASK 0x0f
506#define NBP_BROADCAST 0x10
507#define NBP_LOOKUP 0x20
508#define NBP_REPLY 0x30
509
510typedef struct {
511 u_char atp_control;
512 u_char atp_map;
513 ua_short atp_tid;
514 union
515 {
516 u_char b[4];
517 ua_long dw;
518 } atp_ub;
519 u_char atp_data[1];
520} ATP_FRAME;
521
522#define ATP_FRAME_LEN 8
523
524#define ATP_TREQ 0x40
525#define ATP_TRESP 0x80
526#define ATP_TREL 0xc0
527#define ATP_XO 0x20
528#define ATP_EOM 0x10
529#define ATP_STS 0x08
530
531#define ATP_TYPE(x) ((x)->atp_control & 0xc0)
532
533typedef struct {
534 at_net net1;
535 u_char zonename[33];
536} ZIP_1;
537
538typedef struct {
539 at_net net1;
540 at_net net2;
541 u_char zonename[33];
542} ZIP_2;
543
544typedef struct {
545 u_char zip_command;
546 u_char flags;
547 union
548 {
549 ZIP_1 o;
550 ZIP_2 r;
551 } u;
552} ZIP_FRAME;
553
554
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
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
570#define ZIP_GETZONELIST 8
571#define ZIP_GETLOCALZONES 9
572#define ZIP_GETYOURZONE 10
573
574
575
576
577
578
579
580
581
582
583
584typedef 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;
598#endif
599
600
601
602
603typedef struct {
604 ua_short CID;
605 ua_long pktFirstByteSeq;
606 ua_long pktNextRecvSeq;
607 ua_short pktRecvWdw;
608 u_char descriptor;
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
621#define ADSP_CTL_OREQ 0x01
622#define ADSP_CTL_OACK 0x02
623#define ADSP_CTL_OREQACK 0x03
624#define ADSP_CTL_ODENY 0x04
625#define ADSP_CTL_CLOSE 0x05
626#define ADSP_CTL_FRESET 0x06
627#define ADSP_CTL_FRESET_ACK 0x07
628#define ADSP_CTL_RETRANSMIT 0x08
629
630typedef struct {
631 ua_short version;
632 ua_short dstCID;
633 ua_long pktAttnRecvSeq;
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
641
642
643
644
645
646
647#define AT_MID_ADSP 212
648
649
650
651#define ADSP_IOCTL(i) ((i>>8) == AT_MID_ADSP)
652#define ADSPATTNREAD ((AT_MID_ADSP<<8) | 254)
653#define ADSPOPEN ((AT_MID_ADSP<<8) | 253)
654#define ADSPCLOSE ((AT_MID_ADSP<<8) | 252)
655#define ADSPCLINIT ((AT_MID_ADSP<<8) | 251)
656#define ADSPCLREMOVE ((AT_MID_ADSP<<8) | 250)
657#define ADSPCLLISTEN ((AT_MID_ADSP<<8) | 249)
658#define ADSPCLDENY ((AT_MID_ADSP<<8) | 248)
659#define ADSPSTATUS ((AT_MID_ADSP<<8) | 247)
660#define ADSPREAD ((AT_MID_ADSP<<8) | 246)
661#define ADSPWRITE ((AT_MID_ADSP<<8) | 245)
662#define ADSPATTENTION ((AT_MID_ADSP<<8) | 244)
663#define ADSPOPTIONS ((AT_MID_ADSP<<8) | 243)
664#define ADSPRESET ((AT_MID_ADSP<<8) | 242)
665#define ADSPNEWCID ((AT_MID_ADSP<<8) | 241)
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
670#ifdef KERNEL_PRIVATE
671
672
673
674
675#define STR_IGNORE 0
676#define STR_PUTNEXT 1
677#define STR_PUTBACK 2
678#define STR_QTIME (HZ >> 3)
679
680struct ccb;
681#define CCBPtr struct ccb *
682extern int adspInit(CCBPtr sp, struct adspcmd *ap);
683extern int adspOpen(register CCBPtr sp, register struct adspcmd *pb);
684extern int adspCLListen( register CCBPtr sp, register struct adspcmd *pb);
685extern int adspClose(register CCBPtr sp, register struct adspcmd *pb);
686extern int adspCLDeny(struct adspcmd *pb, CCBPtr sp);
687extern int adspStatus(CCBPtr sp, register struct adspcmd *pb);
688extern int adspRead(register CCBPtr sp, register struct adspcmd *pb);
689extern int adspWrite(CCBPtr sp, struct adspcmd *pb);
690extern int adspAttention(register struct adspcmd *pb, register CCBPtr sp);
691extern int adspOptions(CCBPtr sp, struct adspcmd *pb);
692extern int adspReset(CCBPtr sp, struct adspcmd *pb);
693extern int adspNewCID(CCBPtr sp, struct adspcmd *pb);
694extern int adspPacket(gref_t *gref, gbuf_t *mp);
695#undef CCBPtr
696
697
698struct 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
710#endif
711#endif
712#endif
713