/*++ Copyright (c) 1999 Microsoft Corporation Module Name: precomp.h Abstract: precompiled header --*/ #include #include #include #include // // set compiler warning settings // #pragma warning( disable: 4127 ) // allow while( 0 ) etc. #pragma warning( disable: 4221 ) #pragma warning( disable: 4204 ) // allow initializations for structs with variables #pragma warning( disable: 4201 ) // allow structs with no names #pragma warning( disable: 4245 ) // allow initialization time unsigned/signed mismatch #pragma warning( disable: 4232 ) // allow initialization of structs with fn ptrs from dllimport #pragma warning( disable: 4214 ) // allow bit fields in structs #include #include #include #include #include #include #include #include #include #include #include #include // // set compiler warning settings // #pragma warning( disable: 4127 ) // allow while( 0 ) etc. #pragma warning( disable: 4221 ) #pragma warning( disable: 4204 ) // allow initializations for structs with variables #pragma warning( disable: 4201 ) // allow structs with no names #pragma warning( disable: 4245 ) // allow initialization time unsigned/signed mismatch #pragma warning( disable: 4232 ) // allow initialization of structs with fn ptrs from dllimport #pragma warning( disable: 4214 ) // allow bit fields in structs #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning( disable: 4200 ) // allow zero sized arrays #include #include #include #include #include #pragma warning(disable:4001) #pragma warning(disable:4201) #pragma warning(disable:4214) #pragma warning(disable:4514) // // This structure has global information only // #define MaxHostNameSize 256 #define MaxDomainNameSize 256 #define MaxScopeIdSize 256 #define MaxPhysicalNameSize 256 #define MaxDeviceGuidName 256 #ifndef IPV4_ADDRESS_DEFINED typedef DWORD IPV4_ADDRESS; #endif typedef struct _INTERFACE_NETWORK_INFO { // // General device info // WCHAR DeviceGuidName[MaxDeviceGuidName]; DWORD IfType; CHAR PhysicalName[MaxPhysicalNameSize]; DWORD PhysicalNameLength; LPWSTR FriendlyName; LPWSTR ConnectionName; BOOL MediaDisconnected; // // Dhcp specific info // LPWSTR DhcpClassId; BOOL EnableDhcp; BOOL EnableAutoconfig; IPV4_ADDRESS DhcpServer; LONGLONG LeaseObtainedTime; // these are actually FILETIMEs but made them... LONGLONG LeaseExpiresTime; // ...LONGLONG to fix alignment pb on W64 (#120397) BOOL AutoconfigActive; // // Dns specific info // IPV4_ADDRESS *DnsServer; // network order ULONG nDnsServers; SOCKADDR_IN6 *Ipv6DnsServer; ULONG nIpv6DnsServers; WCHAR DnsSuffix[MaxDomainNameSize]; // // Wins specific Info // IPV4_ADDRESS *WinsServer; // network order ULONG nWinsServers; BOOL EnableNbtOverTcpip; // // Ip specific info: first ip is primary addr // IPV4_ADDRESS *IpAddress; // network order ULONG nIpAddresses; SOCKADDR_IN6 *Ipv6Address; ULONG nIpv6Addresses; IPV4_ADDRESS *IpMask; // network order ULONG nIpMasks; IPV4_ADDRESS *Router; // network order ULONG nRouters; SOCKADDR_IN6 *Ipv6Router; ULONG nIpv6Routers; } INTERFACE_NETWORK_INFO, *PINTERFACE_NETWORK_INFO; typedef struct _NETWORK_INFO { WCHAR HostName[MaxHostNameSize]; WCHAR DomainName[MaxDomainNameSize]; WCHAR ScopeId[MaxScopeIdSize]; ULONG NodeType; BOOL EnableRouting; BOOL EnableProxy; BOOL EnableDnsForNetbios; BOOL GlobalEnableAutoconfig; LPWSTR SuffixSearchList; // Multi_Sz string ULONG nInterfaces; PINTERFACE_NETWORK_INFO *IfInfo; } NETWORK_INFO, *PNETWORK_INFO; // // Node Type values // enum { NodeTypeUnknown = 0, NodeTypeBroadcast, NodeTypePeerPeer, NodeTypeMixed, NodeTypeHybrid }; // // IfType values // enum { IfTypeUnknown = 0, IfTypeOther, IfTypeEthernet, IfTypeTokenring, IfTypeFddi, IfTypeLoopback, IfTypePPP, IfTypeSlip, IfTypeTunnel, IfType1394 } IfTypeConstants; // // Internal error codes // enum { GlobalHostNameFailure = 0, GlobalDomainNameFailure = 2, GlobalEnableRouterFailure = 3, GlobalEnableDnsFailure = 4, GlobalIfTableFailure = 5, GlobalIfInfoFailure = 6, GlobalIfNameInfoFailure = 7, GlobalAddrTableFailure = 8, GlobalRouteTableFailure = 9, InterfaceUnknownType = 10, InterfaceUnknownFriendlyName = 11, InterfaceUnknownMediaStatus = 12, InterfaceUnknownTcpipDevice = 13, InterfaceOpenTcpipKeyReadFailure = 14, InterfaceDhcpValuesFailure = 15, InterfaceDnsValuesFailure = 16, InterfaceWinsValuesFailure = 17, InterfaceAddressValuesFailure = 18, InterfaceRouteValuesFailure = 19, NoSpecificError = 20, } InternalFailureCodes; // // routines exported from info.c // enum { OpenTcpipParmKey, OpenTcpipKey, OpenNbtKey } KeyTypeEnums; enum { OpenKeyForRead = 0x01, OpenKeyForWrite = 0x02 } AccessTypeEnums; DWORD OpenRegKey( IN LPCWSTR Device, IN DWORD KeyType, IN DWORD AccessType, OUT HKEY *phKey ); VOID FreeNetworkInfo( IN OUT PNETWORK_INFO NetInfo ); DWORD GetNetworkInformation( OUT PNETWORK_INFO *pNetInfo, IN OUT DWORD *InternalError ); // // exported by display.c // typedef struct _CMD_ARGS { LPWSTR All, Renew, Release, FlushDns, Register; LPWSTR DisplayDns, ShowClassId, SetClassId; LPWSTR Debug, Usage, UsageErr; } CMD_ARGS, *PCMD_ARGS; DWORD GetCommandArgConstants( IN OUT PCMD_ARGS Args ); DWORD FormatNetworkInfo( IN OUT LPWSTR Buffer, IN ULONG BufSize, IN PNETWORK_INFO NetInfo, IN DWORD Win32Error, IN DWORD InternalError, IN BOOL fVerbose, IN BOOL fDebug ); DWORD DumpMessage( IN LPWSTR Buffer, IN ULONG BufSize, IN ULONG MsgId, ... ); DWORD DumpMessageError( IN LPWSTR Buffer, IN ULONG BufSize, IN ULONG MsgId, IN ULONG_PTR Error, IN PVOID Arg OPTIONAL ); DWORD DumpErrorMessage( IN LPWSTR Buffer, IN ULONG BufSize, IN ULONG InternalError, IN ULONG Win32Error ); #ifdef __IPCFG_ENABLE_LOG__ extern DWORD dwTraceFlag; extern int TraceFunc(const char* fmt, ...); #define IPCFG_TRACE_TCPIP 0x01U #define IPCFG_TRACE(x,y) \ if (dwTraceFlag & x) { \ TraceFunc y; \ } #else #define IPCFG_TRACE(x,y) #endif