aboutsummaryrefslogtreecommitdiff
path: root/slstatuso/components/netspeeds.c
diff options
context:
space:
mode:
Diffstat (limited to 'slstatuso/components/netspeeds.c')
-rwxr-xr-xslstatuso/components/netspeeds.c129
1 files changed, 0 insertions, 129 deletions
diff --git a/slstatuso/components/netspeeds.c b/slstatuso/components/netspeeds.c
deleted file mode 100755
index cde6fa9..0000000
--- a/slstatuso/components/netspeeds.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-#include <limits.h>
-#include <stdio.h>
-
-#include "../slstatus.h"
-#include "../util.h"
-
-#if defined(__linux__)
- #include <stdint.h>
-
- #define NET_RX_BYTES "/sys/class/net/%s/statistics/rx_bytes"
- #define NET_TX_BYTES "/sys/class/net/%s/statistics/tx_bytes"
-
- const char *
- netspeed_rx(const char *interface)
- {
- uintmax_t oldrxbytes;
- static uintmax_t rxbytes;
- extern const unsigned int interval;
- char path[PATH_MAX];
-
- oldrxbytes = rxbytes;
-
- if (esnprintf(path, sizeof(path), NET_RX_BYTES, interface) < 0)
- return NULL;
- if (pscanf(path, "%ju", &rxbytes) != 1)
- return NULL;
- if (oldrxbytes == 0)
- return NULL;
-
- return fmt_human((rxbytes - oldrxbytes) * 1000 / interval,
- 1024);
- }
-
- const char *
- netspeed_tx(const char *interface)
- {
- uintmax_t oldtxbytes;
- static uintmax_t txbytes;
- extern const unsigned int interval;
- char path[PATH_MAX];
-
- oldtxbytes = txbytes;
-
- if (esnprintf(path, sizeof(path), NET_TX_BYTES, interface) < 0)
- return NULL;
- if (pscanf(path, "%ju", &txbytes) != 1)
- return NULL;
- if (oldtxbytes == 0)
- return NULL;
-
- return fmt_human((txbytes - oldtxbytes) * 1000 / interval,
- 1024);
- }
-#elif defined(__OpenBSD__) | defined(__FreeBSD__)
- #include <ifaddrs.h>
- #include <net/if.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/socket.h>
-
- const char *
- netspeed_rx(const char *interface)
- {
- struct ifaddrs *ifal, *ifa;
- struct if_data *ifd;
- uintmax_t oldrxbytes;
- static uintmax_t rxbytes;
- extern const unsigned int interval;
- int if_ok = 0;
-
- oldrxbytes = rxbytes;
-
- if (getifaddrs(&ifal) < 0) {
- warn("getifaddrs failed");
- return NULL;
- }
- rxbytes = 0;
- 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, if_ok = 1;
-
- freeifaddrs(ifal);
- if (!if_ok) {
- warn("reading 'if_data' failed");
- return NULL;
- }
- if (oldrxbytes == 0)
- return NULL;
-
- return fmt_human((rxbytes - oldrxbytes) * 1000 / interval,
- 1024);
- }
-
- const char *
- netspeed_tx(const char *interface)
- {
- struct ifaddrs *ifal, *ifa;
- struct if_data *ifd;
- uintmax_t oldtxbytes;
- static uintmax_t txbytes;
- extern const unsigned int interval;
- int if_ok = 0;
-
- oldtxbytes = txbytes;
-
- if (getifaddrs(&ifal) < 0) {
- warn("getifaddrs failed");
- return NULL;
- }
- txbytes = 0;
- 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, if_ok = 1;
-
- freeifaddrs(ifal);
- if (!if_ok) {
- warn("reading 'if_data' failed");
- return NULL;
- }
- if (oldtxbytes == 0)
- return NULL;
-
- return fmt_human((txbytes - oldtxbytes) * 1000 / interval,
- 1024);
- }
-#endif