summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornia <nia@NetBSD.org>2021-08-12 12:46:42 +0200
committerBenBE <BenBE@geshi.org>2021-08-13 22:27:14 +0200
commitdd91e9a9dabf6e61bd550eac33688f78d9da8320 (patch)
tree584cac9414096dff13874b1fa74bf0e7424e8d6e
parent9a07ba2700daf5361422ec277af9b0caddfb2bfa (diff)
netbsd: Add NetworkIOMeter support
-rw-r--r--netbsd/Platform.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/netbsd/Platform.c b/netbsd/Platform.c
index 9d57b149..dbcb7eb3 100644
--- a/netbsd/Platform.c
+++ b/netbsd/Platform.c
@@ -13,6 +13,7 @@ in the source distribution for its full text.
#include <errno.h>
#include <fcntl.h>
+#include <ifaddrs.h>
#include <paths.h>
#include <unistd.h>
#include <kvm.h>
@@ -22,11 +23,13 @@ in the source distribution for its full text.
#include <stdlib.h>
#include <string.h>
#include <time.h>
+#include <net/if.h>
#include <prop/proplib.h>
#include <sys/envsys.h>
#include <sys/iostat.h>
#include <sys/param.h>
#include <sys/resource.h>
+#include <sys/socket.h>
#include <sys/sysctl.h>
#include <sys/time.h>
#include <sys/types.h>
@@ -165,6 +168,7 @@ const MeterClass* const Platform_meterTypes[] = {
&RightCPUs8Meter_class,
&BlankMeter_class,
&DiskIOMeter_class,
+ &NetworkIOMeter_class,
NULL
};
@@ -382,9 +386,29 @@ bool Platform_getDiskIO(DiskIOData* data) {
}
bool Platform_getNetworkIO(NetworkIOData* data) {
- // TODO
- (void)data;
- return false;
+ struct ifaddrs* ifaddrs = NULL;
+
+ if (getifaddrs(&ifaddrs) != 0)
+ return false;
+
+ for (struct ifaddrs* ifa = ifaddrs; ifa; ifa = ifa->ifa_next) {
+ if (!ifa->ifa_addr)
+ continue;
+ if (ifa->ifa_addr->sa_family != AF_LINK)
+ continue;
+ if (ifa->ifa_flags & IFF_LOOPBACK)
+ continue;
+
+ struct if_data* ifd = (struct if_data *)ifa->ifa_data;
+
+ data->bytesReceived += ifd->ifi_ibytes;
+ data->packetsReceived += ifd->ifi_ipackets;
+ data->bytesTransmitted += ifd->ifi_obytes;
+ data->packetsTransmitted += ifd->ifi_opackets;
+ }
+
+ freeifaddrs(ifaddrs);
+ return true;
}
void Platform_getBattery(double* percent, ACPresence* isOnAC) {

© 2014-2024 Faster IT GmbH | imprint | privacy policy