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.
This commit is contained in:
parent
0383146e5e
commit
2321aecff0
1 changed files with 12 additions and 2 deletions
|
@ -64,6 +64,7 @@
|
||||||
uint64_t rxbytes = 0;
|
uint64_t rxbytes = 0;
|
||||||
const char *rxs;
|
const char *rxs;
|
||||||
extern const unsigned int interval;
|
extern const unsigned int interval;
|
||||||
|
char if_ok = 0;
|
||||||
|
|
||||||
if (getifaddrs(&ifal) == -1) {
|
if (getifaddrs(&ifal) == -1) {
|
||||||
warn("getifaddrs failed");
|
warn("getifaddrs failed");
|
||||||
|
@ -72,10 +73,14 @@
|
||||||
for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
|
for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
|
||||||
if (!strcmp(ifa->ifa_name, interface) &&
|
if (!strcmp(ifa->ifa_name, interface) &&
|
||||||
(ifd = (struct if_data *)ifa->ifa_data)) {
|
(ifd = (struct if_data *)ifa->ifa_data)) {
|
||||||
rxbytes += ifd->ifi_ibytes;
|
rxbytes += ifd->ifi_ibytes, if_ok = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
freeifaddrs(ifal);
|
freeifaddrs(ifal);
|
||||||
|
if (!if_ok) {
|
||||||
|
warn("reading 'if_data' failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
rxs = oldrxbytes ? fmt_scaled((rxbytes - oldrxbytes) /
|
rxs = oldrxbytes ? fmt_scaled((rxbytes - oldrxbytes) /
|
||||||
interval * 1000) : NULL;
|
interval * 1000) : NULL;
|
||||||
|
@ -91,6 +96,7 @@
|
||||||
uint64_t txbytes = 0;
|
uint64_t txbytes = 0;
|
||||||
const char *txs;
|
const char *txs;
|
||||||
extern const unsigned int interval;
|
extern const unsigned int interval;
|
||||||
|
char if_ok = 0;
|
||||||
|
|
||||||
if (getifaddrs(&ifal) == -1) {
|
if (getifaddrs(&ifal) == -1) {
|
||||||
warn("getifaddrs failed");
|
warn("getifaddrs failed");
|
||||||
|
@ -99,10 +105,14 @@
|
||||||
for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
|
for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
|
||||||
if (!strcmp(ifa->ifa_name, interface) &&
|
if (!strcmp(ifa->ifa_name, interface) &&
|
||||||
(ifd = (struct if_data *)ifa->ifa_data)) {
|
(ifd = (struct if_data *)ifa->ifa_data)) {
|
||||||
txbytes += ifd->ifi_obytes;
|
txbytes += ifd->ifi_obytes, if_ok = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
freeifaddrs(ifal);
|
freeifaddrs(ifal);
|
||||||
|
if (!if_ok) {
|
||||||
|
warn("reading 'if_data' failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
txs = oldtxbytes ? fmt_scaled((txbytes - oldtxbytes) /
|
txs = oldtxbytes ? fmt_scaled((txbytes - oldtxbytes) /
|
||||||
interval * 1000) : NULL;
|
interval * 1000) : NULL;
|
||||||
|
|
Loading…
Reference in a new issue