Port netif_gnu to the new api.

This commit is contained in:
Yelninei
2025-08-07 09:17:32 +00:00
committed by Carter Li
parent e968bca89d
commit 1a2f4b4c1f
+7 -17
View File
@@ -7,10 +7,8 @@
#define FF_STR_INDIR(x) #x
#define FF_STR(x) FF_STR_INDIR(x)
static bool getDefaultRouteIPv4(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex, uint32_t* preferredSourceAddr)
bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result)
{
if (preferredSourceAddr)
*preferredSourceAddr = 0;
// Based on netif_linux.c before 5e770dc8b019702ca458cc0cad46161ebec608a4
FILE* FF_AUTO_CLOSE_FILE netRoute = fopen("/proc/route", "r");
@@ -18,28 +16,20 @@ static bool getDefaultRouteIPv4(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex,
// skip first line
FF_UNUSED(fscanf(netRoute, "%*[^\n]\n"));
unsigned long long destination; //, gateway, flags, refCount, use, metric, mask, mtu, ...
while (fscanf(netRoute, "%" FF_STR(IF_NAMESIZE) "s%llx%*[^\n]", iface, &destination) == 2)
while (fscanf(netRoute, "%" FF_STR(IF_NAMESIZE) "s%llx%*[^\n]", result->ifName, &destination) == 2)
{
if (destination != 0) continue;
*ifIndex = if_nametoindex(iface);
result->ifIndex = if_nametoindex(result->ifName);
// TODO: Get the preferred source address
return true;
}
iface[0] = '\0';
result->ifName[0] = '0';
return false;
}
static bool getDefaultRouteIPv6(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex, uint32_t* preferredSourceAddr)
bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result)
{
// TODO ipv6
// TODO: AF_INET6
return false;
}
bool ffNetifGetDefaultRouteImpl(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex, uint32_t* preferredSourceAddr)
{
if (getDefaultRouteIPv4(iface, ifIndex, preferredSourceAddr))
return true;
return getDefaultRouteIPv6(iface, ifIndex, preferredSourceAddr);
}