IPTypes.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
- /*++
- Copyright (c) Microsoft Corporation. All rights reserved.
- Module Name:
- iptypes.h
- --*/
- #ifndef IP_TYPES_INCLUDED
- #define IP_TYPES_INCLUDED
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #pragma warning(disable:4201)
- #include <time.h>
- // Definitions and structures used by getnetworkparams and getadaptersinfo apis
- #define MAX_ADAPTER_DESCRIPTION_LENGTH 128 // arb.
- #define MAX_ADAPTER_NAME_LENGTH 256 // arb.
- #define MAX_ADAPTER_ADDRESS_LENGTH 8 // arb.
- #define DEFAULT_MINIMUM_ENTITIES 32 // arb.
- #define MAX_HOSTNAME_LEN 128 // arb.
- #define MAX_DOMAIN_NAME_LEN 128 // arb.
- #define MAX_SCOPE_ID_LEN 256 // arb.
- //
- // types
- //
- // Node Type
- #define BROADCAST_NODETYPE 1
- #define PEER_TO_PEER_NODETYPE 2
- #define MIXED_NODETYPE 4
- #define HYBRID_NODETYPE 8
- //
- // IP_ADDRESS_STRING - store an IP address as a dotted decimal string
- //
- typedef struct {
- char String[4 * 4];
- } IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
- //
- // IP_ADDR_STRING - store an IP address with its corresponding subnet mask,
- // both as dotted decimal strings
- //
- typedef struct _IP_ADDR_STRING {
- struct _IP_ADDR_STRING* Next;
- IP_ADDRESS_STRING IpAddress;
- IP_MASK_STRING IpMask;
- DWORD Context;
- } IP_ADDR_STRING, *PIP_ADDR_STRING;
- //
- // ADAPTER_INFO - per-adapter information. All IP addresses are stored as
- // strings
- //
- typedef struct _IP_ADAPTER_INFO {
- struct _IP_ADAPTER_INFO* Next;
- DWORD ComboIndex;
- char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
- char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
- UINT AddressLength;
- BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
- DWORD Index;
- UINT Type;
- UINT DhcpEnabled;
- PIP_ADDR_STRING CurrentIpAddress;
- IP_ADDR_STRING IpAddressList;
- IP_ADDR_STRING GatewayList;
- IP_ADDR_STRING DhcpServer;
- BOOL HaveWins;
- IP_ADDR_STRING PrimaryWinsServer;
- IP_ADDR_STRING SecondaryWinsServer;
- time_t LeaseObtained;
- time_t LeaseExpires;
- } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
- #ifdef _WINSOCK2API_
- //
- // The following types require Winsock2.
- //
- typedef enum {
- IpPrefixOriginOther = 0,
- IpPrefixOriginManual,
- IpPrefixOriginWellKnown,
- IpPrefixOriginDhcp,
- IpPrefixOriginRouterAdvertisement,
- } IP_PREFIX_ORIGIN;
- typedef enum {
- IpSuffixOriginOther = 0,
- IpSuffixOriginManual,
- IpSuffixOriginWellKnown,
- IpSuffixOriginDhcp,
- IpSuffixOriginLinkLayerAddress,
- IpSuffixOriginRandom,
- } IP_SUFFIX_ORIGIN;
- typedef enum {
- IpDadStateInvalid = 0,
- IpDadStateTentative,
- IpDadStateDuplicate,
- IpDadStateDeprecated,
- IpDadStatePreferred,
- } IP_DAD_STATE;
- typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
- union {
- ULONGLONG Alignment;
- struct {
- ULONG Length;
- DWORD Flags;
- };
- };
- struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
- SOCKET_ADDRESS Address;
- IP_PREFIX_ORIGIN PrefixOrigin;
- IP_SUFFIX_ORIGIN SuffixOrigin;
- IP_DAD_STATE DadState;
- ULONG ValidLifetime;
- ULONG PreferredLifetime;
- ULONG LeaseLifetime;
- } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
- typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
- union {
- ULONGLONG Alignment;
- struct {
- ULONG Length;
- DWORD Flags;
- };
- };
- struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
- SOCKET_ADDRESS Address;
- } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
- typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
- union {
- ULONGLONG Alignment;
- struct {
- ULONG Length;
- DWORD Flags;
- };
- };
- struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
- SOCKET_ADDRESS Address;
- } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
- //
- // Per-address Flags
- //
- #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x01
- #define IP_ADAPTER_ADDRESS_TRANSIENT 0x02
- typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
- union {
- ULONGLONG Alignment;
- struct {
- ULONG Length;
- DWORD Reserved;
- };
- };
- struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
- SOCKET_ADDRESS Address;
- } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
- //
- // Per-adapter Flags
- //
- #define IP_ADAPTER_DDNS_ENABLED 0x01
- #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x02
- #define IP_ADAPTER_DHCP_ENABLED 0x04
- //
- // OperStatus values from RFC 2863
- //
- typedef enum {
- IfOperStatusUp = 1,
- IfOperStatusDown,
- IfOperStatusTesting,
- IfOperStatusUnknown,
- IfOperStatusDormant,
- IfOperStatusNotPresent,
- IfOperStatusLowerLayerDown
- } IF_OPER_STATUS;
- typedef struct _IP_ADAPTER_ADDRESSES {
- union {
- ULONGLONG Alignment;
- struct {
- ULONG Length;
- DWORD IfIndex;
- };
- };
- struct _IP_ADAPTER_ADDRESSES *Next;
- PCHAR AdapterName;
- PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
- PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
- PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
- PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
- PWCHAR DnsSuffix;
- PWCHAR Description;
- PWCHAR FriendlyName;
- BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
- DWORD PhysicalAddressLength;
- DWORD Flags;
- DWORD Mtu;
- DWORD IfType;
- IF_OPER_STATUS OperStatus;
- } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
- //
- // Flags used as argument to GetAdaptersAddresses()
- //
- #define GAA_FLAG_SKIP_UNICAST 0x0001
- #define GAA_FLAG_SKIP_ANYCAST 0x0002
- #define GAA_FLAG_SKIP_MULTICAST 0x0004
- #define GAA_FLAG_SKIP_DNS_SERVER 0x0008
- #endif /* _WINSOCK2API_ */
- //
- // IP_PER_ADAPTER_INFO - per-adapter IP information such as DNS server list.
- //
- typedef struct _IP_PER_ADAPTER_INFO {
- UINT AutoconfigEnabled;
- UINT AutoconfigActive;
- PIP_ADDR_STRING CurrentDnsServer;
- IP_ADDR_STRING DnsServerList;
- } IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
- //
- // FIXED_INFO - the set of IP-related information which does not depend on DHCP
- //
- typedef struct {
- char HostName[MAX_HOSTNAME_LEN + 4] ;
- char DomainName[MAX_DOMAIN_NAME_LEN + 4];
- PIP_ADDR_STRING CurrentDnsServer;
- IP_ADDR_STRING DnsServerList;
- UINT NodeType;
- char ScopeId[MAX_SCOPE_ID_LEN + 4];
- UINT EnableRouting;
- UINT EnableProxy;
- UINT EnableDns;
- } FIXED_INFO, *PFIXED_INFO;
- #pragma warning(default:4201)
- #ifdef __cplusplus
- }
- #endif
- #endif