#endif
-static int inited;
-
int slirp_init(void)
{
// debug_init("/tmp/slirp.log", DEBUG_DEFAULT);
#ifdef _WIN32
+ static int inited;
+
if (!inited) {
WSADATA Data;
WSAStartup(MAKEWORD(2,0), &Data);
# define write_udp slirp_write_udp
# define init_udp slirp_init_udp
# define final_udp slirp_final_udp
-#else
+#else //!_WIN32
typedef int ioctlsockopt_t;
+
+# define WSAGetLastError() (int)(errno)
+# define WSASetLastError(e) (void)(errno = (e))
+# define WSAEWOULDBLOCK EWOULDBLOCK
+# define WSAEINPROGRESS EINPROGRESS
+# define WSAENOTCONN ENOTCONN
+# define WSAEHOSTUNREACH EHOSTUNREACH
+# define WSAENETUNREACH ENETUNREACH
+# define WSAECONNREFUSED ECONNREFUSED
+
+# define SLIRP_SOCKET int
+
# define ioctlsocket ioctl
# define closesocket(s) close(s)
# define O_BINARY 0
if (ti->ti_len == 0 && tiwin == tp->snd_wnd) {
tcpstat.tcps_rcvdupack++;
DEBUG_MISC((" dup ack m = %p so = %p \n",
- (long)m, (long)so));
+ m, so));
/*
* If we have outstanding data (other than
* a window probe), this is a completely
if(bind(so->s, (struct sockaddr *)&addr, sizeof(addr))<0) {
int error = WSAGetLastError();
closesocket(so->s);
- so->s =- 1;
+ so->s = -1;
WSASetLastError(error);
} else {
/* success, insert in queue */