ohmu
·
2026-10-15
1#include "common/netif.h"
2#include "common/io.h"
3#include "common/strutil.h"
4
5#include <net/if.h>
6#include <stdio.h>
7
8bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result) {
9 FF_AUTO_CLOSE_FILE FILE* netRoute = fopen("/proc/route", "r");
10
11 if (!netRoute) {
12 return false;
13 }
14
15 // skip first line
16 FF_UNUSED(fscanf(netRoute, "%*[^\n]\n"));
17 unsigned long long destination; //, gateway, flags, refCount, use, metric, mask, mtu, ...
18 while (fscanf(netRoute, "%" FF_STR(IF_NAMESIZE) "s%llx%*[^\n]", result->ifName, &destination) == 2) {
19 if (destination != 0) {
20 continue;
21 }
22 result->ifIndex = if_nametoindex(result->ifName);
23 // TODO: Get the preferred source address
24 return true;
25 }
26 result->ifName[0] = '\0';
27 return false;
28}
29
30bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result) {
31 // TODO: AF_INET6
32 FF_UNUSED(result);
33 return false;
34}