mirror of https://github.com/c-ares/c-ares.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
5.8 KiB
221 lines
5.8 KiB
#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 */
|
|
|