⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ndis2.h

📁 libcap是常用的linux抓包程序,属于open source项目.
💻 H
📖 第 1 页 / 共 2 页
字号:
/* 
 * Copyright (c) 1993,1994
 *      Texas A&M University.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by Texas A&M University
 *      and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * Developers:
 *             David K. Hess, Douglas Lee Schales, David R. Safford
 *
 * Heavily modified for Metaware HighC + GNU C 2.8+
 *             Gisle Vanem 1998
 */

#ifndef __PCAP_NDIS_H
#define __PCAP_NDIS_H

#if defined (__HIGHC__)
  #define pascal          _CC(_CALLEE_POPS_STACK & ~_REVERSE_PARMS) /* calling convention */
  #define CALLBACK(foo)   pascal WORD foo
  #define PAS_PTR(x,arg)  typedef FAR WORD pascal (*x) arg
  #define GUARD()         _inline (0x9C,0xFA)   /* pushfd, cli */
  #define UNGUARD()       _inline (0x9D)        /* popfd */
  #define FAR             _far

#elif defined(__GNUC__)
  #define CALLBACK(foo)   WORD foo __attribute__((stdcall))
  #define PAS_PTR(x,arg)  typedef WORD (*x) arg __attribute__((stdcall))
  #define GUARD()         __asm__ __volatile__ ("pushfd; cli")
  #define UNGUARD()       __asm__ __volatile__ ("popfd")
  #define FAR

#elif defined (__TURBOC__)
  #define CALLBACK(foo)   WORD pascal foo
  #define PAS_PTR(x,arg)  typedef WORD pascal (_far *x) arg
  #define GUARD()         _asm { pushf; cli }
  #define UNGUARD()       _asm { popf }
  #define FAR             _far

#elif defined (__WATCOMC__)
  #define CALLBACK(foo)   WORD pascal foo
  #define PAS_PTR(x,arg)  typedef WORD pascal (_far *x) arg
  #define GUARD()         _disable()
  #define UNGUARD()       _enable()
  #define FAR             _far

#else
  #error Unsupported compiler
#endif


/*
 *  Forwards
 */
struct _ReqBlock;
struct _TxBufDescr;
struct _TDBufDescr;

/*
 * Protocol Manager API
 */
PAS_PTR (ProtMan, (struct _ReqBlock FAR*, WORD));

/*
 * System request
 */
PAS_PTR (SystemRequest, (DWORD, DWORD, WORD, WORD, WORD));

/*
 * MAC API
 */
PAS_PTR (TransmitChain, (WORD, WORD, struct _TxBufDescr FAR*, WORD));
PAS_PTR (TransferData,  (WORD*,WORD, struct _TDBufDescr FAR*, WORD));
PAS_PTR (Request,       (WORD, WORD, WORD, DWORD, WORD, WORD));
PAS_PTR (ReceiveRelease,(WORD, WORD));
PAS_PTR (IndicationOn,  (WORD));
PAS_PTR (IndicationOff, (WORD));


typedef enum {
        HARDWARE_NOT_INSTALLED  = 0,
        HARDWARE_FAILED_DIAG    = 1,
        HARDWARE_FAILED_CONFIG  = 2,
        HARDWARE_HARD_FAULT     = 3,
        HARDWARE_SOFT_FAULT     = 4,
        HARDWARE_OK             = 7,
        HARDWARE_MASK           = 0x0007,
        MAC_BOUND               = 0x0008,
        MAC_OPEN                = 0x0010,
        DIAG_IN_PROGRESS        = 0x0020
      } NdisMacStatus;

typedef enum {
        STATUS_RING_STATUS      = 1,
        STATUS_ADAPTER_CHECK    = 2,
        STATUS_START_RESET      = 3,
        STATUS_INTERRUPT        = 4,
        STATUS_END_RESET        = 5
      } NdisStatus;

typedef enum {
        FILTER_DIRECTED         = 1,
        FILTER_BROADCAST        = 2,
        FILTER_PROMISCUOUS      = 4,
        FILTER_SOURCE_ROUTE     = 8
      } NdisPacketFilter;

typedef enum {
        REQ_INITIATE_DIAGNOSTICS     = 1,
        REQ_READ_ERROR_LOG           = 2,
        REQ_SET_STATION_ADDRESS      = 3,
        REQ_OPEN_ADAPTER             = 4,
        REQ_CLOSE_ADAPTER            = 5,
        REQ_RESET_MAC                = 6,
        REQ_SET_PACKET_FILTER        = 7,
        REQ_ADD_MULTICAST_ADDRESS    = 8,
        REQ_DELETE_MULTICAST_ADDRESS = 9,
        REQ_UPDATE_STATISTICS        = 10,
        REQ_CLEAR_STATISTICS         = 11,
        REQ_INTERRUPT_REQUEST        = 12,
        REQ_SET_FUNCTIONAL_ADDRESS   = 13,
        REQ_SET_LOOKAHEAD            = 14
      } NdisGeneralRequest;

typedef enum {
        SF_BROADCAST             = 0x00000001L,
        SF_MULTICAST             = 0x00000002L,
        SF_FUNCTIONAL            = 0x00000004L,
        SF_PROMISCUOUS           = 0x00000008L,
        SF_SOFT_ADDRESS          = 0x00000010L,
        SF_STATS_CURRENT         = 0x00000020L,
        SF_INITIATE_DIAGS        = 0x00000040L,
        SF_LOOPBACK              = 0x00000080L,
        SF_RECEIVE_CHAIN         = 0x00000100L,
        SF_SOURCE_ROUTING        = 0x00000200L,
        SF_RESET_MAC             = 0x00000400L,
        SF_OPEN_CLOSE            = 0x00000800L,
        SF_INTERRUPT_REQUEST     = 0x00001000L,
        SF_SOURCE_ROUTING_BRIDGE = 0x00002000L,
        SF_VIRTUAL_ADDRESSES     = 0x00004000L
      } NdisMacServiceFlags;

typedef enum {
        REQ_INITIATE_BIND        = 1,
        REQ_BIND                 = 2,
        REQ_INITIATE_PREBIND     = 3,
        REQ_INITIATE_UNBIND      = 4,
        REQ_UNBIND               = 5
      } NdisSysRequest;

typedef enum  {
        PM_GET_PROTOCOL_MANAGER_INFO      = 1,
        PM_REGISTER_MODULE                = 2,
        PM_BIND_AND_START                 = 3,
        PM_GET_PROTOCOL_MANAGER_LINKAGE   = 4,
        PM_GET_PROTOCOL_INI_PATH          = 5,
        PM_REGISTER_PROTOCOL_MANAGER_INFO = 6,
        PM_INIT_AND_REGISTER              = 7,
        PM_UNBIND_AND_STOP                = 8,
        PM_BIND_STATUS                    = 9,
        PM_REGISTER_STATUS                = 10
      } NdisProtManager;


typedef enum {
        ERR_SUCCESS                      = 0x00,
        ERR_WAIT_FOR_RELEASE             = 0x01,
        ERR_REQUEST_QUEUED               = 0x02,
        ERR_FRAME_NOT_RECOGNIZED         = 0x03,
        ERR_FRAME_REJECTED               = 0x04,
        ERR_FORWARD_FRAME                = 0x05,
        ERR_OUT_OF_RESOURCE              = 0x06,
        ERR_INVALID_PARAMETER            = 0x07,
        ERR_INVALID_FUNCTION             = 0x08,
        ERR_NOT_SUPPORTED                = 0x09,
        ERR_HARDWARE_ERROR               = 0x0A,
        ERR_TRANSMIT_ERROR               = 0x0B,
        ERR_NO_SUCH_DESTINATION          = 0x0C,
        ERR_BUFFER_TOO_SMALL             = 0x0D,
        ERR_ALREADY_STARTED              = 0x20,
        ERR_INCOMPLETE_BINDING           = 0x21,
        ERR_DRIVER_NOT_INITIALIZED       = 0x22,
        ERR_HARDWARE_NOT_FOUND           = 0x23,
        ERR_HARDWARE_FAILURE             = 0x24,
        ERR_CONFIGURATION_FAILURE        = 0x25,
        ERR_INTERRUPT_CONFLICT           = 0x26,
        ERR_INCOMPATIBLE_MAC             = 0x27,
        ERR_INITIALIZATION_FAILED        = 0x28,
        ERR_NO_BINDING                   = 0x29,
        ERR_NETWORK_MAY_NOT_BE_CONNECTED = 0x2A,
        ERR_INCOMPATIBLE_OS_VERSION      = 0x2B,
        ERR_ALREADY_REGISTERED           = 0x2C,
        ERR_PATH_NOT_FOUND               = 0x2D,
        ERR_INSUFFICIENT_MEMORY          = 0x2E,
        ERR_INFO_NOT_FOUND               = 0x2F,
        ERR_GENERAL_FAILURE              = 0xFF
      } NdisError;

#define NDIS_PARAM_INTEGER   0
#define NDIS_PARAM_STRING    1

#define NDIS_TX_BUF_LENGTH   8
#define NDIS_TD_BUF_LENGTH   1
#define NDIS_RX_BUF_LENGTH   8

#define NDIS_PTR_PHYSICAL    0
#define NDIS_PTR_VIRTUAL     2

#define NDIS_PATH    "PROTMAN$"


typedef struct _CommonChars {
        WORD  tableSize;
        BYTE  majorNdisVersion;        /* 2 - Latest version */
        BYTE  minorNdisVersion;        /* 0                  */
        WORD  reserved1;
        BYTE  majorModuleVersion;
        BYTE  minorModuleVersion;
        DWORD moduleFlags;
        /* 0 - Binding at upper boundary supported
         * 1 - Binding at lower boundary supported
         * 2 - Dynamically bound.
         * 3-31 - Reserved, must be zero.
         */
        BYTE  moduleName[16];
        BYTE  protocolLevelUpper;
        /* 1 - MAC
         * 2 - Data Link
         * 3 - Network
         * 4 - Transport
         * 5 - Session
         * -1 - Not specified
         */
        BYTE  interfaceUpper;
        BYTE  protocolLevelLower;
        /* 0 - Physical
         * 1 - MAC
         * 2 - Data Link
         * 3 - Network
         * 4 - Transport
         * 5 - Session
         * -1 - Not specified
         */
        BYTE  interfaceLower;
        WORD  moduleId;
        WORD  moduleDS;
        SystemRequest systemRequest;
        BYTE *serviceChars;
        BYTE *serviceStatus;
        BYTE *upperDispatchTable;
        BYTE *lowerDispatchTable;
        BYTE *reserved2;            /* Must be NULL */
        BYTE *reserved3;            /* Must be NULL */
      } CommonChars;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -