| #ifndef HEADER_CARES_IPHLPAPI_H |
| #define HEADER_CARES_IPHLPAPI_H |
| |
| /* Copyright 1998 by the Massachusetts Institute of Technology. |
| * Copyright (C) 2004 - 2011 by Daniel Stenberg et al |
| * |
| * Permission to use, copy, modify, and distribute this |
| * software and its documentation for any purpose and without |
| * fee is hereby granted, provided that the above copyright |
| * notice appear in all copies and that both that copyright |
| * notice and this permission notice appear in supporting |
| * documentation, and that the name of M.I.T. not be used in |
| * advertising or publicity pertaining to distribution of the |
| * software without specific, written prior permission. |
| * M.I.T. makes no representations about the suitability of |
| * this software for any purpose. It is provided "as is" |
| * without express or implied warranty. |
| */ |
| |
| #if defined(USE_WINSOCK) |
| |
| #ifndef INET_ADDRSTRLEN |
| #define INET_ADDRSTRLEN 22 |
| #endif |
| |
| #ifndef INET6_ADDRSTRLEN |
| #define INET6_ADDRSTRLEN 65 |
| #endif |
| |
| /* ---------------------------------- */ |
| #if !defined(_WS2DEF_) && \ |
| !defined(__CSADDR_DEFINED__) && \ |
| !defined(__CSADDR_T_DEFINED) |
| /* ---------------------------------- */ |
| |
| typedef struct _SOCKET_ADDRESS { |
| LPSOCKADDR lpSockaddr; |
| INT iSockaddrLength; |
| } SOCKET_ADDRESS, *PSOCKET_ADDRESS; |
| |
| typedef struct _CSADDR_INFO { |
| SOCKET_ADDRESS LocalAddr; |
| SOCKET_ADDRESS RemoteAddr; |
| INT iSocketType; |
| INT iProtocol; |
| } CSADDR_INFO, *PCSADDR_INFO; |
| |
| /* --------------------------------- */ |
| #endif /* ! _WS2DEF_ && \ */ |
| /* ! __CSADDR_DEFINED__ && \ */ |
| /* ! __CSADDR_T_DEFINED */ |
| /* --------------------------------- */ |
| |
| /* ------------------------------- */ |
| #if !defined(IP_ADAPTER_DDNS_ENABLED) |
| /* ------------------------------- */ |
| |
| #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001 |
| #define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002 |
| |
| #define IP_ADAPTER_DDNS_ENABLED 0x0001 |
| #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002 |
| #define IP_ADAPTER_DHCP_ENABLED 0x0004 |
| #define IP_ADAPTER_RECEIVE_ONLY 0x0008 |
| #define IP_ADAPTER_NO_MULTICAST 0x0010 |
| #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020 |
| |
| #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 |
| #define GAA_FLAG_INCLUDE_PREFIX 0x0010 |
| #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020 |
| |
| 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 enum { |
| IfOperStatusUp = 1, |
| IfOperStatusDown, |
| IfOperStatusTesting, |
| IfOperStatusUnknown, |
| IfOperStatusDormant, |
| IfOperStatusNotPresent, |
| IfOperStatusLowerLayerDown |
| } IF_OPER_STATUS; |
| |
| typedef enum { |
| ScopeLevelInterface = 0x0001, |
| ScopeLevelLink = 0x0002, |
| ScopeLevelSubnet = 0x0003, |
| ScopeLevelAdmin = 0x0004, |
| ScopeLevelSite = 0x0005, |
| ScopeLevelOrganization = 0x0008, |
| ScopeLevelGlobal = 0x000E |
| } SCOPE_LEVEL; |
| |
| typedef struct _IP_ADAPTER_UNICAST_ADDRESS { |
| union { |
| ULONGLONG Alignment; |
| struct { |
| ULONG Length; |
| DWORD Flags; |
| } s; |
| } u; |
| 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; |
| } s; |
| } u; |
| 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; |
| } s; |
| } u; |
| struct _IP_ADAPTER_MULTICAST_ADDRESS *Next; |
| SOCKET_ADDRESS Address; |
| } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS; |
| |
| typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS { |
| union { |
| ULONGLONG Alignment; |
| struct { |
| ULONG Length; |
| DWORD Reserved; |
| } s; |
| } u; |
| struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next; |
| SOCKET_ADDRESS Address; |
| } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS; |
| |
| typedef struct _IP_ADAPTER_PREFIX { |
| union { |
| ULONGLONG Alignment; |
| struct { |
| ULONG Length; |
| DWORD Flags; |
| } s; |
| } u; |
| struct _IP_ADAPTER_PREFIX *Next; |
| SOCKET_ADDRESS Address; |
| ULONG PrefixLength; |
| } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX; |
| |
| typedef struct _IP_ADAPTER_ADDRESSES { |
| union { |
| ULONGLONG Alignment; |
| struct { |
| ULONG Length; |
| DWORD IfIndex; |
| } s; |
| } u; |
| 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; |
| DWORD Ipv6IfIndex; |
| DWORD ZoneIndices[16]; |
| PIP_ADAPTER_PREFIX FirstPrefix; |
| } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES; |
| |
| /* -------------------------------- */ |
| #endif /* ! IP_ADAPTER_DDNS_ENABLED */ |
| /* -------------------------------- */ |
| |
| #endif /* USE_WINSOCK */ |
| |
| #endif /* HEADER_CARES_IPHLPAPI_H */ |