Skip to content

Commit 4f6b034

Browse files
committed
[ICRDMA] Fix windows and macos build. EXT-1596 (#27005)
1 parent 9c85a95 commit 4f6b034

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

ydb/library/actors/interconnect/interconnect_address.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@
88
#include <sys/stat.h>
99
#endif
1010

11+
#if defined(__APPLE__) || defined(_darwin_)
12+
/* OSX seems not to define these. */
13+
#ifndef s6_addr16
14+
#define s6_addr16 __u6_addr.__u6_addr16
15+
#endif
16+
#ifndef s6_addr32
17+
#define s6_addr32 __u6_addr.__u6_addr32
18+
#endif
19+
#endif
20+
1121
namespace NInterconnect {
1222
TAddress::TAddress() {
1323
memset(&Addr, 0, sizeof(Addr));
@@ -104,28 +114,30 @@ namespace NInterconnect {
104114
return p ? TString(p) : TString();
105115
}
106116

107-
TAddress::TV6Addr TAddress::GetV6CompatAddr() const {
108-
switch (GetFamily()) {
117+
#if not defined(_win32_)
118+
TAddress::TV6Addr GetV6CompatAddr(const NInterconnect::TAddress& a) noexcept {
119+
switch (a.GetFamily()) {
109120
case AF_INET: {
110-
TV6Addr addr;
121+
TAddress::TV6Addr addr;
111122
addr.s6_addr16[0] = 0;
112123
addr.s6_addr16[1] = 0;
113124
addr.s6_addr16[2] = 0;
114125
addr.s6_addr16[3] = 0;
115126
addr.s6_addr16[4] = 0;
116127
addr.s6_addr16[5] = Max<ui16>();
117128
addr.s6_addr16[6] = Max<ui16>();
118-
addr.s6_addr32[3] = Addr.Ipv4.sin_addr.s_addr;
129+
addr.s6_addr32[3] = a.Addr.Ipv4.sin_addr.s_addr;
119130
return addr;
120131
}
121132
case AF_INET6:
122-
return Addr.Ipv6.sin6_addr;
133+
return a.Addr.Ipv6.sin6_addr;
123134
default: {
124-
TV6Addr addr;
135+
TAddress::TV6Addr addr;
125136
memset(&addr, 0, sizeof(addr));
126137
return addr;
127138
}
128139
break;
129140
}
130141
}
142+
#endif
131143
}

ydb/library/actors/interconnect/interconnect_address.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
namespace NInterconnect {
99
class TAddress {
10+
public:
1011
union {
1112
sockaddr Generic;
1213
sockaddr_in Ipv4;
1314
sockaddr_in6 Ipv6;
1415
} Addr;
1516

16-
public:
1717
using TV6Addr = in6_addr;
1818
TAddress();
1919
TAddress(const char* addr, ui16 port);
@@ -44,7 +44,9 @@ namespace NInterconnect {
4444
res.Addr.Ipv6.sin6_addr = in6addr_any;
4545
return res;
4646
}
47-
48-
TV6Addr GetV6CompatAddr() const;
4947
};
48+
49+
#if not defined(_win32_)
50+
TAddress::TV6Addr GetV6CompatAddr(const TAddress& a) noexcept;
51+
#endif
5052
}

ydb/library/actors/interconnect/rdma/ut/utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ std::tuple<THolder<NActors::TTestActorRuntimeBase>, TRdmaCtx*> PrepareTestRuntim
4848
TString ip = env ?: defIp;
4949

5050
NInterconnect::TAddress address(ip, 7777);
51-
auto ctx = NInterconnect::NRdma::NLinkMgr::GetCtx(address.GetV6CompatAddr());
51+
auto ctx = NInterconnect::NRdma::NLinkMgr::GetCtx(GetV6CompatAddr(address));
5252
RDMA_UT_EXPECT_TRUE(ctx);
5353
Cerr << "Using verbs context: " << *ctx << ", on addr: " << ip << Endl;
5454

0 commit comments

Comments
 (0)