OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / w32api / include / iptypes.h
1 #ifndef _IPTYPES_H
2 #define _IPTYPES_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #include <sys/types.h>
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 #define DEFAULT_MINIMUM_ENTITIES 32
13 #define MAX_ADAPTER_ADDRESS_LENGTH 8
14 #define MAX_ADAPTER_DESCRIPTION_LENGTH 128
15 #define MAX_ADAPTER_NAME_LENGTH 256
16 #define MAX_DOMAIN_NAME_LEN 128
17 #define MAX_HOSTNAME_LEN 128
18 #define MAX_SCOPE_ID_LEN 256
19 #define BROADCAST_NODETYPE 1
20 #define PEER_TO_PEER_NODETYPE 2
21 #define MIXED_NODETYPE 4
22 #define HYBRID_NODETYPE 8
23 #define IF_OTHER_ADAPTERTYPE 0
24 #define IF_ETHERNET_ADAPTERTYPE 1
25 #define IF_TOKEN_RING_ADAPTERTYPE 2
26 #define IF_FDDI_ADAPTERTYPE 3
27 #define IF_PPP_ADAPTERTYPE 4
28 #define IF_LOOPBACK_ADAPTERTYPE 5
29 #if (_WIN32_WINNT >= 0x0501)
30 #define IP_ADAPTER_DDNS_ENABLED 0x00000001
31 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x00000002
32 #define IP_ADAPTER_DHCP_ENABLED 0x00000004
33 #define IP_ADAPTER_RECEIVE_ONLY 0x00000008
34 #define IP_ADAPTER_NO_MULTICAST 0x00000010
35 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x00000020
36 #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x00000001
37 #define IP_ADAPTER_ADDRESS_TRANSIENT 0x00000002
38 #endif
39
40 typedef struct {
41   char String[16];
42 } IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
43 typedef struct _IP_ADDR_STRING {
44   struct _IP_ADDR_STRING* Next;
45   IP_ADDRESS_STRING IpAddress;
46   IP_MASK_STRING IpMask;
47   DWORD Context;
48 } IP_ADDR_STRING, *PIP_ADDR_STRING;
49 typedef struct _IP_ADAPTER_INFO {
50   struct _IP_ADAPTER_INFO* Next;
51   DWORD ComboIndex;
52   char AdapterName[MAX_ADAPTER_NAME_LENGTH+4];
53   char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4];
54   UINT AddressLength;
55   BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
56   DWORD Index;
57   UINT Type;
58   UINT DhcpEnabled;
59   PIP_ADDR_STRING CurrentIpAddress;
60   IP_ADDR_STRING IpAddressList;
61   IP_ADDR_STRING GatewayList;
62   IP_ADDR_STRING DhcpServer;
63   BOOL HaveWins;
64   IP_ADDR_STRING PrimaryWinsServer;
65   IP_ADDR_STRING SecondaryWinsServer;
66   time_t LeaseObtained;
67   time_t LeaseExpires;
68 } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
69 typedef struct _IP_PER_ADAPTER_INFO {
70   UINT AutoconfigEnabled;
71   UINT AutoconfigActive;
72   PIP_ADDR_STRING CurrentDnsServer;
73   IP_ADDR_STRING DnsServerList;
74 } IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
75 typedef struct _FIXED_INFO {
76   char HostName[MAX_HOSTNAME_LEN+4] ;
77   char DomainName[MAX_DOMAIN_NAME_LEN+4];
78   PIP_ADDR_STRING CurrentDnsServer;
79   IP_ADDR_STRING DnsServerList;
80   UINT NodeType;
81   char ScopeId[MAX_SCOPE_ID_LEN+4];
82   UINT EnableRouting;
83   UINT EnableProxy;
84   UINT EnableDns;
85 } FIXED_INFO, *PFIXED_INFO;
86 #if (_WIN32_WINNT >= 0x0501) && defined(_WINSOCK2_H)
87 typedef enum {
88   IfOperStatusUp = 1,
89   IfOperStatusDown,
90   IfOperStatusTesting,
91   IfOperStatusUnknown,
92   IfOperStatusDormant,
93   IfOperStatusNotPresent,
94   IfOperStatusLowerLayerDown
95 } IF_OPER_STATUS;
96 typedef enum {
97   IpDadStateInvalid = 0,
98   IpDadStateTentative,
99   IpDadStateDuplicate,
100   IpDadStateDeprecated,
101   IpDadStatePreferred
102 } IP_DAD_STATE;
103 typedef enum {
104   IpPrefixOriginOther = 0,
105   IpPrefixOriginManual,
106   IpPrefixOriginWellKnown,
107   IpPrefixOriginDhcp,
108   IpPrefixOriginRouterAdvertisement
109 } IP_PREFIX_ORIGIN;
110 typedef enum {
111   IpSuffixOriginOther = 0,
112   IpSuffixOriginManual,
113   IpSuffixOriginWellKnown,
114   IpSuffixOriginDhcp,
115   IpSuffixOriginLinkLayerAddress,
116   IpSuffixOriginRandom
117 } IP_SUFFIX_ORIGIN;
118 typedef enum {
119   ScopeLevelInterface = 1,
120   ScopeLevelLink = 2,
121   ScopeLevelSubnet = 3,
122   ScopeLevelAdmin = 4,
123   ScopeLevelSite = 5,
124   ScopeLevelOrganization = 8,
125   ScopeLevelGlobal = 14
126 } SCOPE_LEVEL;
127 typedef struct {
128   ULONG Index;
129   ULONG MediaType;
130   UCHAR ConnectionType;
131   UCHAR AccessType;
132   GUID DeviceGuid;
133   GUID InterfaceGuid;
134 } IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
135 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
136   _ANONYMOUS_UNION union {
137     ULONGLONG Alignment;
138     _ANONYMOUS_STRUCT struct {
139       ULONG Length;
140       DWORD Flags;
141     } DUMMYSTRUCTNAME;
142   } DUMMYUNIONNAME;
143   struct _IP_ADAPTER_ANYCAST_ADDRESS* Next;
144   SOCKET_ADDRESS Address;
145 } IP_ADAPTER_ANYCAST_ADDRESS,*PIP_ADAPTER_ANYCAST_ADDRESS;
146 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
147   _ANONYMOUS_UNION union {
148     ULONGLONG Alignment;
149     _ANONYMOUS_STRUCT struct {
150       ULONG Length;
151       DWORD Flags;
152     } DUMMYSTRUCTNAME;
153   } DUMMYUNIONNAME;
154   struct _IP_ADAPTER_MULTICAST_ADDRESS* Next;
155   SOCKET_ADDRESS Address;
156 } IP_ADAPTER_MULTICAST_ADDRESS,*PIP_ADAPTER_MULTICAST_ADDRESS;
157 typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
158   _ANONYMOUS_UNION union {
159     ULONGLONG Alignment;
160     _ANONYMOUS_STRUCT struct {
161       ULONG Length;
162       DWORD Flags;
163     }  DUMMYSTRUCTNAME;
164   } DUMMYUNIONNAME;
165   struct _IP_ADAPTER_UNICAST_ADDRESS* Next;
166   SOCKET_ADDRESS Address;
167   IP_PREFIX_ORIGIN PrefixOrigin;
168   IP_SUFFIX_ORIGIN SuffixOrigin;
169   IP_DAD_STATE DadState;
170   ULONG ValidLifetime;
171   ULONG PreferredLifetime;
172   ULONG LeaseLifetime;
173 } IP_ADAPTER_UNICAST_ADDRESS,*PIP_ADAPTER_UNICAST_ADDRESS;
174 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
175   _ANONYMOUS_UNION union {
176     ULONGLONG Alignment;
177     _ANONYMOUS_STRUCT struct {
178       ULONG Length;
179       DWORD Reserved;
180     } DUMMYSTRUCTNAME;
181   } DUMMYUNIONNAME;
182   struct _IP_ADAPTER_DNS_SERVER_ADDRESS* Next;
183   SOCKET_ADDRESS Address;
184 } IP_ADAPTER_DNS_SERVER_ADDRESS,*PIP_ADAPTER_DNS_SERVER_ADDRESS;
185 typedef struct _IP_ADAPTER_PREFIX {
186   _ANONYMOUS_UNION union {
187     ULONGLONG Alignment;
188     _ANONYMOUS_STRUCT struct {
189       ULONG Length;
190       DWORD Flags;
191     } DUMMYSTRUCTNAME;
192   } DUMMYUNIONNAME;
193   struct _IP_ADAPTER_PREFIX* Next;
194   SOCKET_ADDRESS Address;
195   ULONG PrefixLength;
196 } IP_ADAPTER_PREFIX,*PIP_ADAPTER_PREFIX;
197 typedef struct _IP_ADAPTER_ADDRESSES {
198   _ANONYMOUS_UNION union {
199     ULONGLONG Alignment;
200     _ANONYMOUS_STRUCT struct {
201       ULONG Length;
202       DWORD IfIndex;
203     } DUMMYSTRUCTNAME;
204   } DUMMYUNIONNAME;
205   struct _IP_ADAPTER_ADDRESSES* Next;
206   PCHAR AdapterName;
207   PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
208   PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
209   PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
210   PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
211   PWCHAR DnsSuffix;
212   PWCHAR Description;
213   PWCHAR FriendlyName;
214   BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
215   DWORD PhysicalAddressLength;
216   DWORD Flags;
217   DWORD Mtu;
218   DWORD IfType;
219   IF_OPER_STATUS OperStatus;
220   DWORD Ipv6IfIndex;
221   DWORD ZoneIndices[16];
222   PIP_ADAPTER_PREFIX FirstPrefix;
223 } IP_ADAPTER_ADDRESSES,*PIP_ADAPTER_ADDRESSES;
224 #endif
225
226 #ifdef __cplusplus
227 }
228 #endif
229 #endif /* _IPTYPES_H */