151 lines
4.3 KiB
C
151 lines
4.3 KiB
C
/*++
|
|
|
|
Copyright (c) 1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
driver.h
|
|
|
|
Abstract:
|
|
|
|
|
|
Environment:
|
|
|
|
kernel & User mode
|
|
|
|
Notes:
|
|
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
//
|
|
// Define the various device type values. Note that values used by Microsoft
|
|
// Corporation are in the range 0-32767, and 32768-65535 are reserved for use
|
|
// by customers.
|
|
//
|
|
|
|
#define FILE_DEVICE_IPXROUTER 0x00008000
|
|
|
|
|
|
|
|
//
|
|
// Macro definition for defining IOCTL and FSCTL function control codes. Note
|
|
// that function codes 0-2047 are reserved for Microsoft Corporation, and
|
|
// 2048-4095 are reserved for customers.
|
|
//
|
|
|
|
#define IPXROUTER_IOCTL_INDEX (ULONG)0x00000800
|
|
|
|
|
|
//
|
|
// Define our own private IOCTLs
|
|
//
|
|
|
|
#define IOCTL_IPXROUTER_SNAPROUTES CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+1,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_GETNEXTROUTE CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+2,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_CHECKNETNUMBER CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+3,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_SHOWNICINFO CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+4,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_ZERONICSTATISTICS CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+5,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_SHOWMEMSTATISTICS CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+6,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_GETWANINNACTIVITY CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+7,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_SETWANGLOBALADDRESS CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+8,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_IPXROUTER_DELETEWANGLOBALADDRESS CTL_CODE(FILE_DEVICE_IPXROUTER, \
|
|
IPXROUTER_IOCTL_INDEX+9,\
|
|
METHOD_BUFFERED, \
|
|
FILE_ANY_ACCESS)
|
|
|
|
|
|
//*** Nic Info Ioctl Data ***
|
|
|
|
#define SHOW_NIC_LAN 0
|
|
#define SHOW_NIC_WAN 1
|
|
|
|
#define SHOW_NIC_CLOSED 0
|
|
#define SHOW_NIC_CLOSING 1
|
|
#define SHOW_NIC_ACTIVE 2
|
|
#define SHOW_NIC_PENDING_OPEN 3
|
|
|
|
typedef struct _SHOW_NIC_INFO {
|
|
|
|
USHORT NicId;
|
|
USHORT DeviceType;
|
|
USHORT NicState;
|
|
UCHAR Network[4];
|
|
UCHAR Node[6];
|
|
USHORT TickCount;
|
|
ULONG StatBadReceived;
|
|
ULONG StatRipReceived;
|
|
ULONG StatRipSent;
|
|
ULONG StatRoutedReceived;
|
|
ULONG StatRoutedSent;
|
|
ULONG StatType20Received;
|
|
ULONG StatType20Sent;
|
|
} SHOW_NIC_INFO, *PSHOW_NIC_INFO;
|
|
|
|
//*** Memory Statistics Data ***
|
|
|
|
typedef struct _SHOW_MEM_STAT {
|
|
|
|
ULONG PeakPktAllocCount;
|
|
ULONG CurrentPktAllocCount;
|
|
ULONG CurrentPktPoolCount;
|
|
ULONG PacketSize;
|
|
} SHOW_MEM_STAT, *PSHOW_MEM_STAT;
|
|
|
|
//*** Wan Innactivity Data ***
|
|
// For the first call the NicId is set to 0xffff. The router will associate
|
|
// the remote node with a valid nic id, which will be used in subsequent calls.
|
|
|
|
typedef struct _GET_WAN_INNACTIVITY {
|
|
|
|
USHORT NicId;
|
|
UCHAR RemoteNode[6];
|
|
ULONG WanInnactivityCount;
|
|
} GET_WAN_INNACTIVITY, *PGET_WAN_INNACTIVITY;
|
|
|
|
//*** Wan Global Address Data ***
|
|
|
|
#define ERROR_IPXCP_NETWORK_NUMBER_IN_USE 1
|
|
#define ERROR_IPXCP_MEMORY_ALLOCATION_FAILURE 2
|
|
|
|
typedef struct _SET_WAN_GLOBAL_ADDRESS {
|
|
|
|
UCHAR WanGlobalNetwork[4];
|
|
ULONG ErrorCode;
|
|
} SET_WAN_GLOBAL_ADDRESS, *PSET_WAN_GLOBAL_ADDRESS;
|