diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/core/os_abstraction.h | 88 |
1 files changed, 1 insertions, 87 deletions
diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h index c320cd910..32c6cffff 100644 --- a/src/network/core/os_abstraction.h +++ b/src/network/core/os_abstraction.h @@ -38,93 +38,7 @@ typedef unsigned long in_addr_t; typedef SSIZE_T ssize_t; typedef int socklen_t; # define IPPROTO_IPV6 41 -#else -#include "../../os/windows/win32.h" -#include "../../core/alloc_func.hpp" - -#define AI_ADDRCONFIG 0x00000400 /* Resolution only if global address configured */ -#define IPV6_V6ONLY 27 - -static inline int OTTDgetnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, DWORD hostlen, char *serv, DWORD servlen, int flags) -{ - static int (WINAPI *getnameinfo)(const struct sockaddr *, socklen_t, char *, DWORD, char *, DWORD, int) = NULL; - static bool first_time = true; - - if (first_time) { - LoadLibraryList((Function*)&getnameinfo, "ws2_32.dll\0getnameinfo\0\0"); - first_time = false; - } - - if (getnameinfo != NULL) return getnameinfo(sa, salen, host, hostlen, serv, servlen, flags); - - strncpy(host, inet_ntoa(((const struct sockaddr_in *)sa)->sin_addr), hostlen); - return 0; -} -#define getnameinfo OTTDgetnameinfo - -static inline int OTTDgetaddrinfo(const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res) -{ - static int (WINAPI *getaddrinfo)(const char *, const char *, const struct addrinfo *, struct addrinfo **) = NULL; - static bool first_time = true; - - if (first_time) { - LoadLibraryList((Function*)&getaddrinfo, "ws2_32.dll\0getaddrinfo\0\0"); - first_time = false; - } - - if (getaddrinfo != NULL) return getaddrinfo(nodename, servname, hints, res); - - *res = NULL; - - in_addr_t ip = inet_addr(nodename); - if (ip == INADDR_NONE) { - struct hostent *he = gethostbyname(nodename); - if (he == NULL) return EAI_NONAME; - ip = (*(struct in_addr *)he->h_addr).s_addr; - } - - struct sockaddr_in *sin = CallocT<struct sockaddr_in>(1); - sin->sin_family = AF_INET; - sin->sin_port = htons(strtoul(servname, NULL, 10)); - sin->sin_addr.s_addr = ip; - - struct addrinfo *ai = CallocT<struct addrinfo>(1); - ai->ai_family = PF_INET; - ai->ai_addr = (struct sockaddr*)sin; - ai->ai_addrlen = sizeof(*sin); - ai->ai_socktype = hints->ai_socktype; - - *res = ai; - return 0; -} -#define getaddrinfo OTTDgetaddrinfo - -static inline void OTTDfreeaddrinfo(struct addrinfo *ai) -{ - static int (WINAPI *freeaddrinfo)(struct addrinfo *) = NULL; - static bool first_time = true; - - if (ai == NULL) return; - - if (first_time) { - LoadLibraryList((Function*)&freeaddrinfo, "ws2_32.dll\0freeaddrinfo\0\0"); - first_time = false; - } - - if (freeaddrinfo != NULL) { - freeaddrinfo(ai); - return; - } - - do { - struct addrinfo *next = ai->ai_next; - free(ai->ai_addr); - free(ai); - ai = next; - } while (ai != NULL); -} -#define freeaddrinfo OTTDfreeaddrinfo -#endif /* __MINGW32__ && __CYGWIN__ */ +#endif /* !(__MINGW32__ && __CYGWIN__) */ #endif /* _WIN32 */ /* UNIX stuff */ |