JP Abgrall | 511eca3 | 2014-02-12 13:46:45 -0800 | [diff] [blame] | 1 | /*
|
| 2 | * Copyright (c) 1993,1994
|
| 3 | * Texas A&M University. All rights reserved.
|
| 4 | *
|
| 5 | * Redistribution and use in source and binary forms, with or without
|
| 6 | * modification, are permitted provided that the following conditions
|
| 7 | * are met:
|
| 8 | * 1. Redistributions of source code must retain the above copyright
|
| 9 | * notice, this list of conditions and the following disclaimer.
|
| 10 | * 2. Redistributions in binary form must reproduce the above copyright
|
| 11 | * notice, this list of conditions and the following disclaimer in the
|
| 12 | * documentation and/or other materials provided with the distribution.
|
| 13 | * 3. All advertising materials mentioning features or use of this software
|
| 14 | * must display the following acknowledgement:
|
| 15 | * This product includes software developed by Texas A&M University
|
| 16 | * and its contributors.
|
| 17 | * 4. Neither the name of the University nor the names of its contributors
|
| 18 | * may be used to endorse or promote products derived from this software
|
| 19 | * without specific prior written permission.
|
| 20 | *
|
| 21 | * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND
|
| 22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| 23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| 24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE
|
| 25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
| 26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
| 27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
| 28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
| 29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
| 30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
| 31 | * SUCH DAMAGE.
|
| 32 | *
|
| 33 | * Developers:
|
| 34 | * David K. Hess, Douglas Lee Schales, David R. Safford
|
| 35 | *
|
| 36 | * Heavily modified for Metaware HighC + GNU C 2.8+
|
| 37 | * Gisle Vanem 1998
|
| 38 | */
|
| 39 |
|
| 40 | #ifndef __PCAP_NDIS_H
|
| 41 | #define __PCAP_NDIS_H
|
| 42 |
|
| 43 | #if defined (__HIGHC__)
|
| 44 | #define pascal _CC(_CALLEE_POPS_STACK & ~_REVERSE_PARMS) /* calling convention */
|
| 45 | #define CALLBACK(foo) pascal WORD foo
|
| 46 | #define PAS_PTR(x,arg) typedef FAR WORD pascal (*x) arg
|
| 47 | #define GUARD() _inline (0x9C,0xFA) /* pushfd, cli */
|
| 48 | #define UNGUARD() _inline (0x9D) /* popfd */
|
| 49 | #define FAR _far
|
| 50 |
|
| 51 | #elif defined(__GNUC__)
|
| 52 | #define CALLBACK(foo) WORD foo __attribute__((stdcall))
|
| 53 | #define PAS_PTR(x,arg) typedef WORD (*x) arg __attribute__((stdcall))
|
| 54 | #define GUARD() __asm__ __volatile__ ("pushfd; cli")
|
| 55 | #define UNGUARD() __asm__ __volatile__ ("popfd")
|
| 56 | #define FAR
|
| 57 |
|
| 58 | #elif defined (__TURBOC__)
|
| 59 | #define CALLBACK(foo) WORD pascal foo
|
| 60 | #define PAS_PTR(x,arg) typedef WORD pascal (_far *x) arg
|
| 61 | #define GUARD() _asm { pushf; cli }
|
| 62 | #define UNGUARD() _asm { popf }
|
| 63 | #define FAR _far
|
| 64 |
|
| 65 | #elif defined (__WATCOMC__)
|
| 66 | #define CALLBACK(foo) WORD pascal foo
|
| 67 | #define PAS_PTR(x,arg) typedef WORD pascal (_far *x) arg
|
| 68 | #define GUARD() _disable()
|
| 69 | #define UNGUARD() _enable()
|
| 70 | #define FAR _far
|
| 71 |
|
| 72 | #else
|
| 73 | #error Unsupported compiler
|
| 74 | #endif
|
| 75 |
|
| 76 |
|
| 77 | /*
|
| 78 | * Forwards
|
| 79 | */
|
| 80 | struct _ReqBlock;
|
| 81 | struct _TxBufDescr;
|
| 82 | struct _TDBufDescr;
|
| 83 |
|
| 84 | /*
|
| 85 | * Protocol Manager API
|
| 86 | */
|
| 87 | PAS_PTR (ProtMan, (struct _ReqBlock FAR*, WORD));
|
| 88 |
|
| 89 | /*
|
| 90 | * System request
|
| 91 | */
|
| 92 | PAS_PTR (SystemRequest, (DWORD, DWORD, WORD, WORD, WORD));
|
| 93 |
|
| 94 | /*
|
| 95 | * MAC API
|
| 96 | */
|
| 97 | PAS_PTR (TransmitChain, (WORD, WORD, struct _TxBufDescr FAR*, WORD));
|
| 98 | PAS_PTR (TransferData, (WORD*,WORD, struct _TDBufDescr FAR*, WORD));
|
| 99 | PAS_PTR (Request, (WORD, WORD, WORD, DWORD, WORD, WORD));
|
| 100 | PAS_PTR (ReceiveRelease,(WORD, WORD));
|
| 101 | PAS_PTR (IndicationOn, (WORD));
|
| 102 | PAS_PTR (IndicationOff, (WORD));
|
| 103 |
|
| 104 |
|
| 105 | typedef enum {
|
| 106 | HARDWARE_NOT_INSTALLED = 0,
|
| 107 | HARDWARE_FAILED_DIAG = 1,
|
| 108 | HARDWARE_FAILED_CONFIG = 2,
|
| 109 | HARDWARE_HARD_FAULT = 3,
|
| 110 | HARDWARE_SOFT_FAULT = 4,
|
| 111 | HARDWARE_OK = 7,
|
| 112 | HARDWARE_MASK = 0x0007,
|
| 113 | MAC_BOUND = 0x0008,
|
| 114 | MAC_OPEN = 0x0010,
|
| 115 | DIAG_IN_PROGRESS = 0x0020
|
| 116 | } NdisMacStatus;
|
| 117 |
|
| 118 | typedef enum {
|
| 119 | STATUS_RING_STATUS = 1,
|
| 120 | STATUS_ADAPTER_CHECK = 2,
|
| 121 | STATUS_START_RESET = 3,
|
| 122 | STATUS_INTERRUPT = 4,
|
| 123 | STATUS_END_RESET = 5
|
| 124 | } NdisStatus;
|
| 125 |
|
| 126 | typedef enum {
|
| 127 | FILTER_DIRECTED = 1,
|
| 128 | FILTER_BROADCAST = 2,
|
| 129 | FILTER_PROMISCUOUS = 4,
|
| 130 | FILTER_SOURCE_ROUTE = 8
|
| 131 | } NdisPacketFilter;
|
| 132 |
|
| 133 | typedef enum {
|
| 134 | REQ_INITIATE_DIAGNOSTICS = 1,
|
| 135 | REQ_READ_ERROR_LOG = 2,
|
| 136 | REQ_SET_STATION_ADDRESS = 3,
|
| 137 | REQ_OPEN_ADAPTER = 4,
|
| 138 | REQ_CLOSE_ADAPTER = 5,
|
| 139 | REQ_RESET_MAC = 6,
|
| 140 | REQ_SET_PACKET_FILTER = 7,
|
| 141 | REQ_ADD_MULTICAST_ADDRESS = 8,
|
| 142 | REQ_DELETE_MULTICAST_ADDRESS = 9,
|
| 143 | REQ_UPDATE_STATISTICS = 10,
|
| 144 | REQ_CLEAR_STATISTICS = 11,
|
| 145 | REQ_INTERRUPT_REQUEST = 12,
|
| 146 | REQ_SET_FUNCTIONAL_ADDRESS = 13,
|
| 147 | REQ_SET_LOOKAHEAD = 14
|
| 148 | } NdisGeneralRequest;
|
| 149 |
|
| 150 | typedef enum {
|
| 151 | SF_BROADCAST = 0x00000001L,
|
| 152 | SF_MULTICAST = 0x00000002L,
|
| 153 | SF_FUNCTIONAL = 0x00000004L,
|
| 154 | SF_PROMISCUOUS = 0x00000008L,
|
| 155 | SF_SOFT_ADDRESS = 0x00000010L,
|
| 156 | SF_STATS_CURRENT = 0x00000020L,
|
| 157 | SF_INITIATE_DIAGS = 0x00000040L,
|
| 158 | SF_LOOPBACK = 0x00000080L,
|
| 159 | SF_RECEIVE_CHAIN = 0x00000100L,
|
| 160 | SF_SOURCE_ROUTING = 0x00000200L,
|
| 161 | SF_RESET_MAC = 0x00000400L,
|
| 162 | SF_OPEN_CLOSE = 0x00000800L,
|
| 163 | SF_INTERRUPT_REQUEST = 0x00001000L,
|
| 164 | SF_SOURCE_ROUTING_BRIDGE = 0x00002000L,
|
| 165 | SF_VIRTUAL_ADDRESSES = 0x00004000L
|
| 166 | } NdisMacServiceFlags;
|
| 167 |
|
| 168 | typedef enum {
|
| 169 | REQ_INITIATE_BIND = 1,
|
| 170 | REQ_BIND = 2,
|
| 171 | REQ_INITIATE_PREBIND = 3,
|
| 172 | REQ_INITIATE_UNBIND = 4,
|
| 173 | REQ_UNBIND = 5
|
| 174 | } NdisSysRequest;
|
| 175 |
|
| 176 | typedef enum {
|
| 177 | PM_GET_PROTOCOL_MANAGER_INFO = 1,
|
| 178 | PM_REGISTER_MODULE = 2,
|
| 179 | PM_BIND_AND_START = 3,
|
| 180 | PM_GET_PROTOCOL_MANAGER_LINKAGE = 4,
|
| 181 | PM_GET_PROTOCOL_INI_PATH = 5,
|
| 182 | PM_REGISTER_PROTOCOL_MANAGER_INFO = 6,
|
| 183 | PM_INIT_AND_REGISTER = 7,
|
| 184 | PM_UNBIND_AND_STOP = 8,
|
| 185 | PM_BIND_STATUS = 9,
|
| 186 | PM_REGISTER_STATUS = 10
|
| 187 | } NdisProtManager;
|
| 188 |
|
| 189 |
|
| 190 | typedef enum {
|
| 191 | ERR_SUCCESS = 0x00,
|
| 192 | ERR_WAIT_FOR_RELEASE = 0x01,
|
| 193 | ERR_REQUEST_QUEUED = 0x02,
|
| 194 | ERR_FRAME_NOT_RECOGNIZED = 0x03,
|
| 195 | ERR_FRAME_REJECTED = 0x04,
|
| 196 | ERR_FORWARD_FRAME = 0x05,
|
| 197 | ERR_OUT_OF_RESOURCE = 0x06,
|
| 198 | ERR_INVALID_PARAMETER = 0x07,
|
| 199 | ERR_INVALID_FUNCTION = 0x08,
|
| 200 | ERR_NOT_SUPPORTED = 0x09,
|
| 201 | ERR_HARDWARE_ERROR = 0x0A,
|
| 202 | ERR_TRANSMIT_ERROR = 0x0B,
|
| 203 | ERR_NO_SUCH_DESTINATION = 0x0C,
|
| 204 | ERR_BUFFER_TOO_SMALL = 0x0D,
|
| 205 | ERR_ALREADY_STARTED = 0x20,
|
| 206 | ERR_INCOMPLETE_BINDING = 0x21,
|
| 207 | ERR_DRIVER_NOT_INITIALIZED = 0x22,
|
| 208 | ERR_HARDWARE_NOT_FOUND = 0x23,
|
| 209 | ERR_HARDWARE_FAILURE = 0x24,
|
| 210 | ERR_CONFIGURATION_FAILURE = 0x25,
|
| 211 | ERR_INTERRUPT_CONFLICT = 0x26,
|
| 212 | ERR_INCOMPATIBLE_MAC = 0x27,
|
| 213 | ERR_INITIALIZATION_FAILED = 0x28,
|
| 214 | ERR_NO_BINDING = 0x29,
|
| 215 | ERR_NETWORK_MAY_NOT_BE_CONNECTED = 0x2A,
|
| 216 | ERR_INCOMPATIBLE_OS_VERSION = 0x2B,
|
| 217 | ERR_ALREADY_REGISTERED = 0x2C,
|
| 218 | ERR_PATH_NOT_FOUND = 0x2D,
|
| 219 | ERR_INSUFFICIENT_MEMORY = 0x2E,
|
| 220 | ERR_INFO_NOT_FOUND = 0x2F,
|
| 221 | ERR_GENERAL_FAILURE = 0xFF
|
| 222 | } NdisError;
|
| 223 |
|
| 224 | #define NDIS_PARAM_INTEGER 0
|
| 225 | #define NDIS_PARAM_STRING 1
|
| 226 |
|
| 227 | #define NDIS_TX_BUF_LENGTH 8
|
| 228 | #define NDIS_TD_BUF_LENGTH 1
|
| 229 | #define NDIS_RX_BUF_LENGTH 8
|
| 230 |
|
| 231 | #define NDIS_PTR_PHYSICAL 0
|
| 232 | #define NDIS_PTR_VIRTUAL 2
|
| 233 |
|
| 234 | #define NDIS_PATH "PROTMAN$"
|
| 235 |
|
| 236 |
|
| 237 | typedef struct _CommonChars {
|
| 238 | WORD tableSize;
|
| 239 | BYTE majorNdisVersion; /* 2 - Latest version */
|
| 240 | BYTE minorNdisVersion; /* 0 */
|
| 241 | WORD reserved1;
|
| 242 | BYTE majorModuleVersion;
|
| 243 | BYTE minorModuleVersion;
|
| 244 | DWORD moduleFlags;
|
| 245 | /* 0 - Binding at upper boundary supported
|
| 246 | * 1 - Binding at lower boundary supported
|
| 247 | * 2 - Dynamically bound.
|
| 248 | * 3-31 - Reserved, must be zero.
|
| 249 | */
|
| 250 | BYTE moduleName[16];
|
| 251 | BYTE protocolLevelUpper;
|
| 252 | /* 1 - MAC
|
| 253 | * 2 - Data Link
|
| 254 | * 3 - Network
|
| 255 | * 4 - Transport
|
| 256 | * 5 - Session
|
| 257 | * -1 - Not specified
|
| 258 | */
|
| 259 | BYTE interfaceUpper;
|
| 260 | BYTE protocolLevelLower;
|
| 261 | /* 0 - Physical
|
| 262 | * 1 - MAC
|
| 263 | * 2 - Data Link
|
| 264 | * 3 - Network
|
| 265 | * 4 - Transport
|
| 266 | * 5 - Session
|
| 267 | * -1 - Not specified
|
| 268 | */
|
| 269 | BYTE interfaceLower;
|
| 270 | WORD moduleId;
|
| 271 | WORD moduleDS;
|
| 272 | SystemRequest systemRequest;
|
| 273 | BYTE *serviceChars;
|
| 274 | BYTE *serviceStatus;
|
| 275 | BYTE *upperDispatchTable;
|
| 276 | BYTE *lowerDispatchTable;
|
| 277 | BYTE *reserved2; /* Must be NULL */
|
| 278 | BYTE *reserved3; /* Must be NULL */
|
| 279 | } CommonChars;
|
| 280 |
|
| 281 |
|
| 282 | typedef struct _MulticastList {
|
| 283 | WORD maxMulticastAddresses;
|
| 284 | WORD numberMulticastAddresses;
|
| 285 | BYTE multicastAddress[16][16];
|
| 286 | } MulticastList;
|
| 287 |
|
| 288 |
|
| 289 | typedef struct _MacChars {
|
| 290 | WORD tableSize;
|
| 291 | BYTE macName[16];
|
| 292 | WORD addressLength;
|
| 293 | BYTE permanentAddress[16];
|
| 294 | BYTE currentAddress[16];
|
| 295 | DWORD currentFunctionalAddress;
|
| 296 | MulticastList *multicastList;
|
| 297 | DWORD linkSpeed;
|
| 298 | DWORD serviceFlags;
|
| 299 | WORD maxFrameSize;
|
| 300 | DWORD txBufferSize;
|
| 301 | WORD txBufferAllocSize;
|
| 302 | DWORD rxBufferSize;
|
| 303 | WORD rxBufferAllocSize;
|
| 304 | BYTE ieeeVendor[3];
|
| 305 | BYTE vendorAdapter;
|
| 306 | BYTE *vendorAdapterDescription;
|
| 307 | WORD interruptLevel;
|
| 308 | WORD txQueueDepth;
|
| 309 | WORD maxDataBlocks;
|
| 310 | } MacChars;
|
| 311 |
|
| 312 |
|
| 313 | typedef struct _ProtocolChars {
|
| 314 | WORD length;
|
| 315 | BYTE name[16];
|
| 316 | WORD type;
|
| 317 | } ProtocolChars;
|
| 318 |
|
| 319 |
|
| 320 | typedef struct _MacUpperDispatch {
|
| 321 | CommonChars *backPointer;
|
| 322 | Request request;
|
| 323 | TransmitChain transmitChain;
|
| 324 | TransferData transferData;
|
| 325 | ReceiveRelease receiveRelease;
|
| 326 | IndicationOn indicationOn;
|
| 327 | IndicationOff indicationOff;
|
| 328 | } MacUpperDispatch;
|
| 329 |
|
| 330 |
|
| 331 | typedef struct _MacStatusTable {
|
| 332 | WORD tableSize;
|
| 333 | DWORD lastDiag;
|
| 334 | DWORD macStatus;
|
| 335 | WORD packetFilter;
|
| 336 | BYTE *mediaSpecificStats;
|
| 337 | DWORD lastClear;
|
| 338 | DWORD totalFramesRx;
|
| 339 | DWORD totalFramesCrc;
|
| 340 | DWORD totalBytesRx;
|
| 341 | DWORD totalDiscardBufSpaceRx;
|
| 342 | DWORD totalMulticastRx;
|
| 343 | DWORD totalBroadcastRx;
|
| 344 | DWORD obsolete1[5];
|
| 345 | DWORD totalDiscardHwErrorRx;
|
| 346 | DWORD totalFramesTx;
|
| 347 | DWORD totalBytesTx;
|
| 348 | DWORD totalMulticastTx;
|
| 349 | DWORD totalBroadcastTx;
|
| 350 | DWORD obsolete2[2];
|
| 351 | DWORD totalDiscardTimeoutTx;
|
| 352 | DWORD totalDiscardHwErrorTx;
|
| 353 | } MacStatusTable;
|
| 354 |
|
| 355 |
|
| 356 | typedef struct _ProtDispatch {
|
| 357 | CommonChars *backPointer;
|
| 358 | DWORD flags;
|
| 359 | /* 0 - handles non-LLC frames
|
| 360 | * 1 - handles specific-LSAP LLC frames
|
| 361 | * 2 - handles specific-LSAP LLC frames
|
| 362 | * 3-31 - reserved must be 0
|
| 363 | */
|
| 364 | void (*requestConfirm) (void);
|
| 365 | void (*transmitConfirm) (void);
|
| 366 | void (*receiveLookahead) (void);
|
| 367 | void (*indicationComplete) (void);
|
| 368 | void (*receiveChain) (void);
|
| 369 | void (*status) (void);
|
| 370 | } ProtDispatch;
|
| 371 |
|
| 372 |
|
| 373 | typedef struct _ReqBlock {
|
| 374 | WORD opcode;
|
| 375 | WORD status;
|
| 376 | BYTE FAR *pointer1;
|
| 377 | BYTE FAR *pointer2;
|
| 378 | WORD word1;
|
| 379 | } ReqBlock;
|
| 380 |
|
| 381 |
|
| 382 | typedef struct _TxBufDescrRec {
|
| 383 | BYTE txPtrType;
|
| 384 | BYTE dummy;
|
| 385 | WORD txDataLen;
|
| 386 | BYTE *txDataPtr;
|
| 387 | } TxBufDescrRec;
|
| 388 |
|
| 389 |
|
| 390 | typedef struct _TxBufDescr {
|
| 391 | WORD txImmedLen;
|
| 392 | BYTE *txImmedPtr;
|
| 393 | WORD txDataCount;
|
| 394 | TxBufDescrRec txBufDescrRec[NDIS_TX_BUF_LENGTH];
|
| 395 | } TxBufDescr;
|
| 396 |
|
| 397 |
|
| 398 | typedef struct _TDBufDescrRec {
|
| 399 | BYTE tDPtrType;
|
| 400 | BYTE dummy;
|
| 401 | WORD tDDataLen;
|
| 402 | BYTE *tDDataPtr;
|
| 403 | } TDBufDescrRec;
|
| 404 |
|
| 405 |
|
| 406 | typedef struct _TDBufDescr {
|
| 407 | WORD tDDataCount;
|
| 408 | TDBufDescrRec tDBufDescrRec[NDIS_TD_BUF_LENGTH];
|
| 409 | } TDBufDescr;
|
| 410 |
|
| 411 |
|
| 412 | typedef struct _RxBufDescrRec {
|
| 413 | WORD rxDataLen;
|
| 414 | BYTE *rxDataPtr;
|
| 415 | } RxBufDescrRec;
|
| 416 |
|
| 417 |
|
| 418 | typedef struct _RxBufDescr {
|
| 419 | WORD rxDataCount;
|
| 420 | RxBufDescrRec rxBufDescrRec[NDIS_RX_BUF_LENGTH];
|
| 421 | } RxBufDescr;
|
| 422 |
|
| 423 |
|
| 424 | typedef struct _PktBuf {
|
| 425 | struct _PktBuf *nextLink;
|
| 426 | struct _PktBuf *prevLink;
|
| 427 | int handle;
|
| 428 | int length;
|
| 429 | int packetLength;
|
| 430 | DWORD sequence;
|
| 431 | BYTE *buffer;
|
| 432 | } PktBuf;
|
| 433 |
|
| 434 |
|
| 435 | typedef struct _CardHandle {
|
| 436 | BYTE moduleName[16];
|
| 437 | CommonChars *common;
|
| 438 | } CardHandle;
|
| 439 |
|
| 440 |
|
| 441 | typedef struct _BindingsList {
|
| 442 | WORD numBindings;
|
| 443 | BYTE moduleName[2][16];
|
| 444 | } BindingsList;
|
| 445 |
|
| 446 |
|
| 447 | typedef struct _FailingModules {
|
| 448 | BYTE upperModuleName[16];
|
| 449 | BYTE lowerModuleName[16];
|
| 450 | } FailingModules;
|
| 451 |
|
| 452 |
|
| 453 | typedef union _HardwareAddress {
|
| 454 | BYTE bytes[6];
|
| 455 | WORD words[3];
|
| 456 | struct {
|
| 457 | BYTE bytes[6];
|
| 458 | } addr;
|
| 459 | } HardwareAddress;
|
| 460 |
|
| 461 |
|
| 462 | typedef struct _FddiHeader {
|
| 463 | BYTE frameControl;
|
| 464 | HardwareAddress etherDestHost;
|
| 465 | HardwareAddress etherSrcHost;
|
| 466 | } FddiHeader;
|
| 467 |
|
| 468 |
|
| 469 | typedef struct _EthernetIIHeader {
|
| 470 | HardwareAddress etherDestHost;
|
| 471 | HardwareAddress etherSrcHost;
|
| 472 | WORD etherType;
|
| 473 | } EthernetIIHeader;
|
| 474 |
|
| 475 |
|
| 476 | typedef struct _Ieee802Dot5Header {
|
| 477 | HardwareAddress etherDestHost;
|
| 478 | HardwareAddress etherSrcHost;
|
| 479 | BYTE routeInfo[30];
|
| 480 | } Ieee802Dot5Header;
|
| 481 |
|
| 482 |
|
| 483 | typedef struct _Ieee802Dot2SnapHeader {
|
| 484 | BYTE dsap; /* 0xAA */
|
| 485 | BYTE ssap; /* 0xAA */
|
| 486 | BYTE control; /* 3 */
|
| 487 | BYTE protocolId[5];
|
| 488 | } Ieee802Dot2SnapHeader;
|
| 489 |
|
| 490 |
|
| 491 | /*
|
| 492 | * Prototypes
|
| 493 | */
|
| 494 | extern char *NdisLastError (void);
|
| 495 | extern int NdisOpen (void);
|
| 496 | extern int NdisInit (int promis);
|
| 497 | extern int NdisRegisterAndBind (int promis);
|
| 498 | extern void NdisShutdown (void);
|
| 499 | extern void NdisCheckMacFeatures (struct _CardHandle *card);
|
| 500 | extern int NdisSendPacket (struct _PktBuf *pktBuf, int macId);
|
| 501 |
|
| 502 | /*
|
| 503 | * Assembly "glue" functions
|
| 504 | */
|
| 505 | extern int systemRequestGlue();
|
| 506 | extern int requestConfirmGlue();
|
| 507 | extern int transmitConfirmGlue();
|
| 508 | extern int receiveLookaheadGlue();
|
| 509 | extern int indicationCompleteGlue();
|
| 510 | extern int receiveChainGlue();
|
| 511 | extern int statusGlue();
|
| 512 |
|
| 513 | /*
|
| 514 | * IOCTL function
|
| 515 | */
|
| 516 | #ifdef __SMALL__
|
| 517 | extern int _far NdisGetLinkage (int handle, char *data, int size);
|
| 518 | #else
|
| 519 | extern int NdisGetLinkage (int handle, char *data, int size);
|
| 520 | #endif
|
| 521 |
|
| 522 | /*
|
| 523 | * NDIS callback handlers
|
| 524 | */
|
| 525 | CALLBACK (NdisSystemRequest (DWORD,DWORD, WORD, WORD, WORD));
|
| 526 | CALLBACK (NdisRequestConfirm ( WORD, WORD, WORD, WORD, WORD,WORD));
|
| 527 | CALLBACK (NdisTransmitConfirm ( WORD, WORD, WORD, WORD, WORD));
|
| 528 | CALLBACK (NdisReceiveLookahead ( WORD, WORD, WORD, BYTE*, BYTE*, WORD));
|
| 529 | CALLBACK (NdisReceiveChain ( WORD, WORD, WORD, struct _RxBufDescr*, BYTE*, WORD));
|
| 530 | CALLBACK (NdisStatusProc ( WORD, WORD, BYTE*, WORD,WORD));
|
| 531 | CALLBACK (NdisIndicationComplete( WORD, WORD));
|
| 532 |
|
| 533 | BYTE *NdisAllocStack (void);
|
| 534 | void NdisFreeStack (BYTE*);
|
| 535 |
|
| 536 | #ifdef __HIGHC__
|
| 537 | #define RENAME_ASM_SYM(x) pragma Alias(x,"@" #x "") /* prepend `@' */
|
| 538 | #define RENAME_C_SYM(x) pragma Alias(x,"_" #x "") /* prepend `_' */
|
| 539 |
|
| 540 | RENAME_ASM_SYM (systemRequestGlue);
|
| 541 | RENAME_ASM_SYM (requestConfirmGlue);
|
| 542 | RENAME_ASM_SYM (transmitConfirmGlue);
|
| 543 | RENAME_ASM_SYM (receiveLookaheadGlue);
|
| 544 | RENAME_ASM_SYM (indicationCompleteGlue);
|
| 545 | RENAME_ASM_SYM (receiveChainGlue);
|
| 546 | RENAME_ASM_SYM (statusGlue);
|
| 547 | RENAME_ASM_SYM (NdisGetLinkage);
|
| 548 | RENAME_C_SYM (NdisSystemRequest);
|
| 549 | RENAME_C_SYM (NdisRequestConfirm);
|
| 550 | RENAME_C_SYM (NdisTransmitConfirm);
|
| 551 | RENAME_C_SYM (NdisReceiveLookahead);
|
| 552 | RENAME_C_SYM (NdisIndicationComplete);
|
| 553 | RENAME_C_SYM (NdisReceiveChain);
|
| 554 | RENAME_C_SYM (NdisStatusProc);
|
| 555 | RENAME_C_SYM (NdisAllocStack);
|
| 556 | RENAME_C_SYM (NdisFreeStack);
|
| 557 | #endif
|
| 558 |
|
| 559 | #endif
|