From 7465bc9886e1ab58f11f5a669bc90788a3869515 Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Thu, 16 Oct 2025 16:04:35 +0200 Subject: [PATCH 1/4] [ICRDMA] Fix windows and macos build. EXT-1596 --- .../interconnect/interconnect_address.cpp | 24 ++++++++++++++----- .../interconnect/interconnect_address.h | 8 ++++--- .../actors/interconnect/rdma/ut/utils.cpp | 2 +- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ydb/library/actors/interconnect/interconnect_address.cpp b/ydb/library/actors/interconnect/interconnect_address.cpp index 3bf66ab87d27..48eab6f5a017 100644 --- a/ydb/library/actors/interconnect/interconnect_address.cpp +++ b/ydb/library/actors/interconnect/interconnect_address.cpp @@ -8,6 +8,16 @@ #include #endif +#if defined(__APPLE__) || defined(__darwin__) +/* OSX seems not to define these. */ +#ifndef s6_addr16 +#define s6_addr16 __u6_addr.__u6_addr16 +#endif +#ifndef s6_addr32 +#define s6_addr32 __u6_addr.__u6_addr32 +#endif +#endif + namespace NInterconnect { TAddress::TAddress() { memset(&Addr, 0, sizeof(Addr)); @@ -104,10 +114,11 @@ namespace NInterconnect { return p ? TString(p) : TString(); } - TAddress::TV6Addr TAddress::GetV6CompatAddr() const { - switch (GetFamily()) { +#if !defined(__win__) + TAddress::TV6Addr GetV6CompatAddr(const NInterconnect::TAddress& a) noexcept { + switch (a.GetFamily()) { case AF_INET: { - TV6Addr addr; + TAddress::TV6Addr addr; addr.s6_addr16[0] = 0; addr.s6_addr16[1] = 0; addr.s6_addr16[2] = 0; @@ -115,17 +126,18 @@ namespace NInterconnect { addr.s6_addr16[4] = 0; addr.s6_addr16[5] = Max(); addr.s6_addr16[6] = Max(); - addr.s6_addr32[3] = Addr.Ipv4.sin_addr.s_addr; + addr.s6_addr32[3] = a.Addr.Ipv4.sin_addr.s_addr; return addr; } case AF_INET6: - return Addr.Ipv6.sin6_addr; + return a.Addr.Ipv6.sin6_addr; default: { - TV6Addr addr; + TAddress::TV6Addr addr; memset(&addr, 0, sizeof(addr)); return addr; } break; } } +#endif } diff --git a/ydb/library/actors/interconnect/interconnect_address.h b/ydb/library/actors/interconnect/interconnect_address.h index 3cf28b30f377..35ef48f7235c 100644 --- a/ydb/library/actors/interconnect/interconnect_address.h +++ b/ydb/library/actors/interconnect/interconnect_address.h @@ -7,13 +7,13 @@ namespace NInterconnect { class TAddress { + public: union { sockaddr Generic; sockaddr_in Ipv4; sockaddr_in6 Ipv6; } Addr; - public: using TV6Addr = in6_addr; TAddress(); TAddress(const char* addr, ui16 port); @@ -44,7 +44,9 @@ namespace NInterconnect { res.Addr.Ipv6.sin6_addr = in6addr_any; return res; } - - TV6Addr GetV6CompatAddr() const; }; + +#if !defined(__win__) + TAddress::TV6Addr GetV6CompatAddr(const TAddress& a) noexcept; +#endif } diff --git a/ydb/library/actors/interconnect/rdma/ut/utils.cpp b/ydb/library/actors/interconnect/rdma/ut/utils.cpp index e0a5f255f7ff..747ad9c75b18 100644 --- a/ydb/library/actors/interconnect/rdma/ut/utils.cpp +++ b/ydb/library/actors/interconnect/rdma/ut/utils.cpp @@ -48,7 +48,7 @@ std::tuple, TRdmaCtx*> PrepareTestRuntim TString ip = env ?: defIp; NInterconnect::TAddress address(ip, 7777); - auto ctx = NInterconnect::NRdma::NLinkMgr::GetCtx(address.GetV6CompatAddr()); + auto ctx = NInterconnect::NRdma::NLinkMgr::GetCtx(GetV6CompatAddr(address)); RDMA_UT_EXPECT_TRUE(ctx); Cerr << "Using verbs context: " << *ctx << ", on addr: " << ip << Endl; From c830c845254510de15d1d5ebd0b30a63b69d11b5 Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Thu, 16 Oct 2025 17:24:11 +0200 Subject: [PATCH 2/4] Fix __darwin__ -> _darwin_ --- ydb/library/actors/interconnect/interconnect_address.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/library/actors/interconnect/interconnect_address.cpp b/ydb/library/actors/interconnect/interconnect_address.cpp index 48eab6f5a017..f4a05b5b4d0e 100644 --- a/ydb/library/actors/interconnect/interconnect_address.cpp +++ b/ydb/library/actors/interconnect/interconnect_address.cpp @@ -8,7 +8,7 @@ #include #endif -#if defined(__APPLE__) || defined(__darwin__) +#if defined(__APPLE__) || defined(_darwin_) /* OSX seems not to define these. */ #ifndef s6_addr16 #define s6_addr16 __u6_addr.__u6_addr16 From edc9cac1252e4580e3e4f0a3910ec6da4bc1a6ff Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Thu, 16 Oct 2025 17:27:59 +0200 Subject: [PATCH 3/4] Fix --- ydb/library/actors/interconnect/interconnect_address.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/library/actors/interconnect/interconnect_address.h b/ydb/library/actors/interconnect/interconnect_address.h index 35ef48f7235c..dd765c90ffd3 100644 --- a/ydb/library/actors/interconnect/interconnect_address.h +++ b/ydb/library/actors/interconnect/interconnect_address.h @@ -46,7 +46,7 @@ namespace NInterconnect { } }; -#if !defined(__win__) +#if not defined(_win32_) TAddress::TV6Addr GetV6CompatAddr(const TAddress& a) noexcept; #endif } From 49e70e0a2f9f1d0dfac1b92ee43ca978769ac915 Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Thu, 16 Oct 2025 17:33:42 +0200 Subject: [PATCH 4/4] Fix --- ydb/library/actors/interconnect/interconnect_address.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ydb/library/actors/interconnect/interconnect_address.cpp b/ydb/library/actors/interconnect/interconnect_address.cpp index f4a05b5b4d0e..76c1ba616cb9 100644 --- a/ydb/library/actors/interconnect/interconnect_address.cpp +++ b/ydb/library/actors/interconnect/interconnect_address.cpp @@ -114,7 +114,7 @@ namespace NInterconnect { return p ? TString(p) : TString(); } -#if !defined(__win__) +#if not defined(_win32_) TAddress::TV6Addr GetV6CompatAddr(const NInterconnect::TAddress& a) noexcept { switch (a.GetFamily()) { case AF_INET: {