getIpaddrByName: normalize ip addr when input addr is IPv4 or IPv6
parent
7f1a85b025
commit
70f6ad56ed
3
HISTORY
3
HISTORY
|
|
@ -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
|
Version 1.77 2025-03-18
|
||||||
* impl. shorten_path for /./ and /../
|
* impl. shorten_path for /./ and /../
|
||||||
* add function fc_compare_int64_ptr
|
* add function fc_compare_int64_ptr
|
||||||
|
|
|
||||||
|
|
@ -1208,26 +1208,35 @@ in_addr_64_t getIpaddrByNameEx(const char *name, char *buff,
|
||||||
struct in6_addr addr6;
|
struct in6_addr addr6;
|
||||||
in_addr_64_t ip_addr;
|
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)
|
inet_pton(AF_INET, name, &addr4) == 1)
|
||||||
{
|
{
|
||||||
if (buff != NULL)
|
if (buff != NULL)
|
||||||
{
|
{
|
||||||
snprintf(buff, bufferSize, "%s", name);
|
if (inet_ntop(AF_INET, &addr4, buff, bufferSize) == NULL)
|
||||||
|
{
|
||||||
|
*buff = '\0';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*af = AF_INET;
|
*af = AF_INET;
|
||||||
return addr4.s_addr;
|
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);
|
memset(&hints, 0, sizeof hints);
|
||||||
hints.ai_family = AF_UNSPEC; // 支持IPv4和IPv6
|
hints.ai_family = AF_UNSPEC; // 支持IPv4和IPv6
|
||||||
|
|
@ -2180,10 +2189,10 @@ int tcpprintkeepalive(int fd)
|
||||||
return errno != 0 ? errno : EINVAL;
|
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);
|
keepAlive, keepIdle, keepInterval, keepCount);
|
||||||
#else
|
#else
|
||||||
logInfo("keepAlive=%d", keepAlive);
|
logDebug("keepAlive=%d", keepAlive);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue