windows-nt/Source/XPSP1/NT/net/atm/arp/atmarpc/ioctl.h
2020-09-26 16:20:57 +08:00

138 lines
3.2 KiB
C

/*++
Copyright (c) 1992-1996 Microsoft Corporation
Module Name:
ioctl.h
Abstract:
This file contains the ioctl declarations for the atmarp client.
Environment:
Kernel mode
Revision History:
8/14/1998 JosephJ Created
--*/
#ifndef _IOCTL_
#define _IOCTL_
#define ARP_CLIENT_DOS_DEVICE_NAME L"\\\\.\\ATMARPC"
#define ARPC_IOCTL_QUERY_VERSION CTL_CODE(FILE_DEVICE_NETWORK, 100, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ARPC_IOCTL_QUERY_INTERFACES CTL_CODE(FILE_DEVICE_NETWORK, 101, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ARPC_IOCTL_QUERY_INTERFACE CTL_CODE(FILE_DEVICE_NETWORK, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ARPC_IOCTL_QUERY_IPENTRY CTL_CODE(FILE_DEVICE_NETWORK, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ARPC_IOCTL_QUERY_ATMENTR CTL_CODE(FILE_DEVICE_NETWORK, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ARPC_IOCTL_ADD_ARPENTRY CTL_CODE(FILE_DEVICE_NETWORK, 105, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define ARPC_IOCTL_VERSION 0x0
//
// Sames as COUNTED_STRING defined in sdk\inc\ntfsprop.h
//
typedef struct
{
USHORT Length;
WCHAR Text[1];
} ATMARPC_INTERFACE_NAME, *PATMARPC_INTERFACE_NAME;
//
// All Ptrs are represented by offsets from the beginning of the structures.
//
typedef UNICODE_STRING INTERFACE_NAME, *PINTERFACE_NAME;
typedef struct
{
ATM_ADDRESS Addr;
ATM_ADDRESS SubAddr;
} ATM_ADDRESS_PAIR;
typedef struct
{
UINT NumberOfInterfaces;
ATMARPC_INTERFACE_NAME Interfaces; // The interfaces are strung together.
} ATMARPC_INTERFACES, *PATMARPC_INTERFACES;
typedef struct
{
enum
{
SIG_ATMARPC_INTERFACE_INFO,
SIG_ATMARPC_IP_INFO,
SIG_ATMARPC_ATM_INFO
} Sig;
UINT TotalSize;
UINT NeededSize;
UINT InterfaceNameOffset;
} ATMARPC_IOCTL_HEADER;
typedef struct
{
ATMARPC_IOCTL_HEADER Hdr;
ULONG State;
UINT NumLocalIPAddrs;
UINT LocalIPAddrsOffset;
UINT NumDestIPAddrs;
UINT DestIPAddrsOffset;
UINT NumDestAtmAddrs;
UINT DestAtmAddrsOffset;
} ATMARPC_INTERFACE_INFO;
#define ATMARPC_GET_LOCAL_IP_LIST(_pInterfaceInfo) \
((IPAddr*) ( ((BYTE*)(_pInterfaceInfo)) \
+ (_pInterfaceInfo)->LocalIPAddrsOffset))
#define ATMARPC_GET_DEST_IP_LIST(_pInterfaceInfo) \
((IPAddr*) ( ((BYTE*)(_pInterfaceInfo)) \
+ (_pInterfaceInfo)->DestIPAddrsOffset))
#define ATMARPC_GET_DEST_ATM_LIST(_pInterfaceInfo) \
((ATM_ADDRESS_PAIR*) ( ((BYTE*)(_pInterfaceInfo)) \
+ (_pInterfaceInfo)->DestAtmAddrsOffset))
typedef struct
{
ATMARPC_IOCTL_HEADER Hdr;
IPAddr IPAddress;
ULONG State;
UINT NumAtmEntries;
UINT AtmAddrsOffset;
} ATMARPC_DEST_IP_INFO;
#define ATMARPC_GET_DEST_ATM_LIST_FOR_IP(_pIPInfo) \
((ATM_ADDRESS_PAIR*) ( ((BYTE*)(_pIPInfo)) \
+ (_pIPInfo)->AtmAddrsOffset))
typedef struct
{
ATMARPC_IOCTL_HEADER Hdr;
ULONG State;
ATM_ADDRESS_PAIR AtmAddress;
UINT NumIPEntries;
UINT IPAddrsOffset;
} ATMARPC_DEST_ATM_INFO;
#define ATMARPC_GET_DEST_IP_LIST_FOR_ATM(_pAtmInfo) \
((IPAddr*) ( ((BYTE*)(_pAtmInfo)) \
+ (_pAtmInfo)->IPAddrsOffset))
typedef struct
{
ATMARPC_IOCTL_HEADER Hdr;
IPAddr IPAddress;
ATM_ADDRESS_PAIR AtmAddress;
} ATMARPC_ARP_COMMAND;
#endif // _IOCTL_