darwin-xnu/bsd/netat/adsp.h
<<
>>
Prefs
   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#include <sys/appleapiopts.h>
  34#include <netat/appletalk.h>
  35
  36#ifdef __APPLE_API_OBSOLETE
  37
  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
  86struct 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
 276typedef long (*ProcPtr)();      /* XXX */
 277typedef ProcPtr *ProcHandle;
 278typedef char *Ptr;
 279typedef Ptr *Handle;
 280
 281/* connection control block */
 282
 283struct 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
 296typedef struct TRCCB TRCCB;
 297typedef TRCCB *TPCCB;
 298
 299/* init connection end parameters */
 300
 301struct 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
 312typedef struct TRinitParams TRinitParams;
 313
 314/* open connection parameters */
 315
 316struct 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
 331typedef struct TRopenParams TRopenParams;
 332
 333/* close connection parameters */
 334
 335struct TRcloseParams    {
 336    u_char abort;               /* abort connection immediately if non-zero */
 337};
 338
 339typedef struct TRcloseParams TRcloseParams;
 340
 341/* client status parameter block */
 342
 343struct 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        
 351typedef struct TRstatusParams TRstatusParams;
 352
 353/* read/write parameter block */
 354
 355struct 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
 364typedef struct TRioParams TRioParams;
 365
 366/* attention parameter block */
 367
 368struct 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
 376typedef struct TRattnParams TRattnParams;
 377
 378/* client send option parameter block */
 379
 380struct 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
 390typedef struct TRoptionParams TRoptionParams;
 391
 392/* new cid parameters */
 393
 394struct TRnewcidParams {
 395    u_short newcid;             /* new connection id returned */
 396};
 397
 398typedef struct TRnewcidParams TRnewcidParams;
 399
 400union 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
 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;            /* 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        
 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/* from h/adsp_frames.h */
 451
 452#ifdef NOT_USED
 453/*
 454 * LAP Frame Information
 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;             /* 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
 480#endif /* NOT_USED */
 481
 482typedef 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
 498typedef 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
 510typedef 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
 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;             /* 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 */
 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 /* NOT_USED */
 599
 600/*
 601 * ADSP Frame
 602 */
 603typedef 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
 630typedef 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
 670#ifdef KERNEL_PRIVATE
 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
 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 /* KERNEL_PRIVATE */
 711#endif /* __APPLE_API_OBSOLETE */
 712#endif /* _NETAT_ADSP_H_ */
 713
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.