194 lines
4.3 KiB
C
194 lines
4.3 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1992-1996 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
ioctl.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This file contains the ioctl declarations for the atmarp server.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Jameel Hyder (jameelh@microsoft.com) July 1996
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
Kernel mode
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _IOCTL_
|
||
|
#define _IOCTL_
|
||
|
|
||
|
#define ARP_SERVER_DEVICE_NAME L"\\Device\\AtmArpServer"
|
||
|
#define ARP_SERVER_DOS_DEVICE_NAME L"\\\\.\\AtmArpServer"
|
||
|
#define ARP_SERVER_SYMBOLIC_NAME L"\\DosDevices\\AtmArpServer"
|
||
|
|
||
|
#define ARPS_IOCTL_QUERY_INTERFACES CTL_CODE(FILE_DEVICE_NETWORK, 100, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_FLUSH_ARPCACHE CTL_CODE(FILE_DEVICE_NETWORK, 101, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_QUERY_ARPCACHE CTL_CODE(FILE_DEVICE_NETWORK, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_ADD_ARPENTRY CTL_CODE(FILE_DEVICE_NETWORK, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_QUERY_IP_FROM_ATM CTL_CODE(FILE_DEVICE_NETWORK, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_QUERY_ATM_FROM_IP CTL_CODE(FILE_DEVICE_NETWORK, 105, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
|
||
|
#define ARPS_IOCTL_QUERY_ARP_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_QUERY_MARSCACHE CTL_CODE(FILE_DEVICE_NETWORK, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_QUERY_MARS_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK, 111, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
#define ARPS_IOCTL_RESET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK, 112, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||
|
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
QUERY_IP_FROM_ATM,
|
||
|
QUERY_ATM_FROM_IP,
|
||
|
ADD_ARP_ENTRY
|
||
|
} OPERATION;
|
||
|
|
||
|
//
|
||
|
// All Ptrs are represented by offsets from the beginning of the structures.
|
||
|
//
|
||
|
typedef UNICODE_STRING INTERFACE_NAME, *PINTERFACE_NAME;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
IPADDR IpAddr;
|
||
|
ATM_ADDRESS AtmAddress;
|
||
|
ATM_ADDRESS SubAddress;
|
||
|
} ARPENTRY, *PARPENTRY;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
UINT NumberOfInterfaces;
|
||
|
INTERFACE_NAME Interfaces[1];
|
||
|
} INTERFACES, *PINTERFACES;
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
INTERFACE_NAME Name;
|
||
|
ARPENTRY ArpEntry;
|
||
|
} IOCTL_QA_ENTRY, *PIOCTL_QA_ENTRY;
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
struct QUERY_ARP_CACHE_INPUT_PARAMS
|
||
|
{
|
||
|
UINT StartEntryIndex;
|
||
|
INTERFACE_NAME Name;
|
||
|
};
|
||
|
struct QUERY_ARP_CACHE_OUTPUT_PARAMS
|
||
|
{
|
||
|
UINT TotalNumberOfEntries;
|
||
|
UINT NumberOfEntriesInBuffer;
|
||
|
ARPENTRY Entries[1];
|
||
|
} Entries;
|
||
|
} IOCTL_QUERY_CACHE, *PIOCTL_QUERY_CACHE;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
UINT ElapsedSeconds;
|
||
|
UINT TotalRecvPkts;
|
||
|
UINT DiscardedRecvPkts;
|
||
|
|
||
|
UINT CurrentArpEntries;
|
||
|
UINT MaxArpEntries;
|
||
|
UINT Acks;
|
||
|
UINT Naks;
|
||
|
UINT CurrentClientVCs;
|
||
|
UINT MaxClientVCs;
|
||
|
UINT TotalActiveVCs;
|
||
|
UINT TotalIncomingCalls; // for both arps and mars
|
||
|
UINT FailedIncomingCalls; // for both arps and mars
|
||
|
|
||
|
} ARP_SERVER_STATISTICS, *PARP_SERVER_STATISTICS;
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
UINT ElapsedSeconds;
|
||
|
UINT TotalRecvPkts;
|
||
|
UINT DiscardedRecvPkts;
|
||
|
|
||
|
UINT TotalMCDataPkts;
|
||
|
UINT DiscardedMCDataPkts;
|
||
|
UINT ReflectedMCDataPkts;
|
||
|
|
||
|
UINT CurrentClusterMembers;
|
||
|
UINT MaxClusterMembers;
|
||
|
UINT TotalCCVCAddParties;
|
||
|
UINT FailedCCVCAddParties;
|
||
|
|
||
|
UINT RegistrationRequests;
|
||
|
UINT FailedRegistrations;
|
||
|
|
||
|
UINT TotalJoins;
|
||
|
UINT FailedJoins;
|
||
|
UINT DuplicateJoins;
|
||
|
UINT SuccessfulVCMeshJoins;
|
||
|
UINT TotalLeaves;
|
||
|
UINT FailedLeaves;
|
||
|
|
||
|
UINT TotalRequests;
|
||
|
UINT Naks;
|
||
|
UINT VCMeshAcks;
|
||
|
UINT MCSAcks;
|
||
|
|
||
|
UINT CurrentGroups; // vc-mesh
|
||
|
UINT MaxGroups; // vc-mesh
|
||
|
UINT CurrentPromiscuous;
|
||
|
UINT MaxPromiscuous;
|
||
|
UINT MaxAddressesPerGroup;
|
||
|
|
||
|
} MARS_SERVER_STATISTICS, *PMARS_SERVER_STATISTICS;
|
||
|
|
||
|
//
|
||
|
// MARS-specific entries.
|
||
|
//
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
IPADDR IpAddr;
|
||
|
ULONG Flags; // One or more MARSENTRY_* flags below
|
||
|
ULONG NumAtmAddresses;
|
||
|
ULONG OffsetAtmAddresses; // From the start of THIS structure.
|
||
|
// NOTE: we do not report subaddresses
|
||
|
// Will be 0 if there are no addresses
|
||
|
// present in the buffer (typically
|
||
|
// because there is not enough space
|
||
|
// to store them all).
|
||
|
|
||
|
} MARSENTRY, *PMARSENTRY;
|
||
|
|
||
|
#define MARSENTRY_MCS_SERVED 0x1 // Group is MCS served
|
||
|
|
||
|
#define SIG_MARSENTRY 0xf69052f5
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
struct QUERY_MARS_CACHE_INPUT_PARAMS
|
||
|
{
|
||
|
UINT StartEntryIndex;
|
||
|
INTERFACE_NAME Name;
|
||
|
};
|
||
|
|
||
|
struct QUERY_MARS_CACHE_OUTPUT_PARAMS
|
||
|
{
|
||
|
ULONG Sig; // Set to SIG_MARSENTRY
|
||
|
UINT TotalNumberOfEntries;
|
||
|
UINT NumberOfEntriesInBuffer;
|
||
|
MARSENTRY Entries[1];
|
||
|
|
||
|
} MarsCache;
|
||
|
|
||
|
} IOCTL_QUERY_MARS_CACHE, *PIOCTL_QUERY_MARS_CACHE;
|
||
|
|
||
|
#endif // _IOCTL_
|
||
|
|
||
|
|