|
|
/*++
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_
|