ares_iphlpapi.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. #ifndef HEADER_CARES_IPHLPAPI_H
  2. #define HEADER_CARES_IPHLPAPI_H
  3. /* Copyright 1998 by the Massachusetts Institute of Technology.
  4. * Copyright (C) 2004 - 2011 by Daniel Stenberg et al
  5. *
  6. * Permission to use, copy, modify, and distribute this
  7. * software and its documentation for any purpose and without
  8. * fee is hereby granted, provided that the above copyright
  9. * notice appear in all copies and that both that copyright
  10. * notice and this permission notice appear in supporting
  11. * documentation, and that the name of M.I.T. not be used in
  12. * advertising or publicity pertaining to distribution of the
  13. * software without specific, written prior permission.
  14. * M.I.T. makes no representations about the suitability of
  15. * this software for any purpose. It is provided "as is"
  16. * without express or implied warranty.
  17. */
  18. #if defined(USE_WINSOCK)
  19. #ifndef INET_ADDRSTRLEN
  20. #define INET_ADDRSTRLEN 22
  21. #endif
  22. #ifndef INET6_ADDRSTRLEN
  23. #define INET6_ADDRSTRLEN 65
  24. #endif
  25. /* ---------------------------------- */
  26. #if !defined(_WS2DEF_) && \
  27. !defined(__CSADDR_DEFINED__) && \
  28. !defined(__CSADDR_T_DEFINED)
  29. /* ---------------------------------- */
  30. typedef struct _SOCKET_ADDRESS {
  31. LPSOCKADDR lpSockaddr;
  32. INT iSockaddrLength;
  33. } SOCKET_ADDRESS, *PSOCKET_ADDRESS;
  34. typedef struct _CSADDR_INFO {
  35. SOCKET_ADDRESS LocalAddr;
  36. SOCKET_ADDRESS RemoteAddr;
  37. INT iSocketType;
  38. INT iProtocol;
  39. } CSADDR_INFO, *PCSADDR_INFO;
  40. /* --------------------------------- */
  41. #endif /* ! _WS2DEF_ && \ */
  42. /* ! __CSADDR_DEFINED__ && \ */
  43. /* ! __CSADDR_T_DEFINED */
  44. /* --------------------------------- */
  45. /* ------------------------------- */
  46. #if !defined(IP_ADAPTER_DDNS_ENABLED)
  47. /* ------------------------------- */
  48. #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001
  49. #define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002
  50. #define IP_ADAPTER_DDNS_ENABLED 0x0001
  51. #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002
  52. #define IP_ADAPTER_DHCP_ENABLED 0x0004
  53. #define IP_ADAPTER_RECEIVE_ONLY 0x0008
  54. #define IP_ADAPTER_NO_MULTICAST 0x0010
  55. #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020
  56. #define GAA_FLAG_SKIP_UNICAST 0x0001
  57. #define GAA_FLAG_SKIP_ANYCAST 0x0002
  58. #define GAA_FLAG_SKIP_MULTICAST 0x0004
  59. #define GAA_FLAG_SKIP_DNS_SERVER 0x0008
  60. #define GAA_FLAG_INCLUDE_PREFIX 0x0010
  61. #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
  62. typedef enum {
  63. IpPrefixOriginOther = 0,
  64. IpPrefixOriginManual,
  65. IpPrefixOriginWellKnown,
  66. IpPrefixOriginDhcp,
  67. IpPrefixOriginRouterAdvertisement
  68. } IP_PREFIX_ORIGIN;
  69. typedef enum {
  70. IpSuffixOriginOther = 0,
  71. IpSuffixOriginManual,
  72. IpSuffixOriginWellKnown,
  73. IpSuffixOriginDhcp,
  74. IpSuffixOriginLinkLayerAddress,
  75. IpSuffixOriginRandom
  76. } IP_SUFFIX_ORIGIN;
  77. typedef enum {
  78. IpDadStateInvalid = 0,
  79. IpDadStateTentative,
  80. IpDadStateDuplicate,
  81. IpDadStateDeprecated,
  82. IpDadStatePreferred
  83. } IP_DAD_STATE;
  84. typedef enum {
  85. IfOperStatusUp = 1,
  86. IfOperStatusDown,
  87. IfOperStatusTesting,
  88. IfOperStatusUnknown,
  89. IfOperStatusDormant,
  90. IfOperStatusNotPresent,
  91. IfOperStatusLowerLayerDown
  92. } IF_OPER_STATUS;
  93. typedef enum {
  94. ScopeLevelInterface = 0x0001,
  95. ScopeLevelLink = 0x0002,
  96. ScopeLevelSubnet = 0x0003,
  97. ScopeLevelAdmin = 0x0004,
  98. ScopeLevelSite = 0x0005,
  99. ScopeLevelOrganization = 0x0008,
  100. ScopeLevelGlobal = 0x000E
  101. } SCOPE_LEVEL;
  102. typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
  103. union {
  104. ULONGLONG Alignment;
  105. struct {
  106. ULONG Length;
  107. DWORD Flags;
  108. } s;
  109. } u;
  110. struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
  111. SOCKET_ADDRESS Address;
  112. IP_PREFIX_ORIGIN PrefixOrigin;
  113. IP_SUFFIX_ORIGIN SuffixOrigin;
  114. IP_DAD_STATE DadState;
  115. ULONG ValidLifetime;
  116. ULONG PreferredLifetime;
  117. ULONG LeaseLifetime;
  118. } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
  119. typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
  120. union {
  121. ULONGLONG Alignment;
  122. struct {
  123. ULONG Length;
  124. DWORD Flags;
  125. } s;
  126. } u;
  127. struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
  128. SOCKET_ADDRESS Address;
  129. } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
  130. typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
  131. union {
  132. ULONGLONG Alignment;
  133. struct {
  134. ULONG Length;
  135. DWORD Flags;
  136. } s;
  137. } u;
  138. struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
  139. SOCKET_ADDRESS Address;
  140. } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
  141. typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
  142. union {
  143. ULONGLONG Alignment;
  144. struct {
  145. ULONG Length;
  146. DWORD Reserved;
  147. } s;
  148. } u;
  149. struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
  150. SOCKET_ADDRESS Address;
  151. } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
  152. typedef struct _IP_ADAPTER_PREFIX {
  153. union {
  154. ULONGLONG Alignment;
  155. struct {
  156. ULONG Length;
  157. DWORD Flags;
  158. } s;
  159. } u;
  160. struct _IP_ADAPTER_PREFIX *Next;
  161. SOCKET_ADDRESS Address;
  162. ULONG PrefixLength;
  163. } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
  164. typedef struct _IP_ADAPTER_ADDRESSES {
  165. union {
  166. ULONGLONG Alignment;
  167. struct {
  168. ULONG Length;
  169. DWORD IfIndex;
  170. } s;
  171. } u;
  172. struct _IP_ADAPTER_ADDRESSES *Next;
  173. PCHAR AdapterName;
  174. PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
  175. PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
  176. PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
  177. PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
  178. PWCHAR DnsSuffix;
  179. PWCHAR Description;
  180. PWCHAR FriendlyName;
  181. BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
  182. DWORD PhysicalAddressLength;
  183. DWORD Flags;
  184. DWORD Mtu;
  185. DWORD IfType;
  186. IF_OPER_STATUS OperStatus;
  187. DWORD Ipv6IfIndex;
  188. DWORD ZoneIndices[16];
  189. PIP_ADAPTER_PREFIX FirstPrefix;
  190. } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
  191. /* -------------------------------- */
  192. #endif /* ! IP_ADAPTER_DDNS_ENABLED */
  193. /* -------------------------------- */
  194. #endif /* USE_WINSOCK */
  195. #endif /* HEADER_CARES_IPHLPAPI_H */