OSDN Git Service

* NEWS: Add and adjust release notes for 4.0.
[mingw/mingw-org-wsl.git] / include / iptypes.h
1 /**
2  * @file iptypes.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _IPTYPES_H
25 #define _IPTYPES_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #include <sys/types.h>
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #define DEFAULT_MINIMUM_ENTITIES 32
35 #define MAX_ADAPTER_ADDRESS_LENGTH 8
36 #define MAX_ADAPTER_DESCRIPTION_LENGTH 128
37 #define MAX_ADAPTER_NAME_LENGTH 256
38 #define MAX_DOMAIN_NAME_LEN 128
39 #define MAX_HOSTNAME_LEN 128
40 #define MAX_SCOPE_ID_LEN 256
41 #define BROADCAST_NODETYPE 1
42 #define PEER_TO_PEER_NODETYPE 2
43 #define MIXED_NODETYPE 4
44 #define HYBRID_NODETYPE 8
45 #define IF_OTHER_ADAPTERTYPE 0
46 #define IF_ETHERNET_ADAPTERTYPE 1
47 #define IF_TOKEN_RING_ADAPTERTYPE 2
48 #define IF_FDDI_ADAPTERTYPE 3
49 #define IF_PPP_ADAPTERTYPE 4
50 #define IF_LOOPBACK_ADAPTERTYPE 5
51
52 typedef struct {
53   char String[16];
54 } IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
55 typedef struct _IP_ADDR_STRING {
56   struct _IP_ADDR_STRING* Next;
57   IP_ADDRESS_STRING IpAddress;
58   IP_MASK_STRING IpMask;
59   DWORD Context;
60 } IP_ADDR_STRING, *PIP_ADDR_STRING;
61 typedef struct _IP_ADAPTER_INFO {
62   struct _IP_ADAPTER_INFO* Next;
63   DWORD ComboIndex;
64   char AdapterName[MAX_ADAPTER_NAME_LENGTH+4];
65   char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4];
66   UINT AddressLength;
67   BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
68   DWORD Index;
69   UINT Type;
70   UINT DhcpEnabled;
71   PIP_ADDR_STRING CurrentIpAddress;
72   IP_ADDR_STRING IpAddressList;
73   IP_ADDR_STRING GatewayList;
74   IP_ADDR_STRING DhcpServer;
75   BOOL HaveWins;
76   IP_ADDR_STRING PrimaryWinsServer;
77   IP_ADDR_STRING SecondaryWinsServer;
78   time_t LeaseObtained;
79   time_t LeaseExpires;
80 } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
81 typedef struct _IP_PER_ADAPTER_INFO {
82   UINT AutoconfigEnabled;
83   UINT AutoconfigActive;
84   PIP_ADDR_STRING CurrentDnsServer;
85   IP_ADDR_STRING DnsServerList;
86 } IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
87 typedef struct _FIXED_INFO {
88   char HostName[MAX_HOSTNAME_LEN+4] ;
89   char DomainName[MAX_DOMAIN_NAME_LEN+4];
90   PIP_ADDR_STRING CurrentDnsServer;
91   IP_ADDR_STRING DnsServerList;
92   UINT NodeType;
93   char ScopeId[MAX_SCOPE_ID_LEN+4];
94   UINT EnableRouting;
95   UINT EnableProxy;
96   UINT EnableDns;
97 } FIXED_INFO, *PFIXED_INFO;
98
99 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
100 #define IP_ADAPTER_DDNS_ENABLED 0x00000001
101 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x00000002
102 #define IP_ADAPTER_DHCP_ENABLED 0x00000004
103 #define IP_ADAPTER_RECEIVE_ONLY 0x00000008
104 #define IP_ADAPTER_NO_MULTICAST 0x00000010
105 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x00000020
106 #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x00000001
107 #define IP_ADAPTER_ADDRESS_TRANSIENT 0x00000002
108
109 #if defined(_WINSOCK2_H)
110 typedef enum {
111   IfOperStatusUp = 1,
112   IfOperStatusDown,
113   IfOperStatusTesting,
114   IfOperStatusUnknown,
115   IfOperStatusDormant,
116   IfOperStatusNotPresent,
117   IfOperStatusLowerLayerDown
118 } IF_OPER_STATUS;
119 typedef enum {
120   IpDadStateInvalid = 0,
121   IpDadStateTentative,
122   IpDadStateDuplicate,
123   IpDadStateDeprecated,
124   IpDadStatePreferred
125 } IP_DAD_STATE;
126 typedef enum {
127   IpPrefixOriginOther = 0,
128   IpPrefixOriginManual,
129   IpPrefixOriginWellKnown,
130   IpPrefixOriginDhcp,
131   IpPrefixOriginRouterAdvertisement
132 } IP_PREFIX_ORIGIN;
133 typedef enum {
134   IpSuffixOriginOther = 0,
135   IpSuffixOriginManual,
136   IpSuffixOriginWellKnown,
137   IpSuffixOriginDhcp,
138   IpSuffixOriginLinkLayerAddress,
139   IpSuffixOriginRandom
140 } IP_SUFFIX_ORIGIN;
141 typedef enum {
142   ScopeLevelInterface = 1,
143   ScopeLevelLink = 2,
144   ScopeLevelSubnet = 3,
145   ScopeLevelAdmin = 4,
146   ScopeLevelSite = 5,
147   ScopeLevelOrganization = 8,
148   ScopeLevelGlobal = 14
149 } SCOPE_LEVEL;
150 typedef struct {
151   ULONG Index;
152   ULONG MediaType;
153   UCHAR ConnectionType;
154   UCHAR AccessType;
155   GUID DeviceGuid;
156   GUID InterfaceGuid;
157 } IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
158 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
159   _ANONYMOUS_UNION union {
160     ULONGLONG Alignment;
161     _ANONYMOUS_STRUCT struct {
162       ULONG Length;
163       DWORD Flags;
164     } DUMMYSTRUCTNAME;
165   } DUMMYUNIONNAME;
166   struct _IP_ADAPTER_ANYCAST_ADDRESS* Next;
167   SOCKET_ADDRESS Address;
168 } IP_ADAPTER_ANYCAST_ADDRESS,*PIP_ADAPTER_ANYCAST_ADDRESS;
169 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
170   _ANONYMOUS_UNION union {
171     ULONGLONG Alignment;
172     _ANONYMOUS_STRUCT struct {
173       ULONG Length;
174       DWORD Flags;
175     } DUMMYSTRUCTNAME;
176   } DUMMYUNIONNAME;
177   struct _IP_ADAPTER_MULTICAST_ADDRESS* Next;
178   SOCKET_ADDRESS Address;
179 } IP_ADAPTER_MULTICAST_ADDRESS,*PIP_ADAPTER_MULTICAST_ADDRESS;
180 typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
181   _ANONYMOUS_UNION union {
182     ULONGLONG Alignment;
183     _ANONYMOUS_STRUCT struct {
184       ULONG Length;
185       DWORD Flags;
186     }  DUMMYSTRUCTNAME;
187   } DUMMYUNIONNAME;
188   struct _IP_ADAPTER_UNICAST_ADDRESS* Next;
189   SOCKET_ADDRESS Address;
190   IP_PREFIX_ORIGIN PrefixOrigin;
191   IP_SUFFIX_ORIGIN SuffixOrigin;
192   IP_DAD_STATE DadState;
193   ULONG ValidLifetime;
194   ULONG PreferredLifetime;
195   ULONG LeaseLifetime;
196 } IP_ADAPTER_UNICAST_ADDRESS,*PIP_ADAPTER_UNICAST_ADDRESS;
197 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
198   _ANONYMOUS_UNION union {
199     ULONGLONG Alignment;
200     _ANONYMOUS_STRUCT struct {
201       ULONG Length;
202       DWORD Reserved;
203     } DUMMYSTRUCTNAME;
204   } DUMMYUNIONNAME;
205   struct _IP_ADAPTER_DNS_SERVER_ADDRESS* Next;
206   SOCKET_ADDRESS Address;
207 } IP_ADAPTER_DNS_SERVER_ADDRESS,*PIP_ADAPTER_DNS_SERVER_ADDRESS;
208 typedef struct _IP_ADAPTER_PREFIX {
209   _ANONYMOUS_UNION union {
210     ULONGLONG Alignment;
211     _ANONYMOUS_STRUCT struct {
212       ULONG Length;
213       DWORD Flags;
214     } DUMMYSTRUCTNAME;
215   } DUMMYUNIONNAME;
216   struct _IP_ADAPTER_PREFIX* Next;
217   SOCKET_ADDRESS Address;
218   ULONG PrefixLength;
219 } IP_ADAPTER_PREFIX,*PIP_ADAPTER_PREFIX;
220 typedef struct _IP_ADAPTER_ADDRESSES {
221   _ANONYMOUS_UNION union {
222     ULONGLONG Alignment;
223     _ANONYMOUS_STRUCT struct {
224       ULONG Length;
225       DWORD IfIndex;
226     } DUMMYSTRUCTNAME;
227   } DUMMYUNIONNAME;
228   struct _IP_ADAPTER_ADDRESSES* Next;
229   PCHAR AdapterName;
230   PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
231   PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
232   PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
233   PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
234   PWCHAR DnsSuffix;
235   PWCHAR Description;
236   PWCHAR FriendlyName;
237   BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
238   DWORD PhysicalAddressLength;
239   DWORD Flags;
240   DWORD Mtu;
241   DWORD IfType;
242   IF_OPER_STATUS OperStatus;
243   DWORD Ipv6IfIndex;
244   DWORD ZoneIndices[16];
245   PIP_ADAPTER_PREFIX FirstPrefix;
246 } IP_ADAPTER_ADDRESSES,*PIP_ADAPTER_ADDRESSES;
247 #endif /* _WINSOCK2_H */
248 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
249
250 #ifdef __cplusplus
251 }
252 #endif
253 #endif /* _IPTYPES_H */