2 * socket-io.h: Socket IO internal calls
5 * Dick Porter (dick@ximian.com)
7 * (C) 2001 Ximian, Inc.
10 #ifndef _MONO_METADATA_SOCKET_H_
11 #define _MONO_METADATA_SOCKET_H_
16 #include <mono/metadata/object.h>
17 #include <mono/io-layer/io-layer.h>
19 /* This is a copy of System.Net.Sockets.SocketType */
25 SocketType_Seqpacket=5,
26 SocketType_Unknown=-1,
29 /* This is a copy of System.Net.Sockets.AddressFamily */
31 AddressFamily_Unknown=-1,
32 AddressFamily_Unspecified=0,
34 AddressFamily_InterNetwork=2,
35 AddressFamily_ImpLink=3,
37 AddressFamily_Chaos=5,
43 AddressFamily_DataKit=9,
44 AddressFamily_Ccitt=10,
46 AddressFamily_DecNet=12,
47 AddressFamily_DataLink=13,
49 AddressFamily_HyperChannel=15,
50 AddressFamily_AppleTalk=16,
51 AddressFamily_NetBios=17,
52 AddressFamily_VoiceView=18,
53 AddressFamily_FireFox=19,
54 AddressFamily_Banyan=21,
56 AddressFamily_InterNetworkV6=23,
57 AddressFamily_Cluster=24,
58 AddressFamily_Ieee12844=25,
59 AddressFamily_Irda=26,
60 AddressFamily_NetworkDesigners=28,
63 /* This is a copy of System.Net.Sockets.ProtocolType */
75 ProtocolType_Unspecified=0,
76 ProtocolType_Ipx=1000,
77 ProtocolType_Spx=1256,
78 ProtocolType_SpxII=1257,
79 ProtocolType_Unknown=-1,
82 /* This is a copy of System.Net.Sockets.SocketOptionLevel */
84 SocketOptionLevel_Socket=65535,
85 SocketOptionLevel_IP=0,
86 SocketOptionLevel_Tcp=6,
87 SocketOptionLevel_Udp=17,
88 } MonoSocketOptionLevel;
90 /* This is a copy of System.Net.Sockets.SocketOptionName */
92 SocketOptionName_Debug=1,
93 SocketOptionName_AcceptConnection=2,
94 SocketOptionName_ReuseAddress=4,
95 SocketOptionName_KeepAlive=8,
96 SocketOptionName_DontRoute=16,
97 SocketOptionName_Broadcast=32,
98 SocketOptionName_UseLoopback=64,
99 SocketOptionName_Linger=128,
100 SocketOptionName_OutOfBandInline=256,
101 SocketOptionName_DontLinger= -129,
102 SocketOptionName_ExclusiveAddressUse= -5,
103 SocketOptionName_SendBuffer= 4097,
104 SocketOptionName_ReceiveBuffer=4098,
105 SocketOptionName_SendLowWater=4099,
106 SocketOptionName_ReceiveLowWater=4100,
107 SocketOptionName_SendTimeout=4101,
108 SocketOptionName_ReceiveTimeout=4102,
109 SocketOptionName_Error=4103,
110 SocketOptionName_Type=4104,
111 SocketOptionName_MaxConnections=2147483647,
112 SocketOptionName_IPOptions=1,
113 SocketOptionName_HeaderIncluded=2,
114 SocketOptionName_TypeOfService=3,
115 SocketOptionName_IpTimeToLive=4,
116 SocketOptionName_MulticastInterface=9,
117 SocketOptionName_MulticastTimeToLive=10,
118 SocketOptionName_MulticastLoopback=11,
119 SocketOptionName_AddMembership=12,
120 SocketOptionName_DropMembership=13,
121 SocketOptionName_DontFragment=14,
122 SocketOptionName_AddSourceMembership=15,
123 SocketOptionName_DropSourceMembership=16,
124 SocketOptionName_BlockSource=17,
125 SocketOptionName_UnblockSource=18,
126 SocketOptionName_PacketInformation=19,
127 SocketOptionName_NoDelay=1,
128 SocketOptionName_BsdUrgent=2,
129 SocketOptionName_Expedited=2,
130 SocketOptionName_NoChecksum=1,
131 SocketOptionName_ChecksumCoverage=20,
132 } MonoSocketOptionName;
134 extern SOCKET ves_icall_System_Net_Sockets_Socket_Socket_internal(MonoObject *this, gint32 family, gint32 type, gint32 proto);
135 extern void ves_icall_System_Net_Sockets_Socket_Close_internal(SOCKET sock);
136 extern gint32 ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal(void);
137 extern gint32 ves_icall_System_Net_Sockets_Socket_Available_internal(SOCKET sock);
138 extern void ves_icall_System_Net_Sockets_Socket_Blocking_internal(SOCKET sock, gboolean block);
139 extern SOCKET ves_icall_System_Net_Sockets_Socket_Accept_internal(SOCKET sock);
140 extern void ves_icall_System_Net_Sockets_Socket_Listen_internal(SOCKET sock, guint32 backlog);
141 extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock);
142 extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock);
143 extern void ves_icall_System_Net_Sockets_Socket_Bind_internal(SOCKET sock, MonoObject *sockaddr);
144 extern void ves_icall_System_Net_Sockets_Socket_Connect_internal(SOCKET sock, MonoObject *sockaddr);
145 extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags);
146 extern gint32 ves_icall_System_Net_Sockets_Socket_RecvFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr);
147 extern gint32 ves_icall_System_Net_Sockets_Socket_Send_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags);
148 extern gint32 ves_icall_System_Net_Sockets_Socket_SendTo_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject *sockaddr);
149 extern void ves_icall_System_Net_Sockets_Socket_Select_internal(MonoArray **read_socks, MonoArray **write_socks, MonoArray **err_socks, gint32 timeout);
150 extern void ves_icall_System_Net_Sockets_Socket_Shutdown_internal(SOCKET sock, gint32 how);
151 extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal(SOCKET sock, gint32 level, gint32 name, MonoObject **obj_val);
152 extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal(SOCKET sock, gint32 level, gint32 name, MonoArray **byte_val);
153 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);
154 extern gboolean ves_icall_System_Net_Dns_GetHostByName_internal(MonoString *host, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list);
155 extern gboolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *addr, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list);
157 extern void mono_network_init(void);
158 extern void mono_network_cleanup(void);
160 #endif /* _MONO_METADATA_SOCKET_H_ */