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