X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsocket-io.h;h=1a16fba421dbe0b9cc6f1eaf371c0d314d409b77;hb=bc9d5d113ab7064fc199a2f430751643466cb477;hp=aea7ffa90f76a5f3b8c41183002d2084ae924686;hpb=37fa83471434ac3c3fcd8b4f32b454d99501507f;p=mono.git diff --git a/mono/metadata/socket-io.h b/mono/metadata/socket-io.h index aea7ffa90f7..5e1c7ef43a9 100644 --- a/mono/metadata/socket-io.h +++ b/mono/metadata/socket-io.h @@ -13,7 +13,7 @@ #include #include -#include +#include #include /* This is a copy of System.Net.Sockets.SocketType */ @@ -23,7 +23,7 @@ typedef enum { SocketType_Raw=3, SocketType_Rdm=4, SocketType_Seqpacket=5, - SocketType_Unknown=-1, + SocketType_Unknown=-1 } MonoSocketType; /* This is a copy of System.Net.Sockets.AddressFamily */ @@ -57,7 +57,7 @@ typedef enum { AddressFamily_Cluster=24, AddressFamily_Ieee12844=25, AddressFamily_Irda=26, - AddressFamily_NetworkDesigners=28, + AddressFamily_NetworkDesigners=28 } MonoAddressFamily; /* This is a copy of System.Net.Sockets.ProtocolType */ @@ -77,7 +77,7 @@ typedef enum { ProtocolType_Ipx=1000, ProtocolType_Spx=1256, ProtocolType_SpxII=1257, - ProtocolType_Unknown=-1, + ProtocolType_Unknown=-1 } MonoProtocolType; /* This is a copy of System.Net.Sockets.SocketOptionLevel */ @@ -86,7 +86,7 @@ typedef enum { SocketOptionLevel_IP=0, SocketOptionLevel_IPv6=41, SocketOptionLevel_Tcp=6, - SocketOptionLevel_Udp=17, + SocketOptionLevel_Udp=17 } MonoSocketOptionLevel; /* This is a copy of System.Net.Sockets.SocketOptionName */ @@ -96,6 +96,8 @@ typedef enum { SocketOptionName_ReuseAddress=4, SocketOptionName_KeepAlive=8, SocketOptionName_DontRoute=16, + SocketOptionName_IPProtectionLevel = 23, + SocketOptionName_IPv6Only = 27, SocketOptionName_Broadcast=32, SocketOptionName_UseLoopback=64, SocketOptionName_Linger=128, @@ -131,32 +133,62 @@ typedef enum { SocketOptionName_Expedited=2, SocketOptionName_NoChecksum=1, SocketOptionName_ChecksumCoverage=20, + SocketOptionName_HopLimit=21, + + /* This is Mono-specific, keep it in sync with + * Mono.Posix/PeerCred.cs + */ + SocketOptionName_PeerCred=10001 } MonoSocketOptionName; -extern gpointer ves_icall_System_Net_Sockets_Socket_Socket_internal(MonoObject *this, gint32 family, gint32 type, gint32 proto, gint32 *error); +/* This is a copy of System.Net.Sockets.SocketFlags */ +typedef enum { + SocketFlags_None = 0x0000, + SocketFlags_OutOfBand = 0x0001, + SocketFlags_MaxIOVectorLength = 0x0010, + SocketFlags_Peek = 0x0002, + SocketFlags_DontRoute = 0x0004, + SocketFlags_Partial = 0x8000 +} MonoSocketFlags; + +typedef struct +{ + MonoObject obj; + gint pid; + gint uid; + gint gid; +} MonoPeerCredData; + +extern gpointer ves_icall_System_Net_Sockets_Socket_Socket_internal(MonoObject *this_obj, gint32 family, gint32 type, gint32 proto, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_Close_internal(SOCKET sock, gint32 *error); extern gint32 ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal(void); extern gint32 ves_icall_System_Net_Sockets_Socket_Available_internal(SOCKET sock, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_Blocking_internal(SOCKET sock, gboolean block, gint32 *error); -extern gpointer ves_icall_System_Net_Sockets_Socket_Accept_internal(SOCKET sock, gint32 *error); +extern gpointer ves_icall_System_Net_Sockets_Socket_Accept_internal(SOCKET sock, gint32 *error, gboolean blocking); extern void ves_icall_System_Net_Sockets_Socket_Listen_internal(SOCKET sock, guint32 backlog, gint32 *error); -extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock, gint32 *error); -extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock, gint32 *error); +extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock, gint32 af, gint32 *error); +extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock, gint32 af, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_Bind_internal(SOCKET sock, MonoObject *sockaddr, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_Connect_internal(SOCKET sock, MonoObject *sockaddr, gint32 *error); extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, gint32 *error); -extern gint32 ves_icall_System_Net_Sockets_Socket_RecvFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error); +extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_array_internal(SOCKET sock, MonoArray *buffers, gint32 flags, gint32 *error); +extern gint32 ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error); extern gint32 ves_icall_System_Net_Sockets_Socket_Send_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, gint32 *error); +extern gint32 ves_icall_System_Net_Sockets_Socket_Send_array_internal(SOCKET sock, MonoArray *buffers, gint32 flags, gint32 *error); extern gint32 ves_icall_System_Net_Sockets_Socket_SendTo_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject *sockaddr, gint32 *error); -extern void ves_icall_System_Net_Sockets_Socket_Select_internal(MonoArray **read_socks, MonoArray **write_socks, MonoArray **err_socks, gint32 timeout, gint32 *error); +extern void ves_icall_System_Net_Sockets_Socket_Select_internal(MonoArray **sockets, gint32 timeout, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_Shutdown_internal(SOCKET sock, gint32 how, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal(SOCKET sock, gint32 level, gint32 name, MonoObject **obj_val, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal(SOCKET sock, gint32 level, gint32 name, MonoArray **byte_val, gint32 *error); extern void ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal(SOCKET sock, gint32 level, gint32 name, MonoObject *obj_val, MonoArray *byte_val, gint32 int_val, gint32 *error); -extern int ves_icall_System_Net_Sockets_Socket_WSAIoctl (SOCKET sock, gint32 code, MonoArray *input, MonoArray *output, gint32 *error); +extern int ves_icall_System_Net_Sockets_Socket_IOControl_internal (SOCKET sock, gint32 code, MonoArray *input, MonoArray *output, gint32 *error); extern MonoBoolean ves_icall_System_Net_Dns_GetHostByName_internal(MonoString *host, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list); extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *addr, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list); extern MonoBoolean ves_icall_System_Net_Dns_GetHostName_internal(MonoString **h_name); +extern MonoBoolean ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET sock, gint mode, gint timeout, gint32 *error); +extern void ves_icall_System_Net_Sockets_Socket_Disconnect_internal(SOCKET sock, MonoBoolean reuse, gint32 *error); +extern gboolean ves_icall_System_Net_Sockets_Socket_SendFile_internal (SOCKET sock, MonoString *filename, MonoArray *pre_buffer, MonoArray *post_buffer, gint flags); +void icall_cancel_blocking_socket_operation (MonoThread *thread); extern void mono_network_init(void); extern void mono_network_cleanup(void);