home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / andistkt.zip / NDIS.H < prev    next >
Text File  |  1995-04-19  |  22KB  |  554 lines

  1. /* $Log:        ndis.h $
  2.  * Revision 1.6  92/09/07  14:10:40  CRM
  3.  * Added newline at end of file (stupid compiler.)
  4.  *
  5.  * Revision 1.5  92/09/04  16:15:51  CRM
  6.  * Cleaned up a little; now has #ifdef test so won't multiply define.
  7.  *
  8.  * Revision 1.4  92/08/17  16:41:56  crm
  9.  * Automatic checkin
  10.  *
  11.  * Revision 1.3  92/08/17  15:23:16  Unknown
  12.  * releasing locks
  13.  *
  14.  * Revision 1.2  92/08/17  15:07:55  Unknown
  15.  * Added log entries and RCS bookkeeping
  16.  *
  17.  * Revision 1.1  92/08/17  14:52:35  Unknown
  18.  * Initial revision
  19.  *  */
  20. /* NDIS.H -- Definitions and structures related to the Network
  21.  *                       Driver Interface Specification.
  22.  *
  23.  *     Names of structures, types, tables, and functions follow the
  24.  *     NDIS naming conventions, whenever practical.
  25.  *
  26.  * NOTE:  This header file includes defs/structures for NDIS v 2.02.
  27.  *        OUR MAC ADHERES TO NDIS v 2.01, and NOT TO 2.02 !!!!!!!
  28.  *        I have not removed the 2.02 extensions, we simply don't use them.
  29.  */
  30. #if !defined(NDIS)
  31. #    define NDIS
  32.  
  33. /*   #define NULL 0             */
  34.  
  35. #define NAME_LEN        16
  36. #define ADDR_LEN        16
  37. #define ADDR_SIZE        1
  38. #define NUM_MCADDRS      2
  39.  
  40. /* System request function - opcodes */
  41.  
  42. #define InitiateBind                  1
  43. #define Bind                          2
  44.  
  45. /* Protocol Manager opcodes */
  46.  
  47. #define GetPMInfo                     1
  48. #define RegisterModule                2
  49. #define BindAndStart                  3
  50. #define GetPMLinkage                  4
  51.  
  52. /* General Request opcodes */
  53.  
  54. #define InitiateDiagnostics           1
  55. #define ReadErrorLog                  2
  56. #define SetStationAddress             3
  57. #define OpenAdapter                   4
  58. #define CloseAdapter                  5
  59. #define ResetMAC                      6
  60. #define SetPacketFilter               7
  61. #define AddMulticastAddress           8
  62. #define DeleteMulticastAddress        9
  63. #define UpdateStatistics              10
  64. #define ClearStatistics               11
  65. #define Interrupt                     12
  66. #define SetFunctionalAddress          13
  67. #define SetLookAhead                  14
  68.                                         /* V3.00.10 NDIS 2.02 enhancement     */
  69. #define UnusedGenReq                  15
  70. #define ModifyOpenParms               16
  71.  
  72. /* Status Indication opcodes */
  73.  
  74. #define RingStatus                    1
  75. #define AdapterCheck                  2
  76. #define StartReset                    3
  77. #define InterruptStatus               4
  78. #define EndReset                      5
  79.  
  80. /* Return error codes */
  81.  
  82. #define SUCCESS                       0x0000
  83. #define WAIT_FOR_RELEASE              0x0001
  84. #define REQUEST_QUEUED                0x0002
  85. #define FRAME_NOT_RECOGNIZED          0x0003
  86. #define FRAME_REJECTED                0x0004
  87. #define FORWARD_FRAME                 0x0005
  88. #define OUT_OF_RESOURCE               0x0006
  89. #define INVALID_PARAMETER             0x0007
  90. #define INVALID_FUNCTION              0x0008
  91. #define NOT_SUPPORTED                 0x0009
  92. #define HARDWARE_ERROR                0x000A
  93. #define TRANSMIT_ERROR                0x000B
  94. #define NO_SUCH_DESTINATION           0x000C
  95. #define ALREADY_STARTED               0x0020
  96. #define INCOMPLETE_BINDING            0x0021
  97. #define DRIVER_NOT_INITIALIZED        0x0022
  98. #define HARDWARE_NOT_FOUND            0x0023
  99. #define HARDWARE_FAILURE              0x0024
  100. #define CONFIGURATION_FAILURE         0x0025
  101. #define INTERRUPT_CONFLICT            0x0026
  102. #define INCOMPATIBLE_MAC              0x0027
  103. #define INITIALIZATION_FAILED         0x0028
  104. #define GENERAL_FAILURE               0x00FF
  105.  
  106. /* Adapter Check error codes */
  107.  
  108. #define AdapCheckInoperative          0x8000
  109. #define AdapCheckIllegalOp            0x1000
  110. #define AdapCheckLocalParityErr       0x0800
  111. #define AdapCheckParityErr            0x0400
  112. #define AdapCheckInternalParityErr    0x0100
  113. #define AdapCheckRingXmitParityErr    0x0080
  114. #define AdapCheckRingRcvParityErr     0x0040
  115. #define AdapCheckXmitOverrun          0x0020
  116. #define AdapCheckRcvOverrun           0x0010
  117. #define AdapCheckUnrecogInterrupt     0x0008
  118. #define AdapCheckUnrecogErrInt        0x0004
  119. #define AdapCheckNoPCSysService       0x0003
  120. #define AdapCheckUnrecogSuperReq      0x0002
  121. #define AdapCheckProgramRequest       0x0001
  122.  
  123. /* protocol levels, interface types */
  124.  
  125. #define MACLvl                        1
  126. #define MACTyp                        1
  127.  
  128. #define MAJOR_NDIS_VERSION            2
  129. #define MINOR_NDIS_VERSION            0
  130.  
  131. /* Protocol Table structures */
  132.  
  133. /*
  134.  * common characteristics table
  135.  */
  136. struct CommChar {
  137.         ushort  CcSize;            /* Table size */
  138.         uchar   CcLvlMjr;          /* V3.00.10 Major Level of table */
  139.         uchar   CcLvlMnr;          /* V3.00.10 Minor Level of table */
  140.         ushort  CcSpLvl;           /* Level of spec tables */
  141.         uchar   CcMjrVer;          /* Module Major version number */
  142.         uchar   CcMnrVer;          /* Module Minor version number */
  143.         ulong   CcBindFnc;         /* "Hints" on binding support */
  144.         uchar   CcName[NAME_LEN];  /* Module name */
  145.         uchar   CcUPLevel;         /* Upper protocol level */
  146.         uchar   CcUIType;          /* Upper interface type */
  147.         uchar   CcLPLevel;         /* Lower protocol level */
  148.         uchar   CcLIType;          /* Lower interface type */
  149.         ushort  CcModuleID;        /* Module ID (supplied by PM) */
  150.         ushort  CcDataSeg;         /* Module Data Segment */
  151.         LPFUN   CcSysReq;          /*  System request function */
  152.         struct MACSpecChar far  *CcSCp; /* specific characteristics         */
  153.         struct MACSpecStat far  *CcSSp; /* specific status*/
  154.         struct MACUprDisp far   *CcUDp; /* upper dispatch table */
  155.         struct ProtLwrDisp far  *CcLDp; /* lower dispatch table */
  156.  
  157.         ulong           CcRsv1;                                                         /* reserved */
  158.         ulong           CcRsv2;                                                         /* reserved */
  159. };
  160.  
  161. /*
  162.  * Definintions for the MAC Service Supported Flags.
  163.  * Bits 0-14.
  164.  */
  165.  
  166. #define BROADCAST_SUPP                  0x0001
  167. #define MULTICAST_SUPP                  0x0002
  168. #define FUNC_GROUP_ADDR_SUPP            0x0004
  169. #define PROMISCUOUS_SUPP                0x0008
  170. #define SET_STN_ADDR_SUPP               0x0010
  171. #define STAT_ALWAYS_CURR                0x0020
  172. #define DIAGNOSTICS_SUPP                0x0040
  173. #define LOOPBACK_SUPP                   0x0080
  174. #define RECEIVECHAIN_MOSTLY             0x0100
  175. #define IBM_SOURCE_R_SUPP               0x0200
  176. #define RESET_MAC_SUPP                  0x0400
  177. #define OPEN_ADAPTER_SUPP               0x0800
  178. #define INTERRUPT_RQ_SUPP               0x1000
  179. #define SRC_RTNG_BRDG_SUPP              0x2000
  180. #define GDT_ADDRESS_SUPP                0x4000
  181. #define MULTI_DATAXFER                  0x8000
  182.                                         /* V3.00.10 NDIS 2.02 enhancements    */
  183. #define MODIFYOPEN_SUPP                 0x00010000L
  184.  
  185. /*
  186.  * MAC Service Specific characteristics table
  187.  */
  188. struct MACSpecChar {
  189.         ushort  MscSize;                 /* Table size*/
  190.         uchar   MscType[NAME_LEN];       /* MAC type name*/
  191.         ushort  MscStnAdrSz;             /* Station address length */
  192.         uchar   MscPermStnAdr[ADDR_LEN]; /* Permanent station address */
  193.         uchar   MscCurrStnAdr[ADDR_LEN]; /* Current station address */
  194.         ulong   MscCurrFncAdr;           /* Current functional address */
  195.  
  196.         struct MCastBuf far *MscMCp;     /* Address of multicast buffer*/
  197.  
  198.         ulong   MscLinkSpd;              /* Link speed (bits/sec)    */
  199.         ulong   MscService;              /* Services supported flags */
  200.         ushort  MscMaxFrame;             /* Maximum frame size */
  201.         ulong   MscTBufCap;              /* Transmit buffer capacity*/
  202.         ushort  MscTBlkSz;               /* Transmit buf alloc block size*/
  203.         ulong   MscRBufCap;              /* Receive buffer capacity */
  204.         ushort  MscRBlkSz;               /* Receive buf alloc block size */
  205.         uchar   MscVenCode[3];           /* Vendor code          */
  206.         uchar   MscVenAdapter;           /* Vendor adapter code  */
  207.         uchar far *MscVenAdaptDesc;      /* Ptr to vendor adapter desc   */
  208.         ushort  MscInterrupt;            /* Interrupt level used */
  209.         ushort  MscTxQDepth;             /* Transmit Queue Depth */
  210.         ushort  MscMaxNumDataBlks;       /* Maximum number of data blocks   */
  211.  
  212.                                          /* V3.00.10 NDIS 2.02 enhancements */
  213.         struct  MACStatInit far *MscMSIp;  /* Mac Status and Initialize table */
  214. };
  215.                                         /* V3.00.10 NDIS 2.02 enhancments    */
  216.  
  217. /*
  218.  * MAC Statistics and Initialization table
  219.  */
  220. struct MACStatInit {
  221.         uchar   MsiAdapterConfig;
  222.         uchar   MsiRsvd;
  223.         uchar   MsiMicrocodeLevel[10];
  224.         LPBUF   MsiAdapterParmsAddr;
  225.         LPBUF   MsiAdapterMacAddr;
  226.         ushort  MsiSRAMAddr;
  227.         ushort  MsiBringUps;
  228.         ushort  MsiAdapterType;
  229. };
  230.  
  231. /*
  232.  * multicast address structure is ADDR_LEN bytes ulong
  233.  */
  234. struct MCastAddr {
  235.         uchar   mAddr[ADDR_LEN];
  236. };
  237.  
  238. /*
  239.  * the multicast address buffer manages NUM_MCADDRS multicast address
  240.  * structures.
  241.  */
  242. struct MCastBuf {
  243.         ushort  McbMax;         /* max # of multicast addresses */
  244.         ushort  McbCnt;         /* curr# "              "       " */
  245.  
  246.         struct MCastAddr McbAddrs[NUM_MCADDRS];
  247. };
  248.  
  249. /*
  250.  * MAC service-specific status table
  251.  */
  252. struct MACSpecStat {
  253.         ushort  MssSize;           /* Table size                        */
  254.         ulong   MssDiagDT;         /* Last diagnostic Date/Time         */
  255.         ulong   MssStatus;         /* MAC status - bit mask             */
  256.         ushort  MssFilter;         /* Current packet filter             */
  257.         void far *MssM8Sp;         /* pointer to Media specific status  */
  258.         ulong   MssClearDT;        /* Last clear stats Date/Time        */
  259.         ulong   MssFR;             /* Frames received: total            */
  260.         ulong   MssRFCRC;          /* Receive fail: CRC error           */
  261.         ulong   MssFRByt;          /* Frames received: total bytes      */
  262.         ulong   MssRFLack;         /* Receive fail: lack of buffers     */
  263.         ulong   MssFRMC;           /* Frames received: multicast        */
  264.         ulong   MssFRBC;           /* Frames received: broadcast        */
  265.         ulong   MssRFErr;          /* rcv fail: errors in general       */
  266.         ulong   MssRFMax;          /* rcv fail: exceeds max size        */
  267.         ulong   MssRFMin;          /* rcv fail: less than min size      */
  268.         ulong   MssFRMCByt;        /* Frames rcvd: multicast bytes      */
  269.         ulong   MssFRBCByt;        /* Frames rcvd: broadcast bytes      */
  270.         ulong   MssRFHW;           /* rcv fail: hardware error          */
  271.         ulong   MssFS;             /* Frames sent: total                */
  272.         ulong   MssFSByt;          /* Frames sent: total bytes          */
  273.         ulong   MssFSMC;           /* Frames sent: multicast            */
  274.         ulong   MssFSBC;           /* Frames sent: broadcast            */
  275.         ulong   MssFSBCByt;        /* Frames sent: broadcast bytes      */
  276.         ulong   MssFSMCByt;        /* Frames sent: multicast bytes      */
  277.         ulong   MssSFTime;         /* Send fail: time-out               */
  278.         ulong   MssSFHW;           /* Send fail: hardware error         */
  279. };
  280.  
  281. /*
  282.  * Packet filter bit definitions.
  283.  */
  284.  
  285. #define FLTR_DIRECTED   0x01
  286. #define FLTR_BRDCST     0x02
  287. #define FLTR_PRMSCS     0x04
  288. #define FLTR_SRC_RTG    0x08
  289.  
  290. /*
  291.  * MAC status bits in MSS
  292.  * bits 0-2 are coded to reflect the hardware status.
  293.  */
  294.  
  295. #define MS_HW_MASK  0x0007
  296.  
  297. #define HW_MISSING  0x0000
  298. #define HW_BUD_ERR  0x0001
  299. #define HW_CFG_ERR  0x0002
  300. #define HW_FAULT    0x0003
  301. #define HW_SOFT_ERR 0x0004
  302. #define HW_OK       0x0007
  303.  
  304. #define MS_BOUND    0x0008
  305. #define MS_OPEN     0x0010
  306. #define MS_DIAGS_ON 0x0020
  307.  
  308.  
  309. /*
  310.  * 802.3 status table
  311.  */
  312. struct MAC8023Stat {
  313.         ushort  M83sSize;      /* Table size                     */
  314.         ushort  M83sVer;       /* Version                        */
  315.         ulong   M83sRFAln;     /* Receive fail: Alignment error  */
  316.         ulong   M83sRMask;     /* Receive fail bit mask (below)  */
  317.         ulong   M83sRFOvrn;    /* Receive fail: Overrun          */
  318.         ulong   M83sFSCols;    /* Frames sent: after collisions  */
  319.         ulong   M83sFSDfr;     /* Frames sent: after deferring   */
  320.         ulong   M83sSFColMx;   /* Frames not sent: Max collisions*/
  321.         ulong   M83sTotCol;    /* Total collision during tran attempts */
  322.         ulong   M83sTotLCol;   /* Total late collisions          */
  323.         ulong   M83sFSCol1;    /* Frames sent: after 1 collision */
  324.         ulong   M83sFSColM;    /* Frames sent: multpl collisions */
  325.         ulong   M83sFSHrtB;    /* Frames sent: CD heart beat     */
  326.         ulong   M83sJabber;    /* Jabber errors                  */
  327.         ulong   M83sLostCS;    /* Lost carrier sense during tran */
  328.         ulong   M83sTMask;     /* Transmit fail bit mask (below) */
  329.         ulong   M83snumunder;  /* V3.00.10 Number of underruns   */
  330.         ushort  M83sRingUtil;  /* V3.00.10 Ring Utilization Measure */
  331. };
  332.  
  333. #define M83Sb_RFCRC     1      /* Recv bit 0       CRC error          */
  334. #define M83Sb_RFFE      2      /*          1       Framing error      */
  335. #define M83Sb_RFMaxSz   4      /*          2       Frame size > Max   */
  336.  
  337. #define M83Sb_TFColMx   1      /* Xmit bit 0   Excessive collisions    */
  338. #define M83Sb_TFCrr     2      /*          1       Carrier check failed*/
  339. #define M83Sb_TFShrt    4      /*          2       Short circuit       */
  340. #define M83Sb_TFOpen    8      /*          3       Open circuit        */
  341. #define M83Sb_TFLong    16     /*          4       Frame size > Max    */
  342. #define M83Sb_TFRemFl   32     /*          5       Remote fail to defer*/
  343.  
  344.  
  345.  
  346. /*
  347.  * 802.5 status table
  348.  */
  349. struct MAC8025Stat {
  350.         ushort  M85sSize;       /* Table size                       */
  351.         ushort  M85sVer;        /* Version                          */
  352.         ulong   M85sFCS;        /* FCS error or repeat frame code error */
  353.         ulong   M85sRMask;      /* Receive fail bit mask (below)    */
  354.         ulong   M85s5hbtt;      /* "5 half-bit transition" errors.  */
  355.         ulong   M85sACerr;      /* Access Control errors            */
  356.         ulong   M85sFsAbrtD;    /* Frames sent: w/ abort delimiter  */
  357.         ulong   M85sFsNrcv;     /* Frames sent: Not received.       */
  358.         ulong   M85sFrNoBuf;    /* Frames recognized, no buffers    */
  359.         ulong   M85sFcopyErr;   /* Frame copy errors                */
  360.         ulong   M85sFreqErr;    /* Frequency errors                 */
  361.         ulong   M85sMonRegen;   /* Active Monitor regeneration count.   */
  362.         ulong   M85sRsrvd1;     /* reserved                         */
  363.         ulong   M85sRsrvd2;     /* reserved                         */
  364.         ulong   M85sRsrvd3;     /* reserved                         */
  365.         ulong   M85sTMask;      /* Transmit fail bit mask (below)   */
  366.         ulong   M85snumunder;   /* V3.00.10 Number of underruns     */
  367.         ushort  M85sRingUtil;   /* V3.00.10 Ring Utilization Measure */
  368. };
  369.  
  370. #define M85Sb_RFCon     1       /* Recv bit0       Receiver Congestion  */
  371. #define M85Sb_RFCopy    2       /*         1       Frame Copy error     */
  372.  
  373. #define M85Sb_TFunrun   1       /* Xmit bit 0   Transmit underrrun      */
  374. #define M85Sb_TFLine    2       /*         1       Transmit Line error  */
  375. #define M85Sb_TFAbDlm   4       /*         2       Abort delimiter xmitted */
  376. #define M85Sb_TFLost    8       /*         3       Frame Lost           */
  377. #define M85Sb_TFToken   16      /*         4       Token error          */
  378.  
  379.  
  380. /*
  381.  * the general request C function gets a pointer to a structure of this
  382.  * type.
  383.  */
  384. struct GenReq {
  385.         ushort  GReqProtID;
  386.         ushort  GReqReqHandle;
  387.         ushort  GReqP1;
  388.         ulong   GReqP2;
  389.         ushort  GReqOpCode;
  390.         ushort  GReqMacDs;
  391. };
  392.  
  393. /*
  394.  * MAC upper dispatch table
  395.  */
  396. struct MACUprDisp {
  397.  
  398.         struct CommChar far *MudCCp;   /* Back pointer to CC table */
  399.  
  400.         /* MAC entry points, all are assembly functions. */
  401.  
  402.         LPFUN  MudGReq;
  403.         LPFUN  MudXmitChain;
  404.         LPFUN  MudXferData;
  405.         LPFUN  MudRcvRelease;
  406.         LPFUN  MudIndOn;
  407.         LPFUN  MudIndOff;
  408. };
  409.  
  410. /*
  411.  * protocol lower dispatch table
  412.  */
  413. struct ProtLwrDisp {
  414.  
  415.         struct CommChar far *PldCCp;   /* Back pointer to CC table */
  416.  
  417.         ulong PldIFF;                                                                   /* Interface flags                                      */
  418.  
  419.         /* Protocol stack entry points. */
  420.         /* NOTE: these functions are defined as returning long, even though
  421.                  they return ushort so that h2inc.exe will generate the
  422.                  correct sizes for ndis.inc
  423.          */
  424.  
  425.         ulong  (far pascal *PldReqConfirm)(ushort,ushort,ushort,ushort,ushort,ushort);
  426.         ulong  (far pascal *PldXmitConfirm)(ushort,ushort,ushort,ushort,ushort);
  427.         ulong  (far pascal *PldRcvLkAhead)(ushort,ushort,ushort,LPBUF,LPBUF,ushort);
  428.         ulong  (far pascal *PldIndComplete)(ushort,ushort);
  429.         ulong  (far pascal *PldRcvChain)(ushort,ushort,ushort,LPBUF,LPBUF,ushort);
  430.         ulong  (far pascal *PldStatInd)(ushort,ushort,LPBUF,ushort,ushort);
  431.  
  432. };
  433.  
  434. /*
  435.  * Data structures for TransmitChain (Tx), TransferData (TD), and
  436.  * ReceiveLookahed (Rx).
  437.  */
  438.  
  439. struct TxDataBlock {
  440.         uchar   TxPtrType;    /* 0 => Physical pointer, 1 => GDT pointer */
  441.         uchar   TxRsvdByte;   /* Reserverd, must be zero.    */
  442.         ushort  TxDataLen;    /* Data block length in bytes. */
  443.         LPBUF TxDataPtr;      /* Far pointer to data block.  */
  444. };
  445. #define TDDataBlockShift 3 /* sizeof(TDDatablock) in power of 2 */
  446. struct TDDataBlock {
  447.         uchar   TDPtrType;    /* 0 => Physical pointer, 1 => GDT pointer  */
  448.         uchar   TDRsvdByte;   /* Reserverd, must be zero.    */
  449.         ushort  TDDataLen;    /* Data block length in bytes. */
  450.         LPBUF TDDataPtr;      /* Far pointer to data block.  */
  451. };
  452. #define TxBufDescSize   8  /* sizeof(TxBufDesc) - TxDataBlk */
  453. #define MAX_TX_DATABLK  8
  454. #define MAX_IMMED_LEN   64
  455. struct TxBufDesc {
  456.         ushort  TxImmedLen;   /* Byte count of immediate data (max = 64) */
  457.         LPBUF   TxImmedPtr;   /* Virtual address of Immediate data       */
  458.         ushort  TxDataCount;  /* Number of Data Blocks (max = 8)         */
  459.  
  460.         struct TxDataBlock TxDataBlk[MAX_TX_DATABLK];
  461. };
  462.  
  463.  
  464. #define MAX_TD_DATABLK  8
  465. struct TDBufDesc {
  466.         ushort  TDDataCount;  /* Number of Data Blocks (max = 8) */
  467.  
  468.         struct TDDataBlock TDDataBlk[MAX_TD_DATABLK];
  469. };
  470.  
  471. struct RxDataBlock {
  472.         ushort  RxDataLen;    /* Length of the Data Block */
  473.         LPBUF RxDataPtr;      /* Far Pointer to Data Block*/
  474. };
  475.  
  476. #define MAX_RX_DATABLK  8
  477. struct RxBufDesc {
  478.         ushort  RxDataCount;   /* Number of Data Blocks.*/
  479.  
  480.         struct RxDataBlock RxDataBlk[MAX_RX_DATABLK];
  481. };
  482.  
  483. /*
  484.  * Data structures for the "Module Configuration" structure parsed from
  485.  * the PROTOCOL.INI file. see NDIS spec for details.
  486.  */
  487.  
  488. struct Param {
  489.  
  490.         ushort ParamType;  /* 0 => 31 bit signed integer, 1 => string      */
  491.         ushort ParamLen;   /* String length (including null) or 4.         */
  492.  
  493.         /*
  494.          * the parameter immediately follows this structure, it can be any
  495.          * length or type and follows the union structure. the AWK script is
  496.          * just dumb enough that it's not able to parse union definitions. so all
  497.          * references to ParNum and ParStr are indirect.
  498.          */
  499.  
  500.       union ParValu
  501.          {
  502.          ulong ParNum;
  503.          uchar ParStr[1];
  504.          } ParVal;
  505.  
  506. };
  507.  
  508. struct KeywordEntry {
  509.         struct KeywordEntry far *NextKeywordEntry;    /* Forward pointer */
  510.         struct KeywordEntry far *PrevKeywordEntry;    /* Back Pointer    */
  511.  
  512.         uchar   KeyWord[NAME_LEN];      /* Keyword on left side of "="   */
  513.         ushort  NumParams;              /* Number of parameters on r. side of "="       */
  514.  
  515.         struct Param Params[1];         /* Actual size depends on NumParams                             */
  516. };
  517.  
  518. struct ModCfg {
  519.         struct ModCfg far *NextModCfg;  /* Module config images are in a   */
  520.         struct ModCfg far *PrevModCfg;  /* double-linked list.   */
  521.  
  522.         uchar   ModName[NAME_LEN];      /* Bracketed Module Name.  */
  523.  
  524.         struct KeywordEntry KE[1];      /* Head of Keyword list, always one */
  525.  
  526. };                                                                              /* or more entries per module.                                  */
  527.  
  528. struct ProIni {
  529.         struct ModCfg MC[1];            /* Head of Module config list.*/
  530. };
  531.  
  532. /*
  533.  * request block used to register a module
  534.  */
  535. struct RqBlk {
  536.         ushort  Opcode;
  537.         ushort  Status;
  538.         void  far *Pointer1;
  539.         void  far *Pointer2;
  540.         ushort  Word1;
  541. };
  542.  
  543. /*
  544.  * the minimum lookahead defaults to 64
  545.  */
  546. #define MIN_LOOKAHEAD_DEFAULT 64
  547. /*
  548.  * the minimum buffer for a Read Error Log must be 14 bytes
  549.  */
  550. #define MIN_ERR_LOG_LEN       14
  551.  
  552.  
  553. #endif
  554.