diff options
author | Sadie Powell <sadie@witchery.services> | 2022-12-17 12:40:58 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2022-12-17 12:40:58 +0000 |
commit | 8a8fb7725b4433b725866cc8842edf40ec8b7025 (patch) | |
tree | 99098049217e11c2c497a75e7b5f44bace29fe1b | |
parent | f6e5e6a2b4dd3f5e6e9e5c152dd92fcd9bc440f2 (diff) |
Use the native versions of inet_ntop/inet_pton on Windows.
-rw-r--r-- | src/win32/socket.cpp | 81 | ||||
-rw-r--r-- | src/win32/socket.h | 4 |
2 files changed, 0 insertions, 85 deletions
diff --git a/src/win32/socket.cpp b/src/win32/socket.cpp index f1cbcc56c..8b95c7c93 100644 --- a/src/win32/socket.cpp +++ b/src/win32/socket.cpp @@ -48,87 +48,6 @@ int windows_accept(int fd, struct sockaddr *addr, int *addrlen) return i; } -/** This is inet_pton, but it works on Windows - * @param af The protocol type, AF_INET or AF_INET6 - * @param src The address - * @param dst Struct to put results in - * @return 1 on success, -1 on error - */ -int windows_inet_pton(int af, const char *src, void *dst) -{ - int address_length; - sockaddr_storage sa; - sockaddr_in *sin = reinterpret_cast<sockaddr_in *>(&sa); - sockaddr_in6 *sin6 = reinterpret_cast<sockaddr_in6 *>(&sa); - - switch (af) - { - case AF_INET: - address_length = sizeof(sockaddr_in); - break; - case AF_INET6: - address_length = sizeof(sockaddr_in6); - break; - default: - return -1; - } - - if (!WSAStringToAddress(static_cast<LPSTR>(const_cast<char *>(src)), af, NULL, reinterpret_cast<LPSOCKADDR>(&sa), &address_length)) - { - switch (af) - { - case AF_INET: - memcpy(dst, &sin->sin_addr, sizeof(in_addr)); - break; - case AF_INET6: - memcpy(dst, &sin6->sin6_addr, sizeof(in6_addr)); - break; - } - return 1; - } - - return 0; -} - -/** This is inet_ntop, but it works on Windows - * @param af The protocol type, AF_INET or AF_INET6 - * @param src Network address structure - * @param dst After converting put it here - * @param size sizeof the dest - * @return dst - */ -const char *windows_inet_ntop(int af, const void *src, char *dst, size_t size) -{ - int address_length; - DWORD string_length = size; - sockaddr_storage sa; - sockaddr_in *sin = reinterpret_cast<sockaddr_in *>(&sa); - sockaddr_in6 *sin6 = reinterpret_cast<sockaddr_in6 *>(&sa); - - memset(&sa, 0, sizeof(sa)); - - switch (af) - { - case AF_INET: - address_length = sizeof(sockaddr_in); - sin->sin_family = af; - memcpy(&sin->sin_addr, src, sizeof(in_addr)); - break; - case AF_INET6: - address_length = sizeof(sockaddr_in6); - sin6->sin6_family = af; - memcpy(&sin6->sin6_addr, src, sizeof(in6_addr)); - break; - default: - return NULL; - } - - if (!WSAAddressToString(reinterpret_cast<LPSOCKADDR>(&sa), address_length, NULL, dst, &string_length)) - return dst; - - return NULL; -} - int fcntl(int fd, int cmd, int arg) { if (cmd == F_GETFL) diff --git a/src/win32/socket.h b/src/win32/socket.h index 147289435..9634cd718 100644 --- a/src/win32/socket.h +++ b/src/win32/socket.h @@ -21,12 +21,8 @@ extern CoreExport int read(int fd, char *buf, size_t count); extern CoreExport int write(int fd, const char *buf, size_t count); extern CoreExport int windows_close(int fd); extern CoreExport int windows_accept(int fd, struct sockaddr *addr, int *addrlen); -extern CoreExport int windows_inet_pton(int af, const char *src, void *dst); -extern CoreExport const char *windows_inet_ntop(int af, const void *src, char *dst, size_t size); extern CoreExport int fcntl(int fd, int cmd, int arg); #ifndef WIN32_NO_OVERRIDE # define accept windows_accept -# define inet_pton windows_inet_pton -# define inet_ntop windows_inet_ntop #endif |