KERNEL_VERSION_MAJOR: 0 -> 5
[reactos.git] / include / iptypes.h
1 /* WINE iptypes.h
2  * Copyright (C) 2003 Juan Lang
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef WINE_IPTYPES_H_
20 #define WINE_IPTYPES_H_
21
22 #include <time.h>
23
24 #define MAX_ADAPTER_DESCRIPTION_LENGTH  128
25 #define MAX_ADAPTER_NAME_LENGTH         256
26 #define MAX_ADAPTER_ADDRESS_LENGTH      8
27 #define MAX_HOSTNAME_LEN                128
28 #define MAX_DOMAIN_NAME_LEN             128
29 #define MAX_SCOPE_ID_LEN                256
30
31 #define BROADCAST_NODETYPE              1
32 #define PEER_TO_PEER_NODETYPE           2
33 #define MIXED_NODETYPE                  4
34 #define HYBRID_NODETYPE                 8
35
36 typedef struct {
37     char String[4 * 4];
38 } IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
39
40 typedef struct _IP_ADDR_STRING {
41     struct _IP_ADDR_STRING* Next;
42     IP_ADDRESS_STRING IpAddress;
43     IP_MASK_STRING IpMask;
44     DWORD Context;
45 } IP_ADDR_STRING, *PIP_ADDR_STRING;
46
47 typedef struct _IP_ADAPTER_INFO {
48     struct _IP_ADAPTER_INFO* Next;
49     DWORD ComboIndex;
50     char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
51     char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
52     UINT AddressLength;
53     BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
54     DWORD Index;
55     UINT Type;
56     UINT DhcpEnabled;
57     PIP_ADDR_STRING CurrentIpAddress;
58     IP_ADDR_STRING IpAddressList;
59     IP_ADDR_STRING GatewayList;
60     IP_ADDR_STRING DhcpServer;
61     WINBOOL HaveWins;
62     IP_ADDR_STRING PrimaryWinsServer;
63     IP_ADDR_STRING SecondaryWinsServer;
64     time_t LeaseObtained;
65     time_t LeaseExpires;
66 } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
67
68 typedef struct _IP_PER_ADAPTER_INFO {
69     UINT AutoconfigEnabled;
70     UINT AutoconfigActive;
71     PIP_ADDR_STRING CurrentDnsServer;
72     IP_ADDR_STRING DnsServerList;
73 } IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
74
75 typedef struct {
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
87 typedef struct ip_interface_name_info {
88     ULONG           Index;
89     ULONG           MediaType;
90     UCHAR           ConnectionType;
91     UCHAR           AccessType;
92     GUID            DeviceGuid;
93     GUID            InterfaceGuid;
94 } IP_INTERFACE_NAME_INFO, *PIP_INTERFACE_NAME_INFO;
95
96 typedef enum {
97     IpPrefixOriginOther = 0,
98     IpPrefixOriginManual,
99     IpPrefixOriginWellKnown,
100     IpPrefixOriginDhcp,
101     IpPrefixOriginRouterAdvertisement,
102 } IP_PREFIX_ORIGIN;
103
104 typedef enum {
105     IpSuffixOriginOther = 0,
106     IpSuffixOriginManual,
107     IpSuffixOriginWellKnown,
108     IpSuffixOriginDhcp,
109     IpSuffixOriginLinkLayerAddress,
110     IpSuffixOriginRandom,
111 } IP_SUFFIX_ORIGIN;
112
113 typedef enum {
114     IpDadStateInvalid    = 0,
115     IpDadStateTentative,
116     IpDadStateDuplicate,
117     IpDadStateDeprecated,
118     IpDadStatePreferred,
119 } IP_DAD_STATE;
120
121 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
122     union {
123         ULONGLONG Alignment;
124         struct { 
125             ULONG Length;
126             DWORD Flags;
127         };
128     };
129     struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
130     SOCKET_ADDRESS Address;
131 } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
132
133 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
134     union {
135         ULONGLONG Alignment;
136         struct {
137             ULONG Length;
138             DWORD Flags;
139         };
140     };
141     struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
142     SOCKET_ADDRESS Address;
143 } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
144
145 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
146     union {
147         ULONGLONG Alignment;
148         struct {
149             ULONG Length;
150             DWORD Reserved;
151         };
152     };
153     struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
154     SOCKET_ADDRESS Address;
155 } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
156
157 typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
158     union {
159         ULONGLONG Alignment;
160         struct { 
161             ULONG Length;
162             DWORD Flags;
163         };
164     };
165     struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
166     SOCKET_ADDRESS Address;
167
168     IP_PREFIX_ORIGIN PrefixOrigin;
169     IP_SUFFIX_ORIGIN SuffixOrigin;
170     IP_DAD_STATE DadState;
171
172     ULONG ValidLifetime;
173     ULONG PreferredLifetime;
174     ULONG LeaseLifetime;
175 } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
176
177 typedef enum {
178     IfOperStatusUp = 1,
179     IfOperStatusDown,
180     IfOperStatusTesting,
181     IfOperStatusUnknown,
182     IfOperStatusDormant,
183     IfOperStatusNotPresent,
184     IfOperStatusLowerLayerDown
185 } IF_OPER_STATUS;
186
187 typedef struct _IP_ADAPTER_PREFIX {
188     union {
189         ULONGLONG Alignment;
190         struct {
191             ULONG Length;
192             DWORD Flags;
193         };
194     };
195     struct _IP_ADAPTER_PREFIX *Next;
196     SOCKET_ADDRESS Address;
197     ULONG PrefixLength;
198 } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
199
200 typedef struct _IP_ADAPTER_ADDRESSES {
201     union {
202         ULONGLONG Alignment;
203         struct {
204             ULONG Length;
205             DWORD IfIndex;
206         };
207     };
208     struct _IP_ADAPTER_ADDRESSES *Next;
209     PCHAR AdapterName;
210     PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
211     PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
212     PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
213     PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
214     PWCHAR DnsSuffix;
215     PWCHAR Description;
216     PWCHAR FriendlyName;
217     BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
218     DWORD PhysicalAddressLength;
219     DWORD Flags;
220     DWORD Mtu;
221     DWORD IfType;
222     IF_OPER_STATUS OperStatus;
223     DWORD Ipv6IfIndex;
224     DWORD ZoneIndices[16];
225     PIP_ADAPTER_PREFIX FirstPrefix;
226 } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
227
228 #endif /* WINE_IPTYPES_H_*/