Global (Windows): prefers Rtl APIs

This commit is contained in:
李通洲
2026-03-18 18:36:41 +08:00
parent b8ad833b4b
commit 00b5f17f0d
3 changed files with 12 additions and 19 deletions
+2 -3
View File
@@ -51,15 +51,14 @@ const char* ffDetectDNS(FFDNSOptions* options, FFlist* results)
{
SOCKADDR_IN* ipv4 = (SOCKADDR_IN*) ifa->Address.lpSockaddr;
ffStrbufInitA(item, INET_ADDRSTRLEN);
inet_ntop(AF_INET, &ipv4->sin_addr, item->chars, item->allocated);
item->length = (uint32_t) (RtlIpv4AddressToStringA(&ipv4->sin_addr, item->chars) - item->chars);
}
else if (ifa->Address.lpSockaddr->sa_family == AF_INET6)
{
SOCKADDR_IN6* ipv6 = (SOCKADDR_IN6*) ifa->Address.lpSockaddr;
ffStrbufInitA(item, INET6_ADDRSTRLEN);
inet_ntop(AF_INET6, &ipv6->sin6_addr, item->chars, item->allocated);
item->length = (uint32_t) (RtlIpv6AddressToStringA(&ipv6->sin6_addr, item->chars) - item->chars);
}
ffStrbufRecalculateLength(item);
}
break;
}
+8 -14
View File
@@ -175,19 +175,16 @@ const char* ffDetectLocalIps(const FFLocalIpOptions* options, FFlist* results)
}
SOCKADDR_IN* ipv4 = (SOCKADDR_IN*) ifa->Address.lpSockaddr;
char addressBuffer[INET_ADDRSTRLEN + 6];
inet_ntop(AF_INET, &ipv4->sin_addr, addressBuffer, INET_ADDRSTRLEN);
char addressBuffer[INET_ADDRSTRLEN + 10];
char* end = RtlIpv4AddressToStringA(&ipv4->sin_addr, addressBuffer);
if ((options->showType & FF_LOCALIP_TYPE_PREFIX_LEN_BIT) && ifa->OnLinkPrefixLength)
{
size_t len = strlen(addressBuffer);
snprintf(addressBuffer + len, 6, "/%u", (unsigned) ifa->OnLinkPrefixLength);
}
end += snprintf(end, 10, "/%u", (unsigned) ifa->OnLinkPrefixLength);
FF_DEBUG("Adding IPv4 address: %s (isDefaultRoute=%s)", addressBuffer, isDefaultRoute ? "true" : "false");
if (item->ipv4.length) ffStrbufAppendC(&item->ipv4, ',');
ffStrbufAppendS(&item->ipv4, addressBuffer);
ffStrbufAppendNS(&item->ipv4, (uint32_t) (end - addressBuffer), addressBuffer);
if (isDefaultRoute) item->defaultRoute |= FF_LOCALIP_TYPE_IPV4_BIT;
ipv4Count++;
@@ -223,19 +220,16 @@ const char* ffDetectLocalIps(const FFLocalIpOptions* options, FFlist* results)
continue;
}
char addressBuffer[INET6_ADDRSTRLEN + 6];
inet_ntop(AF_INET6, &ipv6->sin6_addr, addressBuffer, INET6_ADDRSTRLEN);
char addressBuffer[INET6_ADDRSTRLEN + 10];
char* end = RtlIpv6AddressToStringA(&ipv6->sin6_addr, addressBuffer);
if ((options->showType & FF_LOCALIP_TYPE_PREFIX_LEN_BIT) && ifa->OnLinkPrefixLength)
{
size_t len = strlen(addressBuffer);
snprintf(addressBuffer + len, 6, "/%u", (unsigned) ifa->OnLinkPrefixLength);
}
end += snprintf(end, 10, "/%u", (unsigned) ifa->OnLinkPrefixLength);
FF_DEBUG("Adding IPv6 address: %s (isDefaultRoute=%s)", addressBuffer, isDefaultRoute ? "true" : "false");
if (item->ipv6.length) ffStrbufAppendC(&item->ipv6, ',');
ffStrbufAppendS(&item->ipv6, addressBuffer);
ffStrbufAppendNS(&item->ipv6, (uint32_t) (end - addressBuffer), addressBuffer);
if (isDefaultRoute) item->defaultRoute |= FF_LOCALIP_TYPE_IPV6_BIT;
ipv6Count++;
+2 -2
View File
@@ -42,8 +42,8 @@ const char* ffDetectUsers(FFUsersOptions* options, FFlist* users)
else if (address->AddressFamily == AF_INET6)
{
char ipStr[INET6_ADDRSTRLEN];
if (inet_ntop(AF_INET6, address->Address, ipStr, sizeof(ipStr)) != NULL)
ffStrbufSetS(&user->clientIp, ipStr);
const char* end = RtlIpv6AddressToStringA((const IN6_ADDR *) address->Address, ipStr);
ffStrbufSetNS(&user->clientIp, (uint32_t) (end - ipStr), ipStr);
}
WTSFreeMemory(address);
}