[sre] Wrap mono_image_create_token with HANDLE_FUNCTION_{ENTER,RETURN}
[mono-project.git] / mono / metadata / w32socket.h
blobb03ac936738b3a38ed3d8a0d430e1c160baa1ffd
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>
17 #include <mono/metadata/object-internals.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_Tcp=6,
82 ProtocolType_Pup=12,
83 ProtocolType_Udp=17,
84 ProtocolType_Idp=22,
85 ProtocolType_IPv6=41,
86 ProtocolType_ND=77,
87 ProtocolType_Raw=255,
88 ProtocolType_Unspecified=0,
89 ProtocolType_Ipx=1000,
90 ProtocolType_Spx=1256,
91 ProtocolType_SpxII=1257,
92 ProtocolType_Unknown=-1
93 } MonoProtocolType;
95 /* This is a copy of System.Net.Sockets.SocketOptionLevel */
96 typedef enum {
97 SocketOptionLevel_Socket=65535,
98 SocketOptionLevel_IP=0,
99 SocketOptionLevel_IPv6=41,
100 SocketOptionLevel_Tcp=6,
101 SocketOptionLevel_Udp=17
102 } MonoSocketOptionLevel;
104 /* This is a copy of System.Net.Sockets.SocketOptionName */
105 typedef enum {
106 SocketOptionName_Debug=1,
107 SocketOptionName_AcceptConnection=2,
108 SocketOptionName_ReuseAddress=4,
109 SocketOptionName_KeepAlive=8,
110 SocketOptionName_DontRoute=16,
111 SocketOptionName_IPProtectionLevel = 23,
112 SocketOptionName_IPv6Only = 27,
113 SocketOptionName_Broadcast=32,
114 SocketOptionName_UseLoopback=64,
115 SocketOptionName_Linger=128,
116 SocketOptionName_OutOfBandInline=256,
117 SocketOptionName_DontLinger= -129,
118 SocketOptionName_ExclusiveAddressUse= -5,
119 SocketOptionName_SendBuffer= 4097,
120 SocketOptionName_ReceiveBuffer=4098,
121 SocketOptionName_SendLowWater=4099,
122 SocketOptionName_ReceiveLowWater=4100,
123 SocketOptionName_SendTimeout=4101,
124 SocketOptionName_ReceiveTimeout=4102,
125 SocketOptionName_Error=4103,
126 SocketOptionName_Type=4104,
127 SocketOptionName_MaxConnections=2147483647,
128 SocketOptionName_IPOptions=1,
129 SocketOptionName_HeaderIncluded=2,
130 SocketOptionName_TypeOfService=3,
131 SocketOptionName_IpTimeToLive=4,
132 SocketOptionName_MulticastInterface=9,
133 SocketOptionName_MulticastTimeToLive=10,
134 SocketOptionName_MulticastLoopback=11,
135 SocketOptionName_AddMembership=12,
136 SocketOptionName_DropMembership=13,
137 SocketOptionName_DontFragment=14,
138 SocketOptionName_AddSourceMembership=15,
139 SocketOptionName_DropSourceMembership=16,
140 SocketOptionName_BlockSource=17,
141 SocketOptionName_UnblockSource=18,
142 SocketOptionName_PacketInformation=19,
143 SocketOptionName_NoDelay=1,
144 SocketOptionName_BsdUrgent=2,
145 SocketOptionName_Expedited=2,
146 SocketOptionName_NoChecksum=1,
147 SocketOptionName_ChecksumCoverage=20,
148 SocketOptionName_HopLimit=21,
150 /* This is Mono-specific, keep it in sync with
151 * Mono.Posix/PeerCred.cs
153 SocketOptionName_PeerCred=10001
154 } MonoSocketOptionName;
156 /* This is a copy of System.Net.Sockets.SocketFlags */
157 typedef enum {
158 SocketFlags_None = 0x0000,
159 SocketFlags_OutOfBand = 0x0001,
160 SocketFlags_MaxIOVectorLength = 0x0010,
161 SocketFlags_Peek = 0x0002,
162 SocketFlags_DontRoute = 0x0004,
163 SocketFlags_Partial = 0x8000
164 } MonoSocketFlags;
166 typedef struct
168 MonoObject obj;
169 gint pid;
170 gint uid;
171 gint gid;
172 } MonoPeerCredData;
174 /* Safely access Mono.Posix.PeerCredData from native code */
175 TYPED_HANDLE_DECL (MonoPeerCredData);
177 gpointer
178 ves_icall_System_Net_Sockets_Socket_Socket_internal (MonoObjectHandle this_obj, gint32 family, gint32 type,
179 gint32 proto, gint32 *werror, MonoError *error);
181 void
182 ves_icall_System_Net_Sockets_Socket_Close_internal (gsize sock, gint32 *werror, MonoError *error);
184 gint32
185 ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal (void);
187 gint32
188 ves_icall_System_Net_Sockets_Socket_Available_internal (gsize sock, gint32 *werror, MonoError *error);
190 void
191 ves_icall_System_Net_Sockets_Socket_Blocking_internal (gsize sock, gboolean block, gint32 *werror, MonoError *error);
193 gpointer
194 ves_icall_System_Net_Sockets_Socket_Accept_internal (gsize sock, gint32 *werror, gboolean blocking, MonoError *error);
196 void
197 ves_icall_System_Net_Sockets_Socket_Listen_internal (gsize sock, guint32 backlog, gint32 *werror, MonoError *error);
199 MonoObjectHandle
200 ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal (gsize sock, gint32 af, gint32 *werror, MonoError *error);
202 MonoObjectHandle
203 ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal (gsize sock, gint32 af, gint32 *werror, MonoError *error);
205 void
206 ves_icall_System_Net_Sockets_Socket_Bind_internal (gsize sock, MonoObjectHandle sockaddr, gint32 *werror, MonoError *error);
208 void
209 ves_icall_System_Net_Sockets_Socket_Connect_internal (gsize sock, MonoObjectHandle sockaddr, gint32 *werror, gboolean blocking, MonoError *error);
211 gint32
212 ves_icall_System_Net_Sockets_Socket_Receive_internal (gsize sock, gchar *buffer, gint32 count,
213 gint32 flags, gint32 *werror, gboolean blocking, MonoError *error);
215 gint32
216 ves_icall_System_Net_Sockets_Socket_Receive_array_internal (gsize sock, WSABUF *buffers, gint32 count, gint32 flags,
217 gint32 *werror, gboolean blocking, MonoError *error);
219 gint32
220 ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal (gsize sock, gchar *buffer, gint32 count,
221 gint32 flags, MonoObjectHandle sockaddr, gint32 *werror, gboolean blocking, MonoError *error);
224 gint32
225 ves_icall_System_Net_Sockets_Socket_Send_internal (gsize sock, gchar *buffer, gint32 count,
226 gint32 flags, gint32 *werror, gboolean blocking, MonoError *error);
228 gint32
229 ves_icall_System_Net_Sockets_Socket_Send_array_internal (gsize sock, WSABUF *buffers, gint32 count, gint32 flags,
230 gint32 *werror, gboolean blocking, MonoError *error);
232 gint32
233 ves_icall_System_Net_Sockets_Socket_SendTo_internal (gsize sock, gchar *buffer, gint32 count,
234 gint32 flags, MonoObjectHandle sockaddr, gint32 *werror,
235 gboolean blocking, MonoError *error);
237 void
238 ves_icall_System_Net_Sockets_Socket_Select_internal (MonoArrayHandle sockets, gint32 timeout, gint32 *werror, MonoError *error);
240 void
241 ves_icall_System_Net_Sockets_Socket_Shutdown_internal (gsize sock, gint32 how, gint32 *werror, MonoError *error);
243 void
244 ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal (gsize sock, gint32 level, gint32 name,
245 MonoObjectHandle obj_val, gint32 *werror,
246 MonoError *error);
248 void
249 ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal (gsize sock, gint32 level, gint32 name,
250 MonoArrayHandle byte_val, gint32 *werror,
251 MonoError *error);
253 void
254 ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (gsize sock, gint32 level, gint32 name,
255 MonoObjectHandle obj_val, MonoArrayHandle byte_val,
256 gint32 int_val, gint32 *werror, MonoError *error);
259 ves_icall_System_Net_Sockets_Socket_IOControl_internal (gsize sock, gint32 code,
260 MonoArrayHandle input, MonoArrayHandle output,
261 gint32 *werror, MonoError *error);
263 MonoBoolean
264 ves_icall_System_Net_Dns_GetHostByName_internal (MonoStringHandle host, MonoStringHandleOut h_name,
265 MonoArrayHandleOut h_aliases, MonoArrayHandleOut h_addr_list,
266 gint32 hint, MonoError *error);
268 MonoBoolean
269 ves_icall_System_Net_Dns_GetHostByAddr_internal (MonoStringHandle addr, MonoStringHandleOut h_name,
270 MonoArrayHandleOut h_aliases, MonoArrayHandleOut h_addr_list,
271 gint32 hint, MonoError *error);
273 MonoBoolean
274 ves_icall_System_Net_Dns_GetHostName_internal (MonoStringHandleOut h_name, MonoError *error);
276 MonoBoolean
277 ves_icall_System_Net_Sockets_Socket_Poll_internal (gsize sock, gint mode, gint timeout, gint32 *werror, MonoError *error);
279 void
280 ves_icall_System_Net_Sockets_Socket_Disconnect_internal (gsize sock, MonoBoolean reuse, gint32 *werror, MonoError *error);
282 MonoBoolean
283 ves_icall_System_Net_Sockets_Socket_Duplicate_internal (gpointer handle, gint32 targetProcessId, gpointer *duplicate_handle, gint32 *werror, MonoError *error);
285 gboolean
286 ves_icall_System_Net_Sockets_Socket_SendFile_internal (gsize sock, MonoStringHandle filename,
287 MonoArrayHandle pre_buffer, MonoArrayHandle post_buffer,
288 gint flags, gint32 *werror, gboolean blocking, MonoError *error);
290 void
291 icall_cancel_blocking_socket_operation (MonoThreadObjectHandle thread, MonoError *error);
293 gboolean
294 ves_icall_System_Net_Sockets_Socket_SupportPortReuse (MonoProtocolType proto, MonoError *error);
296 void
297 mono_network_init(void);
299 void
300 mono_network_cleanup(void);
302 #endif /* _MONO_METADATA_W32SOCKET_H_ */