update readme (#21797)
[mono-project.git] / mono / metadata / w32socket.h
blobd61055cabd11b73d61e425a36c3a983d3c8cf195
1 /**
2 * \file
3 * System.Net.Sockets.Socket support
5 * Author:
6 * Dick Porter (dick@ximian.com)
8 * (C) 2001 Ximian, Inc.
9 */
11 #ifndef _MONO_METADATA_W32SOCKET_H_
12 #define _MONO_METADATA_W32SOCKET_H_
14 #include <config.h>
15 #include <glib.h>
16 #include <mono/metadata/object-internals.h>
17 #include <mono/metadata/icalls.h>
19 #ifndef HOST_WIN32
20 #define INVALID_SOCKET ((SOCKET)(guint32)(~0))
21 #define SOCKET_ERROR (-1)
23 typedef gint SOCKET;
25 typedef struct {
26 guint32 len;
27 gpointer buf;
28 } WSABUF, *LPWSABUF;
29 #endif
31 /* This is a copy of System.Net.Sockets.SocketType */
32 typedef enum {
33 SocketType_Stream=1,
34 SocketType_Dgram=2,
35 SocketType_Raw=3,
36 SocketType_Rdm=4,
37 SocketType_Seqpacket=5,
38 SocketType_Unknown=-1
39 } MonoSocketType;
41 /* This is a copy of System.Net.Sockets.AddressFamily */
42 typedef enum {
43 AddressFamily_Unknown=-1,
44 AddressFamily_Unspecified=0,
45 AddressFamily_Unix=1,
46 AddressFamily_InterNetwork=2,
47 AddressFamily_ImpLink=3,
48 AddressFamily_Pup=4,
49 AddressFamily_Chaos=5,
50 AddressFamily_NS=6,
51 AddressFamily_Ipx=6,
52 AddressFamily_Iso=7,
53 AddressFamily_Osi=7,
54 AddressFamily_Ecma=8,
55 AddressFamily_DataKit=9,
56 AddressFamily_Ccitt=10,
57 AddressFamily_Sna=11,
58 AddressFamily_DecNet=12,
59 AddressFamily_DataLink=13,
60 AddressFamily_Lat=14,
61 AddressFamily_HyperChannel=15,
62 AddressFamily_AppleTalk=16,
63 AddressFamily_NetBios=17,
64 AddressFamily_VoiceView=18,
65 AddressFamily_FireFox=19,
66 AddressFamily_Banyan=21,
67 AddressFamily_Atm=22,
68 AddressFamily_InterNetworkV6=23,
69 AddressFamily_Cluster=24,
70 AddressFamily_Ieee12844=25,
71 AddressFamily_Irda=26,
72 AddressFamily_NetworkDesigners=28
73 } MonoAddressFamily;
75 /* This is a copy of System.Net.Sockets.ProtocolType */
76 typedef enum {
77 ProtocolType_IP=0,
78 ProtocolType_Icmp=1,
79 ProtocolType_Igmp=2,
80 ProtocolType_Ggp=3,
81 ProtocolType_IPv4=4,
82 ProtocolType_Tcp=6,
83 ProtocolType_Pup=12,
84 ProtocolType_Udp=17,
85 ProtocolType_Idp=22,
86 ProtocolType_IPv6=41,
87 ProtocolType_IPv6RoutingHeader=43,
88 ProtocolType_IPv6FragmentHeader=44,
89 ProtocolType_IPSecEncapsulatingSecurityPayload=50,
90 ProtocolType_IPSecAuthenticationHeader=51,
91 ProtocolType_IcmpV6=58,
92 ProtocolType_IPv6NoNextHeader=59,
93 ProtocolType_IPv6DestinationOptions=60,
94 ProtocolType_ND=77,
95 ProtocolType_Raw=255,
96 ProtocolType_Unspecified=0,
97 ProtocolType_Ipx=1000,
98 ProtocolType_Spx=1256,
99 ProtocolType_SpxII=1257,
100 ProtocolType_Unknown=-1
101 } MonoProtocolType;
103 /* This is a copy of System.Net.Sockets.SocketOptionLevel */
104 typedef enum {
105 SocketOptionLevel_Socket=65535,
106 SocketOptionLevel_IP=0,
107 SocketOptionLevel_IPv6=41,
108 SocketOptionLevel_Tcp=6,
109 SocketOptionLevel_Udp=17
110 } MonoSocketOptionLevel;
112 /* This is a copy of System.Net.Sockets.SocketOptionName */
113 typedef enum {
114 SocketOptionName_Debug=1,
115 SocketOptionName_AcceptConnection=2,
116 SocketOptionName_ReuseAddress=4,
117 SocketOptionName_KeepAlive=8,
118 SocketOptionName_DontRoute=16,
119 SocketOptionName_IPProtectionLevel = 23,
120 SocketOptionName_IPv6Only = 27,
121 SocketOptionName_Broadcast=32,
122 SocketOptionName_UseLoopback=64,
123 SocketOptionName_Linger=128,
124 SocketOptionName_OutOfBandInline=256,
125 SocketOptionName_DontLinger= -129,
126 SocketOptionName_ExclusiveAddressUse= -5,
127 SocketOptionName_SendBuffer= 4097,
128 SocketOptionName_ReceiveBuffer=4098,
129 SocketOptionName_SendLowWater=4099,
130 SocketOptionName_ReceiveLowWater=4100,
131 SocketOptionName_SendTimeout=4101,
132 SocketOptionName_ReceiveTimeout=4102,
133 SocketOptionName_Error=4103,
134 SocketOptionName_Type=4104,
135 SocketOptionName_MaxConnections=2147483647,
136 SocketOptionName_IPOptions=1,
137 SocketOptionName_HeaderIncluded=2,
138 SocketOptionName_TypeOfService=3,
139 SocketOptionName_IpTimeToLive=4,
140 SocketOptionName_MulticastInterface=9,
141 SocketOptionName_MulticastTimeToLive=10,
142 SocketOptionName_MulticastLoopback=11,
143 SocketOptionName_AddMembership=12,
144 SocketOptionName_DropMembership=13,
145 SocketOptionName_DontFragment=14,
146 SocketOptionName_AddSourceMembership=15,
147 SocketOptionName_DropSourceMembership=16,
148 SocketOptionName_BlockSource=17,
149 SocketOptionName_UnblockSource=18,
150 SocketOptionName_PacketInformation=19,
151 SocketOptionName_NoDelay=1,
152 SocketOptionName_BsdUrgent=2,
153 SocketOptionName_Expedited=2,
154 SocketOptionName_NoChecksum=1,
155 SocketOptionName_ChecksumCoverage=20,
156 SocketOptionName_HopLimit=21,
158 /* This is Mono-specific, keep it in sync with
159 * Mono.Posix/PeerCred.cs
161 SocketOptionName_PeerCred=10001
162 } MonoSocketOptionName;
164 /* This is a copy of System.Net.Sockets.SocketFlags */
165 typedef enum {
166 SocketFlags_None = 0x0000,
167 SocketFlags_OutOfBand = 0x0001,
168 SocketFlags_MaxIOVectorLength = 0x0010,
169 SocketFlags_Peek = 0x0002,
170 SocketFlags_DontRoute = 0x0004,
171 SocketFlags_Partial = 0x8000
172 } MonoSocketFlags;
174 typedef struct
176 MonoObject obj;
177 gint pid;
178 gint uid;
179 gint gid;
180 } MonoPeerCredData;
182 /* Safely access Mono.Posix.PeerCredData from native code */
183 TYPED_HANDLE_DECL (MonoPeerCredData);
185 ICALL_EXPORT
186 gint32
187 ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_icall (void);
189 void
190 mono_network_init(void);
192 void
193 mono_network_cleanup(void);
195 #endif /* _MONO_METADATA_W32SOCKET_H_ */