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