/*++ Copyright (c) 1995 Microsoft Corporation Module Name: private\inc\ddwanarp.h Abstract: Revision History: Gurdeep Singh Pall 7/20/95 Created --*/ #ifndef __DDWANARP_H__ #define __DDWANARP_H__ #ifndef ANY_SIZE #define ANY_SIZE 1 #endif #define WANARP_SERVICE_NAME_W L"WANARP" #define WANARP_SERVICE_NAME_A "WANARP" #define WANARP_SERVICE_NAME_T TEXT("WANARP") ////////////////////////////////////////////////////////////////////////////// // // // Device Name - this string is the name of the device. It is the name // // that should be passed to NtCreateFile when accessing the device. // // // ////////////////////////////////////////////////////////////////////////////// #define DD_WANARP_DEVICE_NAME_W L"\\Device\\WANARP" #define DD_WANARP_DEVICE_NAME_A "\\Device\\WANARP" #define DD_WANARP_DEVICE_NAME_T TEXT("\\Device\\WANARP") ////////////////////////////////////////////////////////////////////////////// // // // Win32 Name - This is the (Unicode and NonUnicode) name exposed by Win32 // // subsystem for the device. It is the name that should be passed to // // CreateFile(Ex) when opening the device. // // // ////////////////////////////////////////////////////////////////////////////// #define WANARP_DOS_NAME_W L"\\\\.\\WANARP" #define WANARP_DOS_NAME_A "\\\\.\\WANARP" #define WANARP_DOS_NAME_T TEXT("\\\\.\\WANARP") #define FILE_DEVICE_WANARP 0x00009001 #define WANARP_MAX_DEVICE_NAME_LEN 256 #define _WANARP_CTL_CODE(function, method, access) \ CTL_CODE(FILE_DEVICE_WANARP, function, method, access) #define MIN_WANARP_CODE 0 #define NOTIFICATION_CODE (MIN_WANARP_CODE) #define ADD_INTERFACE_CODE (NOTIFICATION_CODE + 1) #define DELETE_INTERFACE_CODE (ADD_INTERFACE_CODE + 1) #define CONNECT_FAILED_CODE (DELETE_INTERFACE_CODE + 1) #define GET_IF_STATS_CODE (CONNECT_FAILED_CODE + 1) #define DELETE_ADAPTERS_CODE (GET_IF_STATS_CODE + 1) #define MAP_SERVER_ADAPTER_CODE (DELETE_ADAPTERS_CODE + 1) #define QUEUE_CODE (MAP_SERVER_ADAPTER_CODE + 1) #define MAX_WANARP_CODE (QUEUE_CODE + 1) typedef enum _DEMAND_DIAL_EVENT { DDE_CONNECT_INTERFACE = 0, DDE_INTERFACE_CONNECTED = 1, DDE_INTERFACE_DISCONNECTED = 2, DDE_CALLOUT_LINKUP = 3, DDE_CALLOUT_LINKDOWN = 4, }DEMAND_DIAL_EVENT, *PDEMAND_DIAL_EVENT; // // IOCTL_WANARP_NOTIFICATION // For DEMAND_DIAL_CONNECT_INTERFACE WANARP fills in as much of the packet // as can go into the following structure. The ulPacketLength denotes the whole // length of the packet and the consumer should copy out the // MIN(ulPacketLength, MAX_PACKET_COPY_SIZE); // #define IOCTL_WANARP_NOTIFICATION \ _WANARP_CTL_CODE(NOTIFICATION_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) #define MAX_PACKET_COPY_SIZE 128 #pragma warning(disable:4201) typedef struct _WANARP_NOTIFICATION { DEMAND_DIAL_EVENT ddeEvent; DWORD dwUserIfIndex; DWORD dwAdapterIndex; union { struct { DWORD dwPacketSrcAddr; DWORD dwPacketDestAddr; ULONG ulPacketLength; BYTE byPacketProtocol; BYTE rgbyPacket[MAX_PACKET_COPY_SIZE]; }; struct { DWORD dwLocalAddr; DWORD dwLocalMask; DWORD dwRemoteAddr; DWORD fDefaultRoute; WCHAR rgwcName[WANARP_MAX_DEVICE_NAME_LEN + 2]; }; }; }WANARP_NOTIFICATION, *PWANARP_NOTIFICATION; #pragma warning(default:4201) // // IOCTL_WANARP_ADD_INTERFACE // #define IOCTL_WANARP_ADD_INTERFACE \ _WANARP_CTL_CODE(ADD_INTERFACE_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) typedef struct _WANARP_ADD_INTERFACE_INFO { IN DWORD dwUserIfIndex; IN DWORD bCallinInterface; OUT DWORD dwAdapterIndex; OUT WCHAR rgwcDeviceName[WANARP_MAX_DEVICE_NAME_LEN + 2]; }WANARP_ADD_INTERFACE_INFO, *PWANARP_ADD_INTERFACE_INFO; // // The user index can never be 0 (or NULL) // #define WANARP_INVALID_IFINDEX 0 // // IOCTL_WANARP_DELETE_INTERFACE // #define IOCTL_WANARP_DELETE_INTERFACE \ _WANARP_CTL_CODE(DELETE_INTERFACE_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) typedef struct _WANARP_DELETE_INTERFACE_INFO { IN DWORD dwUserIfIndex; }WANARP_DELETE_INTERFACE_INFO, *PWANARP_DELETE_INTERFACE_INFO; // // IOCTL_WANARP_CONNECT_FAILED // #define IOCTL_WANARP_CONNECT_FAILED \ _WANARP_CTL_CODE(CONNECT_FAILED_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) typedef struct _WANARP_CONNECT_FAILED_INFO { IN DWORD dwUserIfIndex; }WANARP_CONNECT_FAILED_INFO, *PWANARP_CONNECT_FAILED_INFO; // // IOCTL_WANARP_GET_IF_STATS // #define IOCTL_WANARP_GET_IF_STATS \ _WANARP_CTL_CODE(GET_IF_STATS_CODE,METHOD_BUFFERED,FILE_READ_ACCESS) typedef struct _WANARP_GET_IF_STATS_INFO { IN DWORD dwUserIfIndex; IFEntry ifeInfo; }WANARP_GET_IF_STATS_INFO, *PWANARP_GET_IF_STATS_INFO; // // IOCTL_WANARP_DELETE_ADAPTERS // #define IOCTL_WANARP_DELETE_ADAPTERS \ _WANARP_CTL_CODE(DELETE_ADAPTERS_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) typedef struct _WANARP_DELETE_ADAPTERS_INFO { // // IN: Number of adapters to delete // OUT: If == IN, then number of adapters deleted // If < IN, then number of adapters that can be deleted // IN OUT ULONG ulNumAdapters; OUT GUID rgAdapterGuid[ANY_SIZE]; }WANARP_DELETE_ADAPTERS_INFO, *PWANARP_DELETE_ADAPTERS_INFO; // // IOCTL_WANARP_MAP_SERVER_ADAPTER // #define IOCTL_WANARP_MAP_SERVER_ADAPTER \ _WANARP_CTL_CODE(MAP_SERVER_ADAPTER_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) typedef struct _WANARP_MAP_SERVER_ADAPTER_INFO { IN DWORD fMap; OUT DWORD dwAdapterIndex; }WANARP_MAP_SERVER_ADAPTER_INFO, *PWANARP_MAP_SERVER_ADAPTER_INFO; // // IOCTL_WANARP_QUEUE // #define IOCTL_WANARP_QUEUE \ _WANARP_CTL_CODE(QUEUE_CODE,METHOD_BUFFERED,FILE_WRITE_ACCESS) typedef struct _WANARP_IF_INFO { GUID InterfaceGuid; DWORD dwAdapterIndex; DWORD dwLocalAddr; DWORD dwLocalMask; DWORD dwRemoteAddr; }WANARP_IF_INFO, *PWANARP_IF_INFO; typedef struct _WANARP_QUEUE_INFO { IN DWORD fQueue; OUT ULONG ulNumCallout; OUT WANARP_IF_INFO rgIfInfo[ANY_SIZE]; }WANARP_QUEUE_INFO, *PWANARP_QUEUE_INFO; // // IP Struct passed up in lineup indication // typedef enum _DIAL_USAGE { DU_CALLIN = 0, DU_CALLOUT = 1, DU_ROUTER = 2 }DIAL_USAGE, *PDIAL_USAGE; typedef struct _IP_WAN_LINKUP_INFO { DIAL_USAGE duUsage; DWORD dwUserIfIndex; DWORD dwLocalAddr; DWORD dwLocalMask; DWORD dwRemoteAddr; DWORD fFilterNetBios; DWORD fDefaultRoute; }IP_WAN_LINKUP_INFO, *PIP_WAN_LINKUP_INFO; #define WANARP_RECONFIGURE_VERSION (DWORD)0x01 typedef enum _WANARP_RECONFIGURE_CODE { WRC_ADD_INTERFACES = 1, WRC_TCP_WINDOW_SIZE_UPDATE = 2, }WANARP_RECONFIGURE_CODE, *PWANARP_RECONFIGURE_CODE; typedef struct _WANARP_RECONFIGURE_INFO { // // Version of this request // DWORD dwVersion; // // Code, see above // WANARP_RECONFIGURE_CODE wrcOperation; // // Number of Guids in the array below // ULONG ulNumInterfaces; // // Guids themselves // GUID rgInterfaces[ANYSIZE_ARRAY]; }WANARP_RECONFIGURE_INFO, *PWANARP_RECONFIGURE_INFO; #endif // _WANARPIF_H_