Skip to content

Commit

Permalink
SO_DOMAIN do not support on IBM i, using getsockname instead (dmlc#8437)
Browse files Browse the repository at this point in the history
Co-authored-by: GavinZhang <zhanggan@cn.ibm.com>
  • Loading branch information
2 people authored and hcho3 committed Nov 30, 2022
1 parent 9372370 commit 7d07b95
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions include/xgboost/collective/socket.h
Expand Up @@ -287,11 +287,22 @@ class TCPSocket {
#elif defined(__APPLE__)
return domain_;
#elif defined(__unix__)
#ifndef __PASE__
std::int32_t domain;
socklen_t len = sizeof(domain);
xgboost_CHECK_SYS_CALL(
getsockopt(handle_, SOL_SOCKET, SO_DOMAIN, reinterpret_cast<char *>(&domain), &len), 0);
return ret_iafamily(domain);
#else
struct sockaddr sa;
socklen_t sizeofsa = sizeof(sa);
xgboost_CHECK_SYS_CALL(
getsockname(handle_, &sa, &sizeofsa), 0);
if (sizeofsa < sizeof(uchar_t)*2) {
return ret_iafamily(AF_INET);
}
return ret_iafamily(sa.sa_family);
#endif // __PASE__
#else
LOG(FATAL) << "Unknown platform.";
return ret_iafamily(AF_INET);
Expand Down

0 comments on commit 7d07b95

Please sign in to comment.