-
-
Notifications
You must be signed in to change notification settings - Fork 187
Expand file tree
/
Copy pathsys_net_native.h
More file actions
456 lines (384 loc) · 16.7 KB
/
sys_net_native.h
File metadata and controls
456 lines (384 loc) · 16.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
//
// Copyright (c) .NET Foundation and Contributors
// Portions Copyright (c) Microsoft Corporation. All rights reserved.
// See LICENSE file in the project root for full license information.
//
#ifndef SYS_NET_NATIVE_H
#define SYS_NET_NATIVE_H
#include <nanoCLR_Interop.h>
#include <nanoCLR_Runtime.h>
#include <nanoCLR_Checks.h>
#include <nanoHAL_Time.h>
#include <corlib_native.h>
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack AddressMode
// {
// AddressMode_Invalid = 0,
// AddressMode_DHCP = 1,
// AddressMode_Static = 2,
// AddressMode_AutoIP = 3,
// } AddressMode;
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack AuthenticationType
// {
// AuthenticationType_None = 0,
// AuthenticationType_EAP = 1,
// AuthenticationType_PEAP = 2,
// AuthenticationType_WCN = 3,
// AuthenticationType_Open = 4,
// AuthenticationType_Shared = 5,
// AuthenticationType_WEP = 6,
// AuthenticationType_WPA = 7,
// AuthenticationType_WPA2 = 8,
// } AuthenticationType;
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack EncryptionType
// {
// EncryptionType_None = 0,
// EncryptionType_WEP = 1,
// EncryptionType_WPA = 2,
// EncryptionType_WPA2 = 3,
// EncryptionType_WPA_PSK = 4,
// EncryptionType_WPA2_PSK = 5,
// EncryptionType_Certificate = 6,
// } EncryptionType;
// MOVED TO src\PAL\Include\nanoPAL_Sockets.h for convinience
// typedef enum __nfpack NetworkChange_NetworkEvents
// {
// NetworkChange_NetworkEvents_NetworkAvailable = 1,
// } NetworkChange_NetworkEvents;
// MOVED TO src\PAL\Include\nanoPAL_Sockets.h for convinience
// typedef enum __nfpack NetworkChange_NetworkEventType
// {
// NetworkChange_NetworkEventType_Invalid = 0,
// NetworkChange_NetworkEventType_AvailabilityChanged = 1,
// NetworkChange_NetworkEventType_AddressChanged = 2,
// NetworkChange_NetworkEventType_APStationChanged = 3,
// } NetworkChange_NetworkEventType;
// MOVED TO src\PAL\Include\nanoPAL_Sockets.h for convinience
// typedef enum __nfpack NetworkInterface_UpdateOperation
// {
// NetworkInterface_UpdateOperation_Invalid = 0,
// NetworkInterface_UpdateOperation_Dns = 1,
// NetworkInterface_UpdateOperation_Dhcp = 2,
// NetworkInterface_UpdateOperation_DhcpRenew = 4,
// NetworkInterface_UpdateOperation_DhcpRelease = 8,
// NetworkInterface_UpdateOperation_Mac = 16,
// } NetworkInterface_UpdateOperation;
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack NetworkInterfaceType
// {
// NetworkInterfaceType_Unknown = 1,
// NetworkInterfaceType_Ethernet = 6,
// NetworkInterfaceType_Wireless80211 = 71,
// NetworkInterfaceType_WirelessAP = 72,
// } NetworkInterfaceType;
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack RadioType
// {
// RadioType_NotSpecified = 0,
// RadioType__802_11a = 1,
// RadioType__802_11b = 2,
// RadioType__802_11g = 4,
// RadioType__802_11n = 8,
// } RadioType;
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack Wireless80211Configuration_ConfigurationOptions
// {
// Wireless80211Configuration_ConfigurationOptions_None = 0,
// Wireless80211Configuration_ConfigurationOptions_Disable = 1,
// Wireless80211Configuration_ConfigurationOptions_Enable = 2,
// Wireless80211Configuration_ConfigurationOptions_AutoConnect = 6,
// Wireless80211Configuration_ConfigurationOptions_SmartConfig = 10,
// } Wireless80211Configuration_ConfigurationOptions;
// MOVED TO src\HAL\Include\nanoHAL_Network.h for convinience
// typedef enum __nfpack WirelessAPConfiguration_ConfigurationOptions
// {
// WirelessAPConfiguration_ConfigurationOptions_None = 0,
// WirelessAPConfiguration_ConfigurationOptions_Disable = 1,
// WirelessAPConfiguration_ConfigurationOptions_Enable = 2,
// WirelessAPConfiguration_ConfigurationOptions_AutoStart = 6,
// WirelessAPConfiguration_ConfigurationOptions_HiddenSSID = 8,
// } WirelessAPConfiguration_ConfigurationOptions;
// MOVED TO src\PAL\COM\sockets\ssl\ssl_functions.h for convinience
// typedef enum __nfpack SslProtocols
// {
// SslProtocols_None = 0,
// SslProtocols_Tls = 192,
// SslProtocols_Tls11 = 768,
// SslProtocols_Tls12 = 3072,
// SslProtocols_Tls13 = 12288,
// } SslProtocols;
struct Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface
{
static const int FIELD___interfaceIndex = 1;
static const int FIELD___macAddress = 2;
static const int FIELD___startupAddressMode = 3;
static const int FIELD___specificConfigId = 4;
static const int FIELD___automaticDns = 5;
static const int FIELD___ipv4Address = 6;
static const int FIELD___ipv4NetMask = 7;
static const int FIELD___ipv4GatewayAddress = 8;
static const int FIELD___ipv4dnsAddress1 = 9;
static const int FIELD___ipv4dnsAddress2 = 10;
static const int FIELD___ipv6Address = 11;
static const int FIELD___ipv6NetMask = 12;
static const int FIELD___ipv6GatewayAddress = 13;
static const int FIELD___ipv6dnsAddress1 = 14;
static const int FIELD___ipv6dnsAddress2 = 15;
static const int FIELD___networkInterfaceType = 16;
NANOCLR_NATIVE_DECLARE(InitializeNetworkInterfaceSettings___VOID);
NANOCLR_NATIVE_DECLARE(UpdateConfiguration___VOID__I4);
NANOCLR_NATIVE_DECLARE(GetIsNetworkAvailable___STATIC__BOOLEAN);
NANOCLR_NATIVE_DECLARE(GetNetworkInterfaceCount___STATIC__I4);
NANOCLR_NATIVE_DECLARE(GetNetworkInterface___STATIC__SystemNetNetworkInformationNetworkInterface__U4);
NANOCLR_NATIVE_DECLARE(IPV4AddressFromString___STATIC__I8__STRING);
NANOCLR_NATIVE_DECLARE(IPV6AddressFromString___STATIC__SZARRAY_U2__STRING);
//--//
};
struct Library_sys_net_native_nanoFramework_Networking_NetworkHelper
{
static const int FIELD_STATIC___ipAddressAvailable = 0;
static const int FIELD_STATIC___networkReady = 1;
static const int FIELD_STATIC___requiresDateTime = 2;
static const int FIELD_STATIC___networkHelperStatus = 3;
static const int FIELD_STATIC___helperException = 4;
static const int FIELD_STATIC___workingNetworkInterface = 5;
static const int FIELD_STATIC___ipConfiguration = 6;
static const int FIELD_STATIC___helperInstanciated = 7;
//--//
};
struct Library_sys_net_native_System_Net_IPAddress
{
static const int FIELD_STATIC__Any = 8;
static const int FIELD_STATIC__Loopback = 9;
static const int FIELD_STATIC__Broadcast = 10;
static const int FIELD_STATIC__None = 11;
static const int FIELD_STATIC__IPv6Any = 12;
static const int FIELD_STATIC__IPv6Loopback = 13;
static const int FIELD__Address = 1;
static const int FIELD___family = 2;
static const int FIELD___numbers = 3;
static const int FIELD___scopeid = 4;
NANOCLR_NATIVE_DECLARE(IPv4ToString___STATIC__STRING__U4);
NANOCLR_NATIVE_DECLARE(IPv6ToString___STATIC__STRING__SZARRAY_U2);
//--//
};
struct Library_sys_net_native_System_Net_IPEndPoint
{
static const int FIELD___address = 1;
static const int FIELD___port = 2;
//--//
};
struct Library_sys_net_native_System_Net_IPHostEntry
{
static const int FIELD__hostName = 1;
static const int FIELD__addressList = 2;
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_IPGlobalProperties
{
NANOCLR_NATIVE_DECLARE(GetIPAddress___STATIC__SystemNetIPAddress);
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_NetworkAPStationEventArgs
{
static const int FIELD___stationIndex = 1;
static const int FIELD___isConnected = 2;
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_NetworkAvailabilityEventArgs
{
static const int FIELD___isAvailable = 1;
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_NetworkChange
{
static const int FIELD_STATIC__NetworkAddressChanged = 14;
static const int FIELD_STATIC__NetworkAvailabilityChanged = 15;
static const int FIELD_STATIC__NetworkAPStationChanged = 16;
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_NetworkChange__NetworkEvent
{
static const int FIELD__EventType = 3;
static const int FIELD__Flags = 4;
static const int FIELD__Index = 5;
static const int FIELD__Data = 6;
static const int FIELD__Time = 7;
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration
{
static const int FIELD___configurationIndex = 1;
static const int FIELD___id = 2;
static const int FIELD___authentication = 3;
static const int FIELD___encryption = 4;
static const int FIELD___radio = 5;
static const int FIELD___password = 6;
static const int FIELD___ssid = 7;
static const int FIELD___options = 8;
NANOCLR_NATIVE_DECLARE(GetWireless82011ConfigurationCount___STATIC__I4);
NANOCLR_NATIVE_DECLARE(
GetWireless82011Configuration___STATIC__SystemNetNetworkInformationWireless80211Configuration__I4);
NANOCLR_NATIVE_DECLARE(UpdateConfiguration___STATIC__VOID);
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation
{
static const int FIELD___macAddress = 1;
static const int FIELD___rssi = 2;
static const int FIELD___phyModes = 3;
//--//
};
struct Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration
{
static const int FIELD___apConfigurationIndex = 1;
static const int FIELD___apId = 2;
static const int FIELD___apAuthentication = 3;
static const int FIELD___apEncryption = 4;
static const int FIELD___apRadio = 5;
static const int FIELD___apPassword = 6;
static const int FIELD___apSsid = 7;
static const int FIELD___options = 8;
static const int FIELD___apChannel = 9;
static const int FIELD___apMaxConnections = 10;
NANOCLR_NATIVE_DECLARE(GetWirelessAPConfigurationCount___STATIC__I4);
NANOCLR_NATIVE_DECLARE(GetWirelessAPConfiguration___STATIC__SystemNetNetworkInformationWirelessAPConfiguration__I4);
NANOCLR_NATIVE_DECLARE(UpdateConfiguration___STATIC__VOID);
NANOCLR_NATIVE_DECLARE(
NativeGetConnectedClients___STATIC__SZARRAY_SystemNetNetworkInformationWirelessAPStation__I4);
NANOCLR_NATIVE_DECLARE(NativeDeauthStation___STATIC__STRING__I4);
//--//
};
struct Library_sys_net_native_System_Net_Security_CertificateManager
{
NANOCLR_NATIVE_DECLARE(AddCaCertificateBundle___STATIC__BOOLEAN__SZARRAY_U1);
NANOCLR_NATIVE_DECLARE(GetDevicePublicKeyRaw___STATIC__SZARRAY_U1);
//--//
};
struct Library_sys_net_native_System_Net_Security_SslNative
{
NANOCLR_NATIVE_DECLARE(
SecureServerInit___STATIC__I4__I4__I4__SystemSecurityCryptographyX509CertificatesX509Certificate__SystemSecurityCryptographyX509CertificatesX509Certificate__BOOLEAN);
NANOCLR_NATIVE_DECLARE(
SecureClientInit___STATIC__I4__I4__I4__SystemSecurityCryptographyX509CertificatesX509Certificate__SystemSecurityCryptographyX509CertificatesX509Certificate__BOOLEAN);
NANOCLR_NATIVE_DECLARE(SecureAccept___STATIC__VOID__I4__OBJECT);
NANOCLR_NATIVE_DECLARE(SecureConnect___STATIC__VOID__I4__STRING__OBJECT);
NANOCLR_NATIVE_DECLARE(SecureRead___STATIC__I4__OBJECT__SZARRAY_U1__I4__I4__I4);
NANOCLR_NATIVE_DECLARE(SecureWrite___STATIC__I4__OBJECT__SZARRAY_U1__I4__I4__I4);
NANOCLR_NATIVE_DECLARE(SecureCloseSocket___STATIC__I4__OBJECT);
NANOCLR_NATIVE_DECLARE(ExitSecureContext___STATIC__I4__I4);
NANOCLR_NATIVE_DECLARE(DataAvailable___STATIC__I4__OBJECT);
//--//
static HRESULT ReadWriteHelper(CLR_RT_StackFrame &stack, bool isWrite);
static HRESULT InitHelper(CLR_RT_StackFrame &stack, bool isServer);
static HRESULT ThrowOnError(CLR_RT_StackFrame &stack, int err);
static void ThrowError(CLR_RT_StackFrame &stack, int errorCode);
};
struct Library_sys_net_native_System_Net_Sockets_Socket
{
static const int FIELD__m_Handle = 1;
static const int FIELD__m_fBlocking = 2;
static const int FIELD__m_localEndPoint = 3;
static const int FIELD__m_recvTimeout = 4;
static const int FIELD__m_sendTimeout = 5;
static const int FIELD___socketType = 6;
static const int FIELD___nonBlockingConnectInProgress = 7;
static const int FIELD___nonBlockingConnectRightEndPoint = 8;
static const int FIELD___rightEndPoint = 9;
//--//
};
struct Library_sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate
{
static const int FIELD___certificate = 1;
static const int FIELD___issuer = 2;
static const int FIELD___subject = 3;
static const int FIELD___effectiveDate = 4;
static const int FIELD___expirationDate = 5;
static const int FIELD___handle = 6;
static const int FIELD___sessionHandle = 7;
NANOCLR_NATIVE_DECLARE(
ParseCertificate___STATIC__VOID__SZARRAY_U1__BYREF_STRING__BYREF_STRING__BYREF_SystemDateTime__BYREF_SystemDateTime);
//--//
};
struct Library_sys_net_native_System_Net_Security_SslStream
{
static const int FIELD___sslVerification = 6;
static const int FIELD___useStoredDeviceCertificate = 7;
static const int FIELD___sslContext = 8;
static const int FIELD___isServer = 9;
//--//
};
struct Library_sys_net_native_System_Net_SocketAddress
{
static const int FIELD__m_Buffer = 1;
static const int FIELD___address = 2;
//--//
};
struct Library_sys_net_native_System_Net_Sockets_NativeSocket
{
NANOCLR_NATIVE_DECLARE(socket___STATIC__I4__I4__I4__I4);
NANOCLR_NATIVE_DECLARE(bind___STATIC__VOID__OBJECT__SystemNetEndPoint);
NANOCLR_NATIVE_DECLARE(connect___STATIC__VOID__OBJECT__SystemNetEndPoint__BOOLEAN);
NANOCLR_NATIVE_DECLARE(send___STATIC__I4__OBJECT__SZARRAY_U1__I4__I4__I4__I4);
NANOCLR_NATIVE_DECLARE(recv___STATIC__I4__OBJECT__SZARRAY_U1__I4__I4__I4__I4);
NANOCLR_NATIVE_DECLARE(close___STATIC__I4__OBJECT);
NANOCLR_NATIVE_DECLARE(listen___STATIC__VOID__OBJECT__I4);
NANOCLR_NATIVE_DECLARE(accept___STATIC__I4__OBJECT);
NANOCLR_NATIVE_DECLARE(getaddrinfo___STATIC__VOID__STRING__BYREF_STRING__BYREF_SZARRAY_SZARRAY_U1);
NANOCLR_NATIVE_DECLARE(shutdown___STATIC__VOID__OBJECT__I4__BYREF_I4);
NANOCLR_NATIVE_DECLARE(sendto___STATIC__I4__OBJECT__SZARRAY_U1__I4__I4__I4__I4__SystemNetEndPoint);
NANOCLR_NATIVE_DECLARE(recvfrom___STATIC__I4__OBJECT__SZARRAY_U1__I4__I4__I4__I4__BYREF_SystemNetEndPoint);
NANOCLR_NATIVE_DECLARE(getpeername___STATIC__VOID__OBJECT__BYREF_SystemNetEndPoint);
NANOCLR_NATIVE_DECLARE(getsockname___STATIC__VOID__OBJECT__BYREF_SystemNetEndPoint);
NANOCLR_NATIVE_DECLARE(getsockopt___STATIC__VOID__OBJECT__I4__I4__SZARRAY_U1);
NANOCLR_NATIVE_DECLARE(setsockopt___STATIC__VOID__OBJECT__I4__I4__SZARRAY_U1);
NANOCLR_NATIVE_DECLARE(poll___STATIC__BOOLEAN__OBJECT__I4__I4);
NANOCLR_NATIVE_DECLARE(ioctl___STATIC__VOID__OBJECT__U4__BYREF_U4);
//--//
static HRESULT MarshalSockAddress(
struct SOCK_sockaddr *addrDst,
CLR_UINT32 &addrLenDst,
const CLR_RT_HeapBlock &blkEndPointAddress);
static HRESULT MarshalSockAddress(
CLR_RT_HeapBlock &blkDst,
const struct SOCK_sockaddr *addrSrc,
CLR_UINT32 addrLenSrc);
static HRESULT SendRecvHelper(CLR_RT_StackFrame &stack, bool fSend, bool fAddress);
static HRESULT SockOptHelper(CLR_RT_StackFrame &stack, bool fGet);
static HRESULT SockNameHelper(CLR_RT_StackFrame &stack, bool fPeer);
static HRESULT BindConnectHelper(CLR_RT_StackFrame &stack, bool fBind);
static HRESULT ThrowOnError(CLR_RT_StackFrame &stack, CLR_INT32 err);
static void ThrowError(CLR_RT_StackFrame &stack, CLR_INT32 errorCode);
static CLR_INT32 Helper__SelectSocket(CLR_INT32 socket, CLR_INT32 mode);
/* WARNING!!!
* The value of this constant is the offset for the m_Handle field in the System.Net.Sockets.Socket class.
* It is defined here to avoid a circular reference issue.
*/
static const int FIELD__m_Handle = 1;
static const int DISPOSED_HANDLE = -1;
};
struct Library_sys_net_native_System_Net_Sockets_NetworkStream
{
static const int FIELD___socket = 1;
static const int FIELD___socketType = 2;
static const int FIELD___remoteEndPoint = 3;
static const int FIELD___ownsSocket = 4;
static const int FIELD___disposed = 5;
//--//
};
struct Library_sys_net_native_System_Net_Sockets_SocketException
{
static const int FIELD___errorCode = 5;
//--//
};
struct Library_sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate2
{
static const int FIELD___privateKey = 8;
static const int FIELD___password = 9;
NANOCLR_NATIVE_DECLARE(DecodePrivateKeyNative___STATIC__VOID__SZARRAY_U1__STRING);
//--//
};
extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Net;
#endif // SYS_NET_NATIVE_H