LocalIp (Windows): add ioCounter detection

This commit is contained in:
李通洲
2023-09-25 23:31:32 +08:00
committed by 李通洲
parent 40e542852f
commit a4bc07cba5
2 changed files with 33 additions and 0 deletions
+14
View File
@@ -5,6 +5,18 @@
#include "fastfetch.h"
typedef struct FFLocalIpIoCounters
{
uint64_t txBytes;
uint64_t rxBytes;
uint64_t txPackets;
uint64_t rxPackets;
uint64_t rxErrors;
uint64_t txErrors;
uint64_t rxDrops;
uint64_t txDrops;
} FFLocalIpIoCounters;
typedef struct FFLocalIpResult
{
FFstrbuf name;
@@ -13,6 +25,8 @@ typedef struct FFLocalIpResult
FFstrbuf mac;
bool defaultRoute;
FFLocalIpIoCounters ioCounters;
#ifdef _WIN32
uint32_t ifIndex;
#endif
+19
View File
@@ -46,6 +46,7 @@ static void addNewIp(FFlist* list, const char* name, const char* value, int type
ffStrbufInit(&ip->mac);
ip->defaultRoute = false;
ip->ifIndex = ifIndex;
ip->ioCounters = (FFLocalIpIoCounters) {};
}
else
{
@@ -141,6 +142,24 @@ const char* ffDetectLocalIps(const FFLocalIpOptions* options, FFlist* results)
newIp = false;
}
}
if (newIp)
{
MIB_IF_ROW2 ifRow = { .InterfaceIndex = adapter->IfIndex };
if (GetIfEntry2(&ifRow) == NO_ERROR)
{
((FFLocalIpResult*) ffListGet(results, results->length - 1))->ioCounters = (FFLocalIpIoCounters) {
.txBytes = ifRow.OutOctets,
.rxBytes = ifRow.InOctets,
.txPackets = (ifRow.OutUcastPkts + ifRow.OutNUcastPkts),
.rxPackets = (ifRow.InUcastPkts + ifRow.InNUcastPkts),
.rxErrors = ifRow.InErrors,
.txErrors = ifRow.OutErrors,
.rxDrops = ifRow.InDiscards,
.txDrops = ifRow.OutDiscards,
};
}
}
}
setDefaultRoute(results);