diff options
author | Tobias Tschinkowitz <he4d@posteo.de> | 2018-05-19 11:23:16 +0200 |
---|---|---|
committer | Aaron Marcher <me@drkhsh.at> | 2018-05-19 12:20:25 +0200 |
commit | 2321aecff01fb9aa2fda156bb59bca6d16bd7c5d (patch) | |
tree | b21f8be107cb8e5a350ca5ed28ec3f24a22e1d66 | |
parent | 0383146e5e616e81c13b23a127ecfa697feac7db (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.c | 14 |
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; |