From b1bf27d02306e2664628d9cc24f476b3058107d2 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 22 Jul 2026 09:08:19 +0300 Subject: [PATCH] fix Windows warnings: getpid, htole64, gettimeofday, socket_t mismatches, radix min --- lib/platform_compat.h | 3 +++ lib/radix.c | 3 ++- src/transport_layer/dummynet.c | 2 +- src/transport_layer/dummynet.h | 3 ++- tests/bbr_integration/test_bbr_integration.c | 2 +- tests/test_udp_proxy.c | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/platform_compat.h b/lib/platform_compat.h index 39a8e0c7..b44a4a6f 100644 --- a/lib/platform_compat.h +++ b/lib/platform_compat.h @@ -28,6 +28,8 @@ extern "C" { #define be32toh(x) _byteswap_ulong(x) #define htobe64(x) _byteswap_uint64(x) #define be64toh(x) _byteswap_uint64(x) + #define htole64(x) (x) + #define le64toh(x) (x) #else #include #endif @@ -35,6 +37,7 @@ extern "C" { // POSIX functions missing on Windows #define strcasecmp _stricmp #define strncasecmp _strnicmp + #define getpid() ((int)GetCurrentProcessId()) // memmem — not available on Windows #define memmem compat_memmem diff --git a/lib/radix.c b/lib/radix.c index e0b56a22..1d6d3df4 100644 --- a/lib/radix.c +++ b/lib/radix.c @@ -38,7 +38,8 @@ #include "debug_config.h" #include "radix.h" -#define min(a, b) ((a) < (b) ? (a) : (b)) +#undef min +#define min(a, b) (((a) < (b)) ? (a) : (b)) static struct radix_node *rn_insert(void *, struct radix_head *, int *, diff --git a/src/transport_layer/dummynet.c b/src/transport_layer/dummynet.c index 10c96049..c9e6c92c 100644 --- a/src/transport_layer/dummynet.c +++ b/src/transport_layer/dummynet.c @@ -528,7 +528,7 @@ void dummynet_reset_stats(struct dummynet* dn, int direction) { } /* Возвращает файловый дескриптор сокета */ -int dummynet_get_socket(struct dummynet* dn) { +socket_t dummynet_get_socket(struct dummynet* dn) { if (!dn) return SOCKET_INVALID; return dn->sock; } diff --git a/src/transport_layer/dummynet.h b/src/transport_layer/dummynet.h index ca3f38a2..4231b483 100644 --- a/src/transport_layer/dummynet.h +++ b/src/transport_layer/dummynet.h @@ -28,6 +28,7 @@ extern "C" { #include #include +#include "../lib/socket_compat.h" // Forward declarations struct UASYNC; @@ -127,7 +128,7 @@ void dummynet_reset_stats(struct dummynet* dn, int direction); * @param dn Контекст dummynet * @return socket_t или SOCKET_INVALID */ -int dummynet_get_socket(struct dummynet* dn); +socket_t dummynet_get_socket(struct dummynet* dn); /** * @brief Возвращает listen_port diff --git a/tests/bbr_integration/test_bbr_integration.c b/tests/bbr_integration/test_bbr_integration.c index 47030242..d1ce82bb 100644 --- a/tests/bbr_integration/test_bbr_integration.c +++ b/tests/bbr_integration/test_bbr_integration.c @@ -101,7 +101,7 @@ struct test_ctx { /* ===== Time helper ===== */ static uint64_t now_us(void) { struct timeval tv; - gettimeofday(&tv, NULL); + utun_gettimeofday(&tv, NULL); return (uint64_t)tv.tv_sec * 1000000ULL + tv.tv_usec; } diff --git a/tests/test_udp_proxy.c b/tests/test_udp_proxy.c index d0d923c5..d3b6ded7 100644 --- a/tests/test_udp_proxy.c +++ b/tests/test_udp_proxy.c @@ -173,7 +173,7 @@ int main(void) { struct sockaddr_in ea = {.sin_family = AF_INET, .sin_addr = {.s_addr = inet_addr("127.0.0.1")}, .sin_port = htons(UDP_ECHO_PORT)}; if (bind(g_echo_sock, (struct sockaddr*)&ea, sizeof(ea)) < 0) { printf("[FAIL] echo bind: %s\n", strerror(errno)); goto done; } socket_set_nonblocking(g_echo_sock); - g_echo_id = uasync_add_socket(ua, g_echo_sock, udp_echo_cb, NULL, NULL, NULL); + g_echo_id = uasync_add_socket_t(ua, g_echo_sock, udp_echo_cb, NULL, NULL, NULL); g_to_id = uasync_set_timeout(ua, 100, NULL, monitor, "mon"); void* to_id = uasync_set_timeout(ua, TEST_TIMEOUT_MS * 10, NULL, test_timeout, "to");