diff options
author | Nathan Scott <natoscott@users.noreply.github.com> | 2021-03-02 13:34:36 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-02 13:34:36 +1100 |
commit | 3fe297aa978e7e56de740422db50a03285ac9672 (patch) | |
tree | ec923641f3a2c254c42dff030e844d523b1bfe97 /freebsd | |
parent | 8a1112141da7974de2757b40da5be2be648a2afd (diff) | |
parent | 88a11859a0a26de3683f8459611c11ab6b2efb36 (diff) |
Merge pull request #549 from natoscott/network-types
Fix integer sizing issues in the NetworkIO Meter
Diffstat (limited to 'freebsd')
-rw-r--r-- | freebsd/Platform.c | 25 | ||||
-rw-r--r-- | freebsd/Platform.h | 6 |
2 files changed, 9 insertions, 22 deletions
diff --git a/freebsd/Platform.c b/freebsd/Platform.c index 9f8c051f..74007472 100644 --- a/freebsd/Platform.c +++ b/freebsd/Platform.c @@ -315,24 +315,17 @@ bool Platform_getDiskIO(DiskIOData* data) { return true; } -bool Platform_getNetworkIO(unsigned long int* bytesReceived, - unsigned long int* packetsReceived, - unsigned long int* bytesTransmitted, - unsigned long int* packetsTransmitted) { - int r; - +bool Platform_getNetworkIO(NetworkIOData* data) { // get number of interfaces int count; size_t countLen = sizeof(count); const int countMib[] = { CTL_NET, PF_LINK, NETLINK_GENERIC, IFMIB_SYSTEM, IFMIB_IFCOUNT }; - r = sysctl(countMib, ARRAYSIZE(countMib), &count, &countLen, NULL, 0); + int r = sysctl(countMib, ARRAYSIZE(countMib), &count, &countLen, NULL, 0); if (r < 0) return false; - - unsigned long int bytesReceivedSum = 0, packetsReceivedSum = 0, bytesTransmittedSum = 0, packetsTransmittedSum = 0; - + memset(data, 0, sizeof(NetworkIOData)); for (int i = 1; i <= count; i++) { struct ifmibdata ifmd; size_t ifmdLen = sizeof(ifmd); @@ -346,16 +339,12 @@ bool Platform_getNetworkIO(unsigned long int* bytesReceived, if (ifmd.ifmd_flags & IFF_LOOPBACK) continue; - bytesReceivedSum += ifmd.ifmd_data.ifi_ibytes; - packetsReceivedSum += ifmd.ifmd_data.ifi_ipackets; - bytesTransmittedSum += ifmd.ifmd_data.ifi_obytes; - packetsTransmittedSum += ifmd.ifmd_data.ifi_opackets; + data->bytesReceived += ifmd.ifmd_data.ifi_ibytes; + data->packetsReceived += ifmd.ifmd_data.ifi_ipackets; + data->bytesTransmitted += ifmd.ifmd_data.ifi_obytes; + data->packetsTransmitted += ifmd.ifmd_data.ifi_opackets; } - *bytesReceived = bytesReceivedSum; - *packetsReceived = packetsReceivedSum; - *bytesTransmitted = bytesTransmittedSum; - *packetsTransmitted = packetsTransmittedSum; return true; } diff --git a/freebsd/Platform.h b/freebsd/Platform.h index 36895b81..8f25d83a 100644 --- a/freebsd/Platform.h +++ b/freebsd/Platform.h @@ -14,6 +14,7 @@ in the source distribution for its full text. #include "BatteryMeter.h" #include "DiskIOMeter.h" #include "Meter.h" +#include "NetworkIOMeter.h" #include "Process.h" #include "ProcessLocksScreen.h" #include "SignalsPanel.h" @@ -57,10 +58,7 @@ FileLocks_ProcessData* Platform_getProcessLocks(pid_t pid); bool Platform_getDiskIO(DiskIOData* data); -bool Platform_getNetworkIO(unsigned long int* bytesReceived, - unsigned long int* packetsReceived, - unsigned long int* bytesTransmitted, - unsigned long int* packetsTransmitted); +bool Platform_getNetworkIO(NetworkIOData* data); void Platform_getBattery(double* percent, ACPresence* isOnAC); |