aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2016-03-07 20:25:19 +0000
committerDaniel P. Berrange <berrange@redhat.com>2016-03-10 17:19:07 +0000
commit0c0fc799012cd2eda0b0a78a85c1fbf21036d3dd (patch)
tree9142ca114428e7dfcce541415e02c85db7c7d687
parent23917decb28eb5248ae39f1c5c18b08635d58588 (diff)
downloadslirp-0c0fc799012cd2eda0b0a78a85c1fbf21036d3dd.zip
slirp-0c0fc799012cd2eda0b0a78a85c1fbf21036d3dd.tar.gz
slirp-0c0fc799012cd2eda0b0a78a85c1fbf21036d3dd.tar.bz2
osdep: add wrappers for socket functions
The windows socket functions look identical to the normal POSIX sockets functions, but instead of setting errno, the caller needs to call WSAGetLastError(). QEMU has tried to deal with this incompatibility by defining a socket_error() method that callers must use that abstracts the difference between WSAGetLastError() and errno. This approach is somewhat error prone though - many callers of the sockets functions are just using errno directly because it is easy to forget the need use a QEMU specific wrapper. It is not always immediately obvious that a particular function will in fact call into Windows sockets functions, so the dev may not even realize they need to use socket_error(). This introduces an alternative approach to portability inspired by the way GNULIB fixes portability problems. We use a macro to redefine the original socket function names to refer to a QEMU wrapper function. The wrapper function calls the original Win32 sockets method and then sets errno from the WSAGetLastError() value. Thus all code can simply call the normal POSIX sockets APIs are have standard errno reporting on error, even on Windows. This makes the socket_error() method obsolete. We also bring closesocket & ioctlsocket into this approach. Even though they are non-standard Win32 names, we can't wrap the normal close/ioctl methods since there's no reliable way to distinguish between a file descriptor and HANDLE in Win32. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
-rw-r--r--slirp.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/slirp.h b/slirp.h
index 7b1ef73..26c686e 100644
--- a/slirp.h
+++ b/slirp.h
@@ -14,8 +14,6 @@ typedef char *caddr_t;
#include <iphlpapi.h>
#else
-#define ioctlsocket ioctl
-#define closesocket(s) close(s)
#if !defined(__HAIKU__)
#define O_BINARY 0
#endif