Merge remote-tracking branch 'origin/master'

This commit is contained in:
2022-02-14 22:18:55 +02:00
27 changed files with 203 additions and 171 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
@@ -426,7 +427,7 @@ std::string NetworkAddress::ip() const
{
assert(mInitialized == true);
char resultbuf[128], ip6[128]; resultbuf[0] = 0;
char resultbuf[131], ip6[128]; resultbuf[0] = 0;
#ifdef TARGET_WIN
DWORD resultsize = sizeof(resultbuf);
@@ -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

@@ -41,6 +41,9 @@ LogLevel LogLevelHelper::parse(const std::string& t)
else
if (t == "special")
return LL_SPECIAL;
else
if (t == "media")
return LL_MEDIA;
throw std::runtime_error("Bad log param string value.");
}

View File

@@ -164,12 +164,14 @@ extern Logger GLogger;
#define ICELogError(args_) ICELog(LL_ERROR, LOG_SUBSYSTEM, args_)
#define ICELogSpecial(args_) ICELog(LL_SPECIAL, LOG_SUBSYSTEM, args_)
/*
#define ICELogCritical2(args_) ICELog(LogLevel_Critical, LogSubsystem.c_str(), args_)
#define ICELogInfo2(args_) ICELog(LogLevel_Info, LogSubsystem.c_str(), args_)
#define ICELogDebug2(args_) ICELog(LogLevel_Debug, LogSubsystem.c_str(), args_)
#define ICELogMedia2(args_) ICELog(LogLevel_Media, LogSubsystem.c_str(), args_)
#define ICELogError2(args_) ICELog(LogLevel_Error, LogSubsystem.c_str(), args_)
#define ICELogSpecial2(args_) ICELog(LogLevel_Special, LogSubsystem.c_str(), args_)
*/
#define DEFINE_LOGGING(subsystem) \
static std::string LogSubsystem = subsystem; \

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;