/* Copyright (c) 1998, Microsoft Corporation, all rights reserved Description: History: */ #ifndef _RASIPHLP__H_ #define _RASIPHLP__H_ #include #include #include #include #include #include #include #include #include #include "rasiphlp.h" #define REGKEY_TCPIP_NDISWANIP_W L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Adapters\\NdisWanIp" #define REGKEY_TCPIP_PARAM_W L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters" #define REGKEY_NETBT_PARAM_W L"System\\CurrentControlSet\\Services\\NetBT\\Parameters" #define REGKEY_INTERFACES_W L"Interfaces" #define REGVAL_ADAPTERGUID_W L"NetworkAdapterGUID" #define REGVAL_NAMESERVERLIST_W L"NameServerList" #define REGVAL_NETBIOSOPTIONS_W L"NetbiosOptions" #define REGVAL_DHCPIPADDRESS_W L"DhcpIPAddress" #define REGVAL_DHCPSUBNETMASK_W L"DhcpSubnetMask" #define REGVAL_DOMAIN_W L"Domain" #define REGVAL_NAMESERVER_W L"NameServer" #define REGVAL_IPCONFIG_W L"IpConfig" #define WCH_TCPIP_ L"Tcpip_" #define WCH_TCPIP_PARAM_INT_W L"Tcpip\\Parameters\\Interfaces\\" #define REGKEY_RAS_IP_PARAM_A "System\\CurrentControlSet\\Services\\RemoteAccess\\Parameters\\Ip" #define REGKEY_ADDR_POOL_A "System\\CurrentControlSet\\Services\\RemoteAccess\\Parameters\\Ip\\StaticAddressPool" #define REGKEY_BUILTIN_PARAM_A "System\\CurrentControlSet\\Services\\Rasman\\PPP\\ControlProtocols\\BuiltIn" #define REGVAL_FROM_A "From" #define REGVAL_TO_A "To" #define REGVAL_IPADDRESS_A "IpAddress" #define REGVAL_IPMASK_A "IpMask" #define REGVAL_USEDHCPADDRESSING_A "UseDhcpAddressing" #define REGVAL_SUPPRESSWINS_A "SuppressWINSNameServers" #define REGVAL_SUPPRESSDNS_A "SuppressDNSNameServers" #define REGVAL_WINSSERVER_A "WINSNameServer" #define REGVAL_WINSSERVERBACKUP_A "WINSNameServerBackup" #define REGVAL_DNSSERVERS_A "DNSNameServers" #define REGVAL_CHUNK_SIZE_A "InitialAddressPoolSize" #define REGVAL_ALLOW_NETWORK_ACCESS_A "AllowNetworkAccess" #define REGVAL_DISABLE_NETBT 2 #define HOST_MASK 0xffffffff #define ALL_NETWORKS_ROUTE 0x00000000 #define INVALID_INDEX 0xffffffff #define CLASSA_HBO_ADDR(a) (((a) & 0x80000000) == 0) #define CLASSB_HBO_ADDR(a) (((a) & 0xc0000000) == 0x80000000) #define CLASSC_HBO_ADDR(a) (((a) & 0xe0000000) == 0xc0000000) #define LOOPBACK_HBO_ADDR(a) (((a) & 0xFF000000) == 0x7F000000) #define INVALID_HBO_CLASS(x) (x >= 0xE0000000) #define CLASSA_HBO_ADDR_MASK 0xff000000 #define CLASSB_HBO_ADDR_MASK 0xffff0000 #define CLASSC_HBO_ADDR_MASK 0xffffff00 #define CLASSA_NBO_ADDR(a) (((*((uchar *)&(a))) & 0x80) == 0) #define CLASSB_NBO_ADDR(a) (((*((uchar *)&(a))) & 0xc0) == 0x80) #define CLASSC_NBO_ADDR(a) (((*((uchar *)&(a))) & 0xe0) == 0xc0) typedef struct _ADDR_POOL { struct _ADDR_POOL* pNext; // Next pool IPADDR hboFirstIpAddr; // First address in the pool IPADDR hboLastIpAddr; // Last address in the pool IPADDR hboMask; IPADDR hboNextIpAddr; // Next address to use from the pool } ADDR_POOL; typedef struct _REGISTRY_VALUES { BOOL fSuppressWINSNameServers; BOOL fSuppressDNSNameServers; DWORD dwChunkSize; BOOL fUseDhcpAddressing; IPADDR nboWINSNameServer1; IPADDR nboWINSNameServer2; IPADDR nboDNSNameServer1; IPADDR nboDNSNameServer2; BOOL fEnableRoute; BOOL fNICChosen; ADDR_POOL* pAddrPool; GUID guidChosenNIC; } REGVAL; extern REGVAL HelperRegVal; typedef DWORD (APIENTRY *DHCPNOTIFYCONFIGCHANGE)( LPWSTR ServerName, LPWSTR AdapterName, BOOL IsNewIpAddress, DWORD IpIndex, DWORD IpAddress, DWORD SubnetMask, SERVICE_ENABLE DhcpServiceEnabled ); extern DHCPNOTIFYCONFIGCHANGE PDhcpNotifyConfigChange; typedef DWORD (*DHCPLEASEIPADDRESS)( DWORD AdapterIpAddress, LPDHCP_CLIENT_UID ClientUID, DWORD DesiredIpAddress, LPDHCP_OPTION_LIST OptionList, LPDHCP_LEASE_INFO *LeaseInfo, LPDHCP_OPTION_INFO *OptionInfo ); extern DHCPLEASEIPADDRESS PDhcpLeaseIpAddress; typedef DWORD (*DHCPRENEWIPADDRESSLEASE)( DWORD AdapterIpAddress, LPDHCP_LEASE_INFO ClientLeaseInfo, LPDHCP_OPTION_LIST OptionList, LPDHCP_OPTION_INFO *OptionInfo ); extern DHCPRENEWIPADDRESSLEASE PDhcpRenewIpAddressLease; typedef DWORD (*DHCPRELEASEIPADDRESSLEASE)( DWORD AdapterIpAddress, LPDHCP_LEASE_INFO ClientLeaseInfo ); extern DHCPRELEASEIPADDRESSLEASE PDhcpReleaseIpAddressLease; typedef DWORD (*ALLOCATEANDGETIPADDRTABLEFROMSTACK)( OUT MIB_IPADDRTABLE **ppIpAddrTable, IN BOOL bOrder, IN HANDLE hHeap, IN DWORD dwFlags ); extern ALLOCATEANDGETIPADDRTABLEFROMSTACK PAllocateAndGetIpAddrTableFromStack; typedef DWORD (*SETPROXYARPENTRYTOSTACK)( IN DWORD dwAddress, IN DWORD dwMask, IN DWORD dwAdapterIndex, IN BOOL bAddEntry, IN BOOL bForceUpdate ); extern SETPROXYARPENTRYTOSTACK PSetProxyArpEntryToStack; typedef DWORD (*SETIPFORWARDENTRYTOSTACK)( IN PMIB_IPFORWARDROW pForwardRow ); extern SETIPFORWARDENTRYTOSTACK PSetIpForwardEntryToStack; typedef DWORD (*SETIPFORWARDENTRY)( IN PMIB_IPFORWARDROW pForwardRow ); extern SETIPFORWARDENTRY PSetIpForwardEntry; typedef DWORD (*DELETEIPFORWARDENTRY)( IN PMIB_IPFORWARDROW pForwardRow ); extern DELETEIPFORWARDENTRY PDeleteIpForwardEntry; typedef DWORD (*NHPALLOCATEANDGETINTERFACEINFOFROMSTACK)( OUT IP_INTERFACE_NAME_INFO **ppTable, OUT PDWORD pdwCount, IN BOOL bOrder, IN HANDLE hHeap, IN DWORD dwFlags ); extern NHPALLOCATEANDGETINTERFACEINFOFROMSTACK PNhpAllocateAndGetInterfaceInfoFromStack; typedef DWORD (*ALLOCATEANDGETIPFORWARDTABLEFROMSTACK)( OUT MIB_IPFORWARDTABLE **ppForwardTable, IN BOOL bOrder, IN HANDLE hHeap, IN DWORD dwFlags ); extern ALLOCATEANDGETIPFORWARDTABLEFROMSTACK PAllocateAndGetIpForwardTableFromStack; typedef DWORD (*GETADAPTERSINFO)( PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen ); extern GETADAPTERSINFO PGetAdaptersInfo; typedef DWORD (*GETPERADAPTERINFO)( ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen ); extern GETPERADAPTERINFO PGetPerAdapterInfo; typedef VOID (APIENTRY *ENABLEDHCPINFORMSERVER)( IN DWORD DhcpInformServer ); extern ENABLEDHCPINFORMSERVER PEnableDhcpInformServer; typedef VOID (APIENTRY *DISABLEDHCPINFORMSERVER)( VOID ); extern DISABLEDHCPINFORMSERVER PDisableDhcpInformServer; #endif // #ifndef _RASIPHLP__H_