implemented openbsd netspeed functions

implemented the netspeed functionality for openbsd.
furthermore the static keyword was removed of the interval variable in
config.def.h for usage as extern variable.
master
Tobias Tschinkowitz 8 years ago committed by Aaron Marcher
parent 176d8ff874
commit 22175f0d57

@ -49,5 +49,63 @@
return fmt_scaled((txbytes - oldtxbytes) / interval * 1000); return fmt_scaled((txbytes - oldtxbytes) / interval * 1000);
} }
#elif defined(__OpenBSD__) #elif defined(__OpenBSD__)
/* unimplemented */ #include <string.h>
#include <ifaddrs.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>
const char *
netspeed_rx(const char *interface)
{
struct ifaddrs *ifal, *ifa;
struct if_data *ifd;
static uint64_t oldrxbytes;
uint64_t rxbytes = 0;
const char *rxs;
extern const unsigned int interval;
if (getifaddrs(&ifal) == -1) {
warn("getifaddrs failed");
return NULL;
}
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;
}
}
freeifaddrs(ifal);
rxs = oldrxbytes ? fmt_scaled((rxbytes - oldrxbytes) /
interval * 1000) : NULL;
return (oldrxbytes = rxbytes, rxs);
}
const char *
netspeed_tx(const char *interface)
{
struct ifaddrs *ifal, *ifa;
struct if_data *ifd;
static uint64_t oldtxbytes;
uint64_t txbytes = 0;
const char *txs;
extern const unsigned int interval;
if (getifaddrs(&ifal) == -1) {
warn("getifaddrs failed");
return NULL;
}
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;
}
}
freeifaddrs(ifal);
txs = oldtxbytes ? fmt_scaled((txbytes - oldtxbytes) /
interval * 1000) : NULL;
return (oldtxbytes = txbytes, txs);
}
#endif #endif

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
/* interval between updates (in ms) */ /* interval between updates (in ms) */
static const unsigned int interval = 1000; const unsigned int interval = 1000;
/* text to show if no value can be retrieved */ /* text to show if no value can be retrieved */
static const char unknown_str[] = "n/a"; static const char unknown_str[] = "n/a";

Loading…
Cancel
Save