summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Tschinkowitz <he4d@posteo.de>2018-05-19 11:23:16 +0200
committerAaron Marcher <me@drkhsh.at>2018-05-19 12:20:25 +0200
commit2321aecff01fb9aa2fda156bb59bca6d16bd7c5d (patch)
treeb21f8be107cb8e5a350ca5ed28ec3f24a22e1d66
parent0383146e5e616e81c13b23a127ecfa697feac7db (diff)
netspeeds: added error condition for openbsd
implemented additional error condition for openbsd netstat in case the interface could not be found in the interface list or if_data is not readable.
-rw-r--r--components/netspeeds.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/components/netspeeds.c b/components/netspeeds.c
index 9315fef..c846a2c 100644
--- a/components/netspeeds.c
+++ b/components/netspeeds.c
@@ -64,6 +64,7 @@
uint64_t rxbytes = 0;
const char *rxs;
extern const unsigned int interval;
+ char if_ok = 0;
if (getifaddrs(&ifal) == -1) {
warn("getifaddrs failed");
@@ -72,10 +73,14 @@
for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
if (!strcmp(ifa->ifa_name, interface) &&
(ifd = (struct if_data *)ifa->ifa_data)) {
- rxbytes += ifd->ifi_ibytes;
+ rxbytes += ifd->ifi_ibytes, if_ok = 1;
}
}
freeifaddrs(ifal);
+ if (!if_ok) {
+ warn("reading 'if_data' failed");
+ return NULL;
+ }
rxs = oldrxbytes ? fmt_scaled((rxbytes - oldrxbytes) /
interval * 1000) : NULL;
@@ -91,6 +96,7 @@
uint64_t txbytes = 0;
const char *txs;
extern const unsigned int interval;
+ char if_ok = 0;
if (getifaddrs(&ifal) == -1) {
warn("getifaddrs failed");
@@ -99,10 +105,14 @@
for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
if (!strcmp(ifa->ifa_name, interface) &&
(ifd = (struct if_data *)ifa->ifa_data)) {
- txbytes += ifd->ifi_obytes;
+ txbytes += ifd->ifi_obytes, if_ok = 1;
}
}
freeifaddrs(ifal);
+ if (!if_ok) {
+ warn("reading 'if_data' failed");
+ return NULL;
+ }
txs = oldtxbytes ? fmt_scaled((txbytes - oldtxbytes) /
interval * 1000) : NULL;