getIpaddrByName: normalize ip addr when input addr is IPv4 or IPv6

use_iouring
YuQing 2025-06-19 16:13:10 +08:00
parent 7f1a85b025
commit 70f6ad56ed
2 changed files with 26 additions and 14 deletions

View File

@ -1,4 +1,7 @@
Version 1.78 2025-06-19
* getIpaddrByName: normalize ip addr when input addr is IPv4 or IPv6
Version 1.77 2025-03-18
* impl. shorten_path for /./ and /../
* add function fc_compare_int64_ptr

View File

@ -1208,26 +1208,35 @@ in_addr_64_t getIpaddrByNameEx(const char *name, char *buff,
struct in6_addr addr6;
in_addr_64_t ip_addr;
if ((*name >= '0' && *name <= '9') &&
if (strchr(name, ':') != NULL) //IPv6
{
if (strchr(name, '%') == NULL &&
inet_pton(AF_INET6, name, &addr6) == 1)
{
if (buff != NULL)
{
if (inet_ntop(AF_INET6, &addr6, buff, bufferSize) == NULL)
{
*buff = '\0';
}
}
*af = AF_INET6;
return *((in_addr_64_t *)((char *)&addr6 + 8));
}
}
else if ((*name >= '0' && *name <= '9') &&
inet_pton(AF_INET, name, &addr4) == 1)
{
if (buff != NULL)
{
snprintf(buff, bufferSize, "%s", name);
if (inet_ntop(AF_INET, &addr4, buff, bufferSize) == NULL)
{
*buff = '\0';
}
}
*af = AF_INET;
return addr4.s_addr;
}
if (strchr(name, ':') != NULL && inet_pton(
AF_INET6, name, &addr6) == 1)
{
if (buff != NULL)
{
snprintf(buff, bufferSize, "%s", name);
}
*af = AF_INET6;
return *((in_addr_64_t *)((char *)&addr6 + 8));
}
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // 支持IPv4和IPv6
@ -2180,10 +2189,10 @@ int tcpprintkeepalive(int fd)
return errno != 0 ? errno : EINVAL;
}
logInfo("keepAlive=%d, keepIdle=%d, keepInterval=%d, keepCount=%d",
logDebug("keepAlive=%d, keepIdle=%d, keepInterval=%d, keepCount=%d",
keepAlive, keepIdle, keepInterval, keepCount);
#else
logInfo("keepAlive=%d", keepAlive);
logDebug("keepAlive=%d", keepAlive);
#endif
return 0;