#ifndef _NETAT_ADSP_H_
#define _NETAT_ADSP_H_
#include <sys/appleapiopts.h>
#include <netat/appletalk.h>
#ifdef __APPLE_API_OBSOLETE
#define ADSP_EOM 0x01
#define ADSP_FLUSH 0x02
#define ADSP_WAIT 0x04
#define ADSP_EV_ATTN 0x02
#define ADSP_EV_RESET 0x04
#define ADSP_EV_CLOSE 0x08
#define ADSP_PROBEACK 0
#define ADSP_OPENCONREQUEST 1
#define ADSP_OPENCONACK 2
#define ADSP_OPENCONREQACK 3
#define ADSP_OPENCONDENIAL 4
#define ADSP_CLOSEADVICE 5
#define ADSP_FORWARDRESET 6
#define ADSP_FORWARDRESETACK 7
#define ADSP_RETRANSADVICE 8
#define ADSP_MAXDATA 572
#define ADSP_MAXATTNDATA 570
#define ADSP_DDPTYPE 7
#define ADSP_VERSION 0x0100
#define EQUEWASEMP 10001
#define EONEENTQUE 10002
#define EQUEBLOCKED 10003
#define EFWDRESET 10004
#define EENDOFMSG 10005
#define EADDRNOTINUSE 10006
struct tpb {
unsigned Valid : 1;
unsigned short TransThresh;
unsigned TransTimerIntrvl;
unsigned short SndWdwCloThresh;
unsigned SndWdwCloIntrvl;
unsigned char SndWdwCloBckoff;
unsigned ReTransIntrvl;
unsigned char ReTransBckoff;
unsigned RestartIntrvl;
unsigned char RestartBckoff;
unsigned SndQBufSize;
unsigned short RcvQMaxSize;
unsigned short RcvQCpyThresh;
unsigned FwdRstIntrvl;
unsigned char FwdRstBckoff;
unsigned AttnIntrvl;
unsigned char AttnBckoff;
unsigned OpenIntrvl;
unsigned char OpenMaxRetry;
unsigned char RetransThresh;
unsigned ProbeRetryMax;
unsigned SndByteCntMax;
};
#define ADSP_TRANSTHRESH 1
#define ADSP_TRANSTIMERINTRVL 2
#define ADSP_SNDWDWCLOTHRESH 3
#define ADSP_SNDWDWCLOINTRVL 4
#define ADSP_SNDWDWCLOBCKOFF 5
#define ADSP_RETRANSINTRVL 6
#define ADSP_RETRANSBCKOFF 7
#define ADSP_RESTARTINTRVL 8
#define ADSP_RESTARTBCKOFF 9
#define ADSP_SNDQBUFSIZE 10
#define ADSP_RCVQMAXSIZE 11
#define ADSP_RCVQCPYTHRESH 12
#define ADSP_FWDRSTINTRVL 13
#define ADSP_FWDRSTBCKOFF 14
#define ADSP_ATTNINTRVL 15
#define ADSP_ATTNBCKOFF 16
#define ADSP_OPENINTRVL 17
#define ADSP_OPENMAXRETRY 18
#define ADSP_RETRANSTHRESH 19
#define ADSP_PROBERETRYMAX 20
#define ADSP_SNDBYTECNTMAX 21
#define TuneParamCnt 21
#define ADSP_STATE 1
#define ADSP_SNDSEQ 2
#define ADSP_FIRSTRTMTSEQ 3
#define ADSP_SNDWDWSEQ 4
#define ADSP_RCVSEQ 5
#define ADSP_ATTNSNDSEQ 6
#define ADSP_ATTNRCVSEQ 7
#define ADSP_RCVWDW 8
#define ADSP_ATTNMSGWAIT 9
#define ConStatTagCnt 9
#define ADSP_INVALID 0
#define ADSP_LISTEN 1
#define ADSP_OPENING 2
#define ADSP_MYHALFOPEN 4
#define ADSP_HISHALFOPEN 8
#define ADSP_OPEN 16
#define ADSP_TORNDOWN 32
#define ADSP_CLOSING 64
#define ADSP_CLOSED 128
#define ADSP_ATTNACKRCVD 1
#define ADSP_ATTNACKACPTD 2
#define ADSP_PROBERCVD 3
#define ADSP_ACKRCVD 4
#define ADSP_FWDRSTRCVD 5
#define ADSP_FWDRSTACPTD 6
#define ADSP_FWDRSTACKRCVD 7
#define ADSP_FWDRSTACKACPTD 8
#define ADSP_ATTNRCVD 9
#define ADSP_ATTNACPTD 10
#define ADSP_DATARCVD 11
#define ADSP_DATAACPTD 12
#define ADSP_ACKFIELDCHKD 13
#define ADSP_ACKNRSFIELDACPTD 14
#define ADSP_ACKSWSFIELDACPTD 15
#define ADSP_ACKREQSTD 16
#define ADSP_LOWMEM 17
#define ADSP_OPNREQEXP 18
#define ADSP_PROBEEXP 19
#define ADSP_FWDRSTEXP 20
#define ADSP_ATTNEXP 21
#define ADSP_TRANSEXP 22
#define ADSP_RETRANSEXP 23
#define ADSP_SNDWDWCLOEXP 24
#define ADSP_RESTARTEXP 25
#define ADSP_RESLOWEXP 26
#define ADSP_RETRANSRCVD 27
#define InfoTagCnt 27
#define ADSP_DEFLEN (TuneParamCnt * 6 + 1)
#define ADSP_STALEN (ConStatTagCnt * 6 + 1)
#define ADSP_INFOLEN (InfoTagCnt * 6 + 1)
#define controlErr -17
#define errENOBUFS -1281
#define errRefNum -1280
#define errAborted -1279
#define errState -1278
#define errOpening -1277
#define errAttention -1276
#define errFwdReset -1275
#define errDSPQueueSize -1274
#define errOpenDenied -1273
#define dspInit 255
#define dspRemove 254
#define dspOpen 253
#define dspClose 252
#define dspCLInit 251
#define dspCLRemove 250
#define dspCLListen 249
#define dspCLDeny 248
#define dspStatus 247
#define dspRead 246
#define dspWrite 245
#define dspAttention 244
#define dspOptions 243
#define dspReset 242
#define dspNewCID 241
#define ocRequest 1
#define ocPassive 2
#define ocAccept 3
#define ocEstablish 4
#define sListening 1
#define sPassive 2
#define sOpening 3
#define sOpen 4
#define sClosing 5
#define sClosed 6
#define eClosed 0x80
#define eTearDown 0x40
#define eAttention 0x20
#define eFwdReset 0x10
#define attnBufSize 570
#define minDSPQueueSize 100
#define defaultDSPQS 16384
#define RecvQSize defaultDSPQS
#define SendQSize defaultDSPQS
typedef long (*ProcPtr)();
typedef ProcPtr *ProcHandle;
typedef char *Ptr;
typedef Ptr *Handle;
struct TRCCB {
u_char *ccbLink;
u_short refNum;
u_short state;
u_char userFlags;
u_char localSocket;
at_inet_t remoteAddress;
u_short attnCode;
u_short attnSize;
u_char *attnPtr;
u_char reserved[220];
};
typedef struct TRCCB TRCCB;
typedef TRCCB *TPCCB;
struct TRinitParams {
TPCCB ccbPtr;
ProcPtr userRoutine;
u_char *sendQueue;
u_char *recvQueue;
u_char *attnPtr;
u_short sendQSize;
u_short recvQSize;
u_char localSocket;
};
typedef struct TRinitParams TRinitParams;
struct TRopenParams {
u_short localCID;
u_short remoteCID;
at_inet_t remoteAddress;
at_inet_t filterAddress;
unsigned long sendSeq;
u_long recvSeq;
u_long attnSendSeq;
u_long attnRecvSeq;
u_short sendWindow;
u_char ocMode;
u_char ocInterval;
u_char ocMaximum;
};
typedef struct TRopenParams TRopenParams;
struct TRcloseParams {
u_char abort;
};
typedef struct TRcloseParams TRcloseParams;
struct TRstatusParams {
TPCCB ccbPtr;
u_short sendQPending;
u_short sendQFree;
u_short recvQPending;
u_short recvQFree;
};
typedef struct TRstatusParams TRstatusParams;
struct TRioParams {
u_short reqCount;
u_short actCount;
u_char *dataPtr;
u_char eom;
u_char flush;
u_char dummy[2];
};
typedef struct TRioParams TRioParams;
struct TRattnParams {
u_short attnCode;
u_short attnSize;
u_char *attnData;
u_char attnInterval;
u_char dummy[3];
};
typedef struct TRattnParams TRattnParams;
struct TRoptionParams {
u_short sendBlocking;
u_char sendTimer;
u_char rtmtTimer;
u_char badSeqMax;
u_char useCheckSum;
u_short filler;
int newPID;
};
typedef struct TRoptionParams TRoptionParams;
struct TRnewcidParams {
u_short newcid;
};
typedef struct TRnewcidParams TRnewcidParams;
union adsp_command {
TRinitParams initParams;
TRopenParams openParams;
TRcloseParams closeParams;
TRioParams ioParams;
TRattnParams attnParams;
TRstatusParams statusParams;
TRoptionParams optionParams;
TRnewcidParams newCIDParams;
};
struct DSPParamBlock {
struct QElem *qLink;
short qType;
short ioTrap;
Ptr ioCmdAddr;
ProcPtr ioCompletion;
short ioResult;
char *ioNamePtr;
short ioVRefNum;
short ioCRefNum;
short csCode;
long qStatus;
u_short ccbRefNum;
union adsp_command u;
};
typedef struct DSPParamBlock DSPParamBlock;
typedef DSPParamBlock *DSPPBPtr;
struct adspcmd {
struct adspcmd *qLink;
u_int ccbRefNum;
caddr_t ioc;
#ifdef KERNEL
gref_t *gref;
gbuf_t *mp;
#else
void *gref;
void *mp;
#endif
short ioResult;
u_short ioDirection;
short csCode;
u_short socket;
union adsp_command u;
};
#ifdef NOT_USED
typedef struct {
u_char lap_dest;
u_char lap_src;
u_char lap_type;
u_char lap_data[1];
} LAP_FRAME;
#define LAP_FRAME_LEN 3
#define MAX_FRAME_SIZE 603
#define LAP_DDP 0x01
#define LAP_DDPX 0x02
typedef struct {
ua_short ddp_length;
u_char ddp_dest;
u_char ddp_source;
u_char ddp_type;
u_char ddp_data[1];
} DDP_FRAME;
#define DDPS_FRAME_LEN 5
#endif
typedef struct {
ua_short ddpx_length;
ua_short ddpx_cksm;
at_net ddpx_dnet;
at_net ddpx_snet;
u_char ddpx_dnode;
u_char ddpx_snode;
u_char ddpx_dest;
u_char ddpx_source;
u_char ddpx_type;
u_char ddpx_data[1];
} DDPX_FRAME;
#define DDPL_FRAME_LEN 13
#ifdef NOT_USED
typedef struct {
u_char nbp_ctrl_cnt;
u_char nbp_id;
u_char nbp_data[1];
} NBP_FRAME;
#define NBP_TYPE_MASK 0xf0
#define NBP_CNT_MASK 0x0f
#define NBP_BROADCAST 0x10
#define NBP_LOOKUP 0x20
#define NBP_REPLY 0x30
typedef struct {
u_char atp_control;
u_char atp_map;
ua_short atp_tid;
union
{
u_char b[4];
ua_long dw;
} atp_ub;
u_char atp_data[1];
} ATP_FRAME;
#define ATP_FRAME_LEN 8
#define ATP_TREQ 0x40
#define ATP_TRESP 0x80
#define ATP_TREL 0xc0
#define ATP_XO 0x20
#define ATP_EOM 0x10
#define ATP_STS 0x08
#define ATP_TYPE(x) ((x)->atp_control & 0xc0)
typedef struct {
at_net net1;
u_char zonename[33];
} ZIP_1;
typedef struct {
at_net net1;
at_net net2;
u_char zonename[33];
} ZIP_2;
typedef struct {
u_char zip_command;
u_char flags;
union
{
ZIP_1 o;
ZIP_2 r;
} u;
} ZIP_FRAME;
#define ZIPF_BROADCAST 0x80
#define ZIPF_ZONE_INVALID 0x80
#define ZIPF_USE_BROADCAST 0x40
#define ZIPF_ONE_ZONE 0x20
#define ZIP_QUERY 1
#define ZIP_REPLY 2
#define ZIP_TAKEDOWN 3
#define ZIP_BRINGUP 4
#define ZIP_GETNETINFO 5
#define ZIP_NETINFOREPLY 6
#define ZIP_NOTIFY 7
#define ZIP_GETMYZONE 7
#define ZIP_GETZONELIST 8
#define ZIP_GETLOCALZONES 9
#define ZIP_GETYOURZONE 10
typedef struct
{
u_char UserU_Chars[2];
ua_short ResponderVersion;
ua_short AtalkVersion;
u_char ROMVersion;
u_char SystemType;
u_char SystemClass;
u_char HdwrConfig;
ua_short ROM85Version;
u_char ResponderLevel;
u_char ResponderLink;
u_char data[1];
} RESPONDER_FRAME;
#endif
typedef struct {
ua_short CID;
ua_long pktFirstByteSeq;
ua_long pktNextRecvSeq;
ua_short pktRecvWdw;
u_char descriptor;
u_char data[1];
} ADSP_FRAME, *ADSP_FRAMEPtr;
#define ADSP_FRAME_LEN 13
#define ADSP_CONTROL_BIT 0x80
#define ADSP_ACK_REQ_BIT 0x40
#define ADSP_EOM_BIT 0x20
#define ADSP_ATTENTION_BIT 0x10
#define ADSP_CONTROL_MASK 0x0F
#define ADSP_CTL_PROBE 0x00
#define ADSP_CTL_OREQ 0x01
#define ADSP_CTL_OACK 0x02
#define ADSP_CTL_OREQACK 0x03
#define ADSP_CTL_ODENY 0x04
#define ADSP_CTL_CLOSE 0x05
#define ADSP_CTL_FRESET 0x06
#define ADSP_CTL_FRESET_ACK 0x07
#define ADSP_CTL_RETRANSMIT 0x08
typedef struct {
ua_short version;
ua_short dstCID;
ua_long pktAttnRecvSeq;
} ADSP_OPEN_DATA, *ADSP_OPEN_DATAPtr;
#define ADSP_OPEN_FRAME_LEN 8
#define ADSP_MAX_DATA_LEN 572
#define AT_MID_ADSP 212
#define ADSP_IOCTL(i) ((i>>8) == AT_MID_ADSP)
#define ADSPATTNREAD ((AT_MID_ADSP<<8) | 254)
#define ADSPOPEN ((AT_MID_ADSP<<8) | 253)
#define ADSPCLOSE ((AT_MID_ADSP<<8) | 252)
#define ADSPCLINIT ((AT_MID_ADSP<<8) | 251)
#define ADSPCLREMOVE ((AT_MID_ADSP<<8) | 250)
#define ADSPCLLISTEN ((AT_MID_ADSP<<8) | 249)
#define ADSPCLDENY ((AT_MID_ADSP<<8) | 248)
#define ADSPSTATUS ((AT_MID_ADSP<<8) | 247)
#define ADSPREAD ((AT_MID_ADSP<<8) | 246)
#define ADSPWRITE ((AT_MID_ADSP<<8) | 245)
#define ADSPATTENTION ((AT_MID_ADSP<<8) | 244)
#define ADSPOPTIONS ((AT_MID_ADSP<<8) | 243)
#define ADSPRESET ((AT_MID_ADSP<<8) | 242)
#define ADSPNEWCID ((AT_MID_ADSP<<8) | 241)
#define ADSPBINDREQ ((AT_MID_ADSP<<8) | 240)
#define ADSPGETSOCK ((AT_MID_ADSP<<8) | 239)
#define ADSPGETPEER ((AT_MID_ADSP<<8) | 238)
#ifdef KERNEL_PRIVATE
#define STR_IGNORE 0
#define STR_PUTNEXT 1
#define STR_PUTBACK 2
#define STR_QTIME (HZ >> 3)
struct ccb;
#define CCBPtr struct ccb *
extern int adspInit(CCBPtr sp, struct adspcmd *ap);
extern int adspOpen(register CCBPtr sp, register struct adspcmd *pb);
extern int adspCLListen( register CCBPtr sp, register struct adspcmd *pb);
extern int adspClose(register CCBPtr sp, register struct adspcmd *pb);
extern int adspCLDeny(struct adspcmd *pb, CCBPtr sp);
extern int adspStatus(CCBPtr sp, register struct adspcmd *pb);
extern int adspRead(register CCBPtr sp, register struct adspcmd *pb);
extern int adspWrite(CCBPtr sp, struct adspcmd *pb);
extern int adspAttention(register struct adspcmd *pb, register CCBPtr sp);
extern int adspOptions(CCBPtr sp, struct adspcmd *pb);
extern int adspReset(CCBPtr sp, struct adspcmd *pb);
extern int adspNewCID(CCBPtr sp, struct adspcmd *pb);
extern int adspPacket(gref_t *gref, gbuf_t *mp);
#undef CCBPtr
struct adsp_debug {
int ad_time;
int ad_seq;
int ad_caller;
int ad_descriptor;
int ad_bits;
short ad_sendCnt;
short ad_sendMax;
int ad_maxSendSeq;
int ad_sendWdwSeq;
};
#endif
#endif
#endif