- changes for MUSL builds

This commit is contained in:
2021-11-14 15:43:50 +00:00
parent c648db062a
commit 2ab0a3c26d
5 changed files with 59 additions and 43 deletions

View File

@@ -34,6 +34,10 @@ set (ICE_STACK_SOURCES ICEAddress.cpp
ICETime.cpp
ICETransactionList.cpp)
if (TARGET_MUSL)
add_definitions(-DTARGET_MUSL)
endif()
add_definitions(-DUSE_NATIVE_SMARTPTR -D_WINSOCK_DEPRECATED_NO_WARNINGS)
add_library(ice_stack ${ICE_STACK_SOURCES})

View File

@@ -24,6 +24,7 @@
# include <ws2tcpip.h>
#else
# include <netinet/in.h>
# if /*defined(TARGET_LINUX) || */ defined(TARGET_ANDROID)
# include <linux/in6.h>
# endif
@@ -464,15 +465,15 @@ unsigned char* NetworkAddress::ipBytes() const
#endif
case AF_INET6:
#ifdef TARGET_WIN
return (unsigned char*)mAddr6.sin6_addr.u.Byte;
#elif defined(TARGET_OSX) || defined(TARGET_IOS)
return (unsigned char*)&mAddr6.sin6_addr.__u6_addr.__u6_addr8;
#elif defined(TARGET_OPENWRT)
return (unsigned char*)&mAddr6.sin6_addr.__in6_union.__s6_addr;
#elif defined(TARGET_LINUX)
return (unsigned char*)&mAddr6.sin6_addr.__in6_u.__u6_addr8;
#elif defined(TARGET_ANDROID)
return (unsigned char*)&mAddr6.sin6_addr.in6_u.u6_addr8;
return (unsigned char*)mAddr6.sin6_addr.u.Byte;
#elif defined(TARGET_OSX) || defined(TARGET_IOS)
return (unsigned char*)&mAddr6.sin6_addr.__u6_addr.__u6_addr8;
#elif defined(TARGET_OPENWRT) || defined(TARGET_MUSL)
return (unsigned char*)&mAddr6.sin6_addr.__in6_union.__s6_addr;
#elif defined(TARGET_LINUX)
return (unsigned char*)&mAddr6.sin6_addr.__in6_u.__u6_addr8;
#elif defined(TARGET_ANDROID)
return (unsigned char*)&mAddr6.sin6_addr.in6_u.u6_addr8;
#endif
}
assert(0);

View File

@@ -434,40 +434,40 @@ bool NetworkHelper::hasIPv6() const
if (item.family() == AF_INET6 && (item.isLAN() || item.isPublic()))
return true;
return false;
}
void NetworkHelper::NetworkToHost(const in6_addr& addr6, uint32_t* output)
{
for (int i=0; i<4; i++)
#if defined(TARGET_WIN)
output[i] = ntohl(((uint32_t*)addr6.u.Byte[0])[i]);
#elif defined(TARGET_IOS) || defined(TARGET_OSX)
output[i] = ntohl(addr6.__u6_addr.__u6_addr32[i]);
#elif defined(TARGET_OPENWRT)
output[i] = ntohl(addr6.__in6_union.__s6_addr32[i]);
#elif defined(TARGET_LINUX)
output[i] = ntohl(addr6.__in6_u.__u6_addr32[i]);
#elif defined(TARGET_ANDROID)
output[i] = ntohl(addr6.in6_u.u6_addr32[i]);
#endif
}
void NetworkHelper::HostToNetwork(const uint32_t* input, in6_addr& output)
{
for (int i=0; i<4; i++)
#if defined(TARGET_WIN)
((uint32_t*)&output.u.Byte[0])[i] = htonl(input[i]);
#elif defined(TARGET_OSX) || defined(TARGET_IOS)
output.__u6_addr.__u6_addr32[i] = htonl(input[i]);
#elif defined(TARGET_OPENWRT)
output.__in6_union.__s6_addr32[i] = htonl(input[i]);
#elif defined(TARGET_LINUX)
output.__in6_u.__u6_addr32[i] = htonl(input[i]);
#elif defined(TARGET_ANDROID)
output.in6_u.u6_addr32[i] = htonl(input[i]);
#endif
}
}
void NetworkHelper::NetworkToHost(const in6_addr& addr6, uint32_t* output)
{
for (int i=0; i<4; i++)
#if defined(TARGET_WIN)
output[i] = ntohl(((uint32_t*)addr6.u.Byte[0])[i]);
#elif defined(TARGET_IOS) || defined(TARGET_OSX)
output[i] = ntohl(addr6.__u6_addr.__u6_addr32[i]);
#elif defined(TARGET_OPENWRT) || defined(TARGET_MUSL)
output[i] = ntohl(addr6.__in6_union.__s6_addr32[i]);
#elif defined(TARGET_LINUX)
output[i] = ntohl(addr6.__in6_u.__u6_addr32[i]);
#elif defined(TARGET_ANDROID)
output[i] = ntohl(addr6.in6_u.u6_addr32[i]);
#endif
}
void NetworkHelper::HostToNetwork(const uint32_t* input, in6_addr& output)
{
for (int i=0; i<4; i++)
#if defined(TARGET_WIN)
((uint32_t*)&output.u.Byte[0])[i] = htonl(input[i]);
#elif defined(TARGET_OSX) || defined(TARGET_IOS)
output.__u6_addr.__u6_addr32[i] = htonl(input[i]);
#elif defined(TARGET_OPENWRT) || defined(TARGET_MUSL)
output.__in6_union.__s6_addr32[i] = htonl(input[i]);
#elif defined(TARGET_LINUX)
output.__in6_u.__u6_addr32[i] = htonl(input[i]);
#elif defined(TARGET_ANDROID)
output.in6_u.u6_addr32[i] = htonl(input[i]);
#endif
}
NetworkHelper* NetworkHelper::mInstance = NULL;
Mutex NetworkHelper::mGuard;