2 * sockets.h: Socket handles
5 * Dick Porter (dick@ximian.com)
7 * (C) 2002 Ximian, Inc.
10 #ifndef _WAPI_SOCKETS_H_
11 #define _WAPI_SOCKETS_H_
13 #include <sys/types.h>
14 #include <sys/socket.h>
15 #include <sys/ioctl.h>
16 #include <netinet/in.h>
17 #include <netinet/tcp.h>
19 #include <arpa/inet.h>
21 #include "mono/io-layer/wapi.h"
23 #define WSADESCRIPTION_LEN 256
24 #define WSASYS_STATUS_LEN 128
27 typedef unsigned int socklen_t;
34 char szDescription[WSADESCRIPTION_LEN+1];
35 char szSystemStatus[WSASYS_STATUS_LEN+1];
41 #define INVALID_SOCKET (guint32)(~0)
42 #define SOCKET_ERROR -1
44 extern int WSAStartup(guint32 requested, WapiWSAData *data);
45 extern int WSACleanup(void);
46 extern void WSASetLastError(int error);
47 extern int WSAGetLastError(void);
48 extern int closesocket(guint32 handle);
50 #ifndef _WAPI_BUILDING
51 #define accept _wapi_accept
52 #define bind _wapi_bind
53 #define connect _wapi_connect
54 #define getpeername _wapi_getpeername
55 #define getsockname _wapi_getsockname
56 #define getsockopt _wapi_getsockopt
57 #define listen _wapi_listen
58 #define recv _wapi_recv
59 #define recvfrom _wapi_recvfrom
60 #define send _wapi_send
61 #define sendto _wapi_sendto
62 #define setsockopt _wapi_setsockopt
63 #define shutdown _wapi_shutdown
64 #define socket _wapi_socket
65 #define gethostbyname _wapi_gethostbyname
66 #define select _wapi_select
80 /* No need to wrap FD_ZERO because it doesnt involve file
83 #define FD_CLR _wapi_FD_CLR
84 #define FD_ISSET _wapi_FD_ISSET
85 #define FD_SET _wapi_FD_SET
87 #endif /* _WAPI_BUILDING */
89 extern guint32 _wapi_accept(guint32 handle, struct sockaddr *addr,
91 extern int _wapi_bind(guint32 handle, struct sockaddr *my_addr,
93 extern int _wapi_connect(guint32 handle, const struct sockaddr *serv_addr,
95 extern int _wapi_getpeername(guint32 handle, struct sockaddr *name,
97 extern int _wapi_getsockname(guint32 handle, struct sockaddr *name,
99 extern int _wapi_getsockopt(guint32 handle, int level, int optname,
100 void *optval, socklen_t *optlen);
101 extern int _wapi_listen(guint32 handle, int backlog);
102 extern int _wapi_recv(guint32 handle, void *buf, size_t len, int recv_flags);
103 extern int _wapi_recvfrom(guint32 handle, void *buf, size_t len,
104 int recv_flags, struct sockaddr *from,
106 extern int _wapi_send(guint32 handle, const void *msg, size_t len,
108 extern int _wapi_sendto(guint32 handle, const void *msg, size_t len,
109 int send_flags, const struct sockaddr *to,
111 extern int _wapi_setsockopt(guint32 handle, int level, int optname,
112 const void *optval, socklen_t optlen);
113 extern int _wapi_shutdown(guint32 handle, int how);
114 extern guint32 _wapi_socket(int domain, int type, int protocol);;
115 extern struct hostent *_wapi_gethostbyname(const char *hostname);
116 extern int _wapi_select(int nfds, fd_set *readfds, fd_set *writefds,
117 fd_set *exceptfds, struct timeval *timeout);
118 extern void _wapi_FD_CLR(guint32 handle, fd_set *set);
119 extern int _wapi_FD_ISSET(guint32 handle, fd_set *set);
120 extern void _wapi_FD_SET(guint32 handle, fd_set *set);
122 extern int ioctlsocket(guint32 handle, gint32 command, gpointer arg);
124 #endif /* _WAPI_SOCKETS_H_ */