aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/utils/windows.c26
-rw-r--r--src/libstrongswan/utils/windows.h144
2 files changed, 147 insertions, 23 deletions
diff --git a/src/libstrongswan/utils/windows.c b/src/libstrongswan/utils/windows.c
index c0ae3d87a..741d199ec 100644
--- a/src/libstrongswan/utils/windows.c
+++ b/src/libstrongswan/utils/windows.c
@@ -322,9 +322,13 @@ static int wserr(int retval)
errno = EBADF;
break;
case WSAENETDOWN:
+ errno = ENETDOWN;
+ break;
case WSAENETRESET:
+ errno = ENETRESET;
+ break;
case WSAESHUTDOWN:
- errno = EPIPE;
+ errno = ECONNABORTED;
break;
case WSAEACCES:
errno = EACCES;
@@ -333,37 +337,43 @@ static int wserr(int retval)
errno = EINTR;
break;
case WSAEINPROGRESS:
- errno = EBUSY;
+ errno = EINPROGRESS;
break;
case WSAEFAULT:
errno = EFAULT;
break;
case WSAENOBUFS:
- errno = ENOMEM;
+ errno = ENOBUFS;
break;
case WSAENOTSOCK:
- errno = EINVAL;
+ errno = ENOTSOCK;
break;
case WSAEOPNOTSUPP:
- errno = ENOSYS;
+ errno = EOPNOTSUPP;
break;
case WSAEWOULDBLOCK:
errno = EWOULDBLOCK;
break;
case WSAEMSGSIZE:
- errno = ENOSPC;
+ errno = EMSGSIZE;
break;
case WSAEINVAL:
errno = EINVAL;
break;
case WSAENOTCONN:
+ errno = ENOTCONN;
+ break;
case WSAEHOSTUNREACH:
+ errno = EHOSTUNREACH;
+ break;
case WSAECONNABORTED:
+ errno = ECONNABORTED;
+ break;
case WSAECONNRESET:
- errno = EIO;
+ errno = ECONNRESET;
break;
case WSAETIMEDOUT:
- errno = ESRCH;
+ errno = ETIMEDOUT;
break;
default:
errno = ENOENT;
diff --git a/src/libstrongswan/utils/windows.h b/src/libstrongswan/utils/windows.h
index 766050d23..b66138644 100644
--- a/src/libstrongswan/utils/windows.h
+++ b/src/libstrongswan/utils/windows.h
@@ -266,21 +266,6 @@ char* getpass(const char *prompt);
#define MSG_DONTWAIT MSG_INTERRUPT
/**
- * EWOULDBLOCK is EAGAIN on other systems as well
- */
-#ifndef EWOULDBLOCK
-#define EWOULDBLOCK EAGAIN
-#endif
-
-/**
- * ECONNRESET is mapped to something arbitrary. It is returned by
- * stream->read_all() but should not be mapped from a send/recv WSA error.
- */
-#ifndef ECONNRESET
-#define ECONNRESET ENXIO
-#endif
-
-/**
* shutdown(2) "how"-aliases, to use Unix variant on Windows
*/
#define SHUT_RD SD_RECEIVE
@@ -319,6 +304,135 @@ ssize_t windows_send(int sockfd, const void *buf, size_t len, int flags);
ssize_t windows_sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
+/**
+ * MinGW does provide extended errno values. Windows itself knowns them
+ * for POSIX compatibility; we define them as well.
+ */
+#ifndef EADDRINUSE
+#define EADDRINUSE 100
+#endif
+#ifndef EADDRNOTAVAIL
+#define EADDRNOTAVAIL 101
+#endif
+#ifndef EAFNOSUPPORT
+#define EAFNOSUPPORT 102
+#endif
+#ifndef EALREADY
+#define EALREADY 103
+#endif
+#ifndef EBADMSG
+#define EBADMSG 104
+#endif
+#ifndef ECANCELED
+#define ECANCELED 105
+#endif
+#ifndef ECONNABORTED
+#define ECONNABORTED 106
+#endif
+#ifndef ECONNREFUSED
+#define ECONNREFUSED 107
+#endif
+#ifndef ECONNRESET
+#define ECONNRESET 108
+#endif
+#ifndef EDESTADDRREQ
+#define EDESTADDRREQ 109
+#endif
+#ifndef EHOSTUNREACH
+#define EHOSTUNREACH 110
+#endif
+#ifndef EIDRM
+#define EIDRM 111
+#endif
+#ifndef EINPROGRESS
+#define EINPROGRESS 112
+#endif
+#ifndef EISCONN
+#define EISCONN 113
+#endif
+#ifndef ELOOP
+#define ELOOP 114
+#endif
+#ifndef EMSGSIZE
+#define EMSGSIZE 115
+#endif
+#ifndef ENETDOWN
+#define ENETDOWN 116
+#endif
+#ifndef ENETRESET
+#define ENETRESET 117
+#endif
+#ifndef ENETUNREACH
+#define ENETUNREACH 118
+#endif
+#ifndef ENOBUFS
+#define ENOBUFS 119
+#endif
+#ifndef ENODATA
+#define ENODATA 120
+#endif
+#ifndef ENOLINK
+#define ENOLINK 121
+#endif
+#ifndef ENOMSG
+#define ENOMSG 122
+#endif
+#ifndef ENOPROTOOPT
+#define ENOPROTOOPT 123
+#endif
+#ifndef ENOSR
+#define ENOSR 124
+#endif
+#ifndef ENOSTR
+#define ENOSTR 125
+#endif
+#ifndef ENOTCONN
+#define ENOTCONN 126
+#endif
+#ifndef ENOTRECOVERABLE
+#define ENOTRECOVERABLE 127
+#endif
+#ifndef ENOTSOCK
+#define ENOTSOCK 128
+#endif
+#ifndef ENOTSUP
+#define ENOTSUP 129
+#endif
+#ifndef EOPNOTSUPP
+#define EOPNOTSUPP 130
+#endif
+#ifndef EOTHER
+#define EOTHER 131
+#endif
+#ifndef EOVERFLOW
+#define EOVERFLOW 132
+#endif
+#ifndef EOWNERDEAD
+#define EOWNERDEAD 133
+#endif
+#ifndef EPROTO
+#define EPROTO 134
+#endif
+#ifndef EPROTONOSUPPORT
+#define EPROTONOSUPPORT 135
+#endif
+#ifndef EPROTOTYPE
+#define EPROTOTYPE 136
+#endif
+#ifndef ETIME
+#define ETIME 137
+#endif
+#ifndef ETIMEDOUT
+#define ETIMEDOUT 138
+#endif
+#ifndef ETXTBSY
+#define ETXTBSY 139
+#endif
+#ifndef EWOULDBLOCK
+#define EWOULDBLOCK 140
+#endif
+
+
/* Windows does not support "ll" format printf length modifiers. Mingw
* therefore maps these to the Windows specific I64 length modifier. That
* won't work for us, as we use our own printf backend on Windows, which works