//============================================================================= // Copyright (c) 1999 Microsoft Corporation // File: ifip.h // // Author: K.S.Lokesh (lokeshs@) 8-1-99 //============================================================================= #ifndef __IFIP_H #define __IFIP_H #define DBG1 0 //kslksl #define TCP_XMT_CHECKSUM_OFFLOAD 0x00000001 #define IP_XMT_CHECKSUM_OFFLOAD 0x00000002 #define TCP_RCV_CHECKSUM_OFFLOAD 0x00000004 #define IP_RCV_CHECKSUM_OFFLOAD 0x00000008 #define TCP_LARGE_SEND_OFFLOAD 0x00000010 // // IPSEC General Xmit\Recv capabilities // #define IPSEC_OFFLOAD_CRYPTO_ONLY 0x00000020 // Raw crypto mode supported #define IPSEC_OFFLOAD_AH_ESP 0x00000040 // Combined AH+ESP supported #define IPSEC_OFFLOAD_TPT_TUNNEL 0x00000080 // Combined Tpt+Tunnel supported #define IPSEC_OFFLOAD_V4_OPTIONS 0x00000100 // IPV4 Options supported #define IPSEC_OFFLOAD_QUERY_SPI 0x00000200 // Get SPI supported // // IPSEC AH Xmit\Recv capabilities // #define IPSEC_OFFLOAD_AH_XMT 0x00000400 // IPSEC supported on Xmit #define IPSEC_OFFLOAD_AH_RCV 0x00000800 // IPSEC supported on Rcv #define IPSEC_OFFLOAD_AH_TPT 0x00001000 // IPSEC transport mode supported #define IPSEC_OFFLOAD_AH_TUNNEL 0x00002000 // IPSEC tunnel mode supported #define IPSEC_OFFLOAD_AH_MD5 0x00004000 // MD5 supported as AH and ESP algo #define IPSEC_OFFLOAD_AH_SHA_1 0x00008000 // SHA_1 supported as AH and ESP algo // // IPSEC ESP Xmit\Recv capabilities // #define IPSEC_OFFLOAD_ESP_XMT 0x00010000 // IPSEC supported on Xmit #define IPSEC_OFFLOAD_ESP_RCV 0x00020000 // IPSEC supported on Rcv #define IPSEC_OFFLOAD_ESP_TPT 0x00040000 // IPSEC transport mode supported #define IPSEC_OFFLOAD_ESP_TUNNEL 0x00080000 // IPSEC tunnel mode supported #define IPSEC_OFFLOAD_ESP_DES 0x00100000 // DES supported as ESP algo #define IPSEC_OFFLOAD_ESP_DES_40 0x00200000 // DES40 supported as ESP algo #define IPSEC_OFFLOAD_ESP_3_DES 0x00400000 // 3DES supported as ESP algo #define IPSEC_OFFLOAD_ESP_NONE 0x00800000 // Null ESP supported as ESP algo #define IFIP_GUID \ {0x89d00931, 0x1e00, 0x11d3, {0x87, 0x38, 0x00, 0x60, 0x08, 0x37, 0xc7, 0x75} } #define IFIP_VERSION 1 #define ADD_FLAG 1 #define SET_FLAG 2 #define DEL_FLAG 4 #define RETURN_ERROR_OKAY(dwErr) \ return (dwErr) == NO_ERROR? ERROR_OKAY : dwErr; #if DBG1 #define DEBUG_PRINT_CONFIG(pRemoteIpInfo) {\ DisplayMessage(g_hModule, MSG_DEBUG_HDR);\ DisplayMessage(g_hModule,\ MSG_IPADDR_LIST,\ (pRemoteIpInfo)->pszwIpAddrList,\ (pRemoteIpInfo)->pszwSubnetMaskList);\ \ DisplayMessage(g_hModule,\ MSG_OPTIONS_LIST,\ (pRemoteIpInfo)->pszwOptionList);\ DisplayMessage(g_hModule, MSG_DEBUG_HDR);\ \ } #else #define DEBUG_PRINT_CONFIG(pRemoteIpInfo) #endif typedef enum _DISPLAY_TYPE { TYPE_ADDR=0x01, TYPE_GATEWAY=0x02, TYPE_IPADDR=0x03, TYPE_DNS=0x04, TYPE_WINS=0x08, TYPE_IFMETRIC=0x10, TYPE_DDNS=0x20, TYPE_IP_ALL=0xff, TYPE_OFFLOAD=0x0100 } DISPLAY_TYPE; typedef enum _REGISTER_MODE { REGISTER_NONE = 0, REGISTER_PRIMARY = 1, REGISTER_BOTH = 3, REGISTER_UNCHANGED = 0xff } REGISTER_MODE; NS_HELPER_START_FN IfIpStartHelper; NS_CONTEXT_DUMP_FN IfIpDump; FN_HANDLE_CMD IfIpHandleSetAddress; FN_HANDLE_CMD IfIpHandleSetDns; FN_HANDLE_CMD IfIpHandleSetWins; FN_HANDLE_CMD IfIpHandleAddAddress; FN_HANDLE_CMD IfIpHandleAddDns; FN_HANDLE_CMD IfIpHandleAddWins; FN_HANDLE_CMD IfIpHandleSetLmhosts; DWORD IfIpAddMany( IN PWCHAR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL *pbDone, IN DWORD Type ); DWORD IfIpSetDhcpModeMany( LPCWSTR pwszIfFriendlyName, GUID *pGuid, DWORD dwRegisterMode, DISPLAY_TYPE Type ); DWORD IfIpAddSetAddress( LPCWSTR pwszIfFriendlyName, GUID *pGuid, LPCWSTR pwszAddr, LPCWSTR pwszMask, DWORD Flags ); DWORD IfIpAddSetGateway( LPCWSTR pwszIfFriendlyName, GUID *pGuid, LPCWSTR pwszGateway, LPCWSTR pwszGatewayMetric, DWORD Flags ); FN_HANDLE_CMD IfIpHandleDelAddress; FN_HANDLE_CMD IfIpHandleDelDns; FN_HANDLE_CMD IfIpHandleDelWins; DWORD IfIpDelMany( IN PWCHAR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL *pbDone, IN DISPLAY_TYPE Type ); FN_HANDLE_CMD IfIpHandleShowConfig; FN_HANDLE_CMD IfIpHandleShowAddress; FN_HANDLE_CMD IfIpHandleShowOffload; FN_HANDLE_CMD IfIpHandleShowDns; FN_HANDLE_CMD IfIpHandleShowWins; FN_HANDLE_CMD IfIpHandleDelArpCache; FN_HANDLE_CMD IfIpHandleReset; DWORD ShowInfoIpaddr( ULONG IfIndex, GUID *pGuid, PWCHAR pFriendlyIfName ); DWORD IfIpShowMany( IN LPCWSTR pwszMachineName, IN PWCHAR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL *pbDone, IN DISPLAY_TYPE dtType ); DWORD IfIpShowAllInterfaceInfo( LPCWSTR pwszMachineName, DISPLAY_TYPE Type, HANDLE hFile ); DWORD IfIpHandleDelIpaddrEx( LPCWSTR wszIfFriendlyName, GUID *pGuid, LPCWSTR pwszIpAddr, LPCWSTR pwszGateway, ULONG Flags ); DWORD OpenDriver( HANDLE *Handle, LPWSTR DriverName ); NTSTATUS DoIoctl( HANDLE Handle, DWORD IoctlCode, PVOID Request, DWORD RequestSize, PVOID Response, PDWORD ResponseSize ); DWORD IfIpShowManyEx( LPCWSTR pwszMachineName, ULONG IfIndex, PWCHAR wszIfFriendlyName, GUID *guid, DISPLAY_TYPE dtType, HANDLE hFile ); DWORD IfIpShowManyExEx( LPCWSTR pwszMachineName, ULONG IfIndex, PWCHAR pFriendlyIfName, GUID *pGuid, ULONG Flags, HANDLE hFile ); DWORD IfIpShowInfoOffload( ULONG IfIndex, PWCHAR wszIfFriendlyName ); DWORD IfIpGetInfoOffload( ULONG IfIndex, PULONG Flags ); DWORD IfIpSetMany( IN PWCHAR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL *pbDone, IN DWORD Type ); DWORD IfIpAddSetDelMany( PWCHAR wszIfFriendlyName, GUID *pGuid, PWCHAR pwszAddress, DWORD dwIndex, DWORD dwRegisterMode, DISPLAY_TYPE Type, DWORD Flags ); #endif