|
7 | 7 | #define FF_STR_INDIR(x) #x
|
8 | 8 | #define FF_STR(x) FF_STR_INDIR(x)
|
9 | 9 |
|
10 |
| -static bool getDefaultRouteIPv4(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex, uint32_t* preferredSourceAddr) |
| 10 | +bool ffNetifGetDefaultRouteImplV4(FFNetifDefaultRouteResult* result) |
11 | 11 | {
|
12 |
| - if (preferredSourceAddr) |
13 |
| - *preferredSourceAddr = 0; |
14 | 12 | // Based on netif_linux.c before 5e770dc8b019702ca458cc0cad46161ebec608a4
|
15 | 13 | FILE* FF_AUTO_CLOSE_FILE netRoute = fopen("/proc/route", "r");
|
16 | 14 |
|
17 | 15 | if (!netRoute) return false;
|
18 | 16 |
|
19 | 17 | // skip first line
|
20 | 18 | FF_UNUSED(fscanf(netRoute, "%*[^\n]\n"));
|
21 |
| - |
22 | 19 | unsigned long long destination; //, gateway, flags, refCount, use, metric, mask, mtu, ...
|
23 |
| - while (fscanf(netRoute, "%" FF_STR(IF_NAMESIZE) "s%llx%*[^\n]", iface, &destination) == 2) |
| 20 | + while (fscanf(netRoute, "%" FF_STR(IF_NAMESIZE) "s%llx%*[^\n]", result->ifName, &destination) == 2) |
24 | 21 | {
|
25 | 22 | if (destination != 0) continue;
|
26 |
| - *ifIndex = if_nametoindex(iface); |
| 23 | + result->ifIndex = if_nametoindex(result->ifName); |
| 24 | + // TODO: Get the preferred source address |
27 | 25 | return true;
|
28 | 26 | }
|
29 |
| - iface[0] = '\0'; |
| 27 | + result->ifName[0] = '0'; |
30 | 28 | return false;
|
31 | 29 | }
|
32 | 30 |
|
33 |
| -static bool getDefaultRouteIPv6(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex, uint32_t* preferredSourceAddr) |
| 31 | +bool ffNetifGetDefaultRouteImplV6(FFNetifDefaultRouteResult* result) |
34 | 32 | {
|
35 |
| - // TODO ipv6 |
| 33 | + // TODO: AF_INET6 |
36 | 34 | return false;
|
37 | 35 | }
|
38 |
| - |
39 |
| -bool ffNetifGetDefaultRouteImpl(char iface[IF_NAMESIZE + 1], uint32_t* ifIndex, uint32_t* preferredSourceAddr) |
40 |
| -{ |
41 |
| - if (getDefaultRouteIPv4(iface, ifIndex, preferredSourceAddr)) |
42 |
| - return true; |
43 |
| - |
44 |
| - return getDefaultRouteIPv6(iface, ifIndex, preferredSourceAddr); |
45 |
| -} |
0 commit comments