--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include "status/netif.h"
+#include "tools.h"
+#include "config.h"
+
+#ifndef NETIF_BASEDIR
+ #define NETIF_BASEDIR "/sys/class/net/"
+#endif
+
+
+void status_netif(char *ifname)
+{
+ char ifpath[256];
+ int ifpathlen;
+
+ char stline[16];
+ ssize_t stlen;
+
+ double ifsum = 0.0;
+ int ifsumpower;
+
+
+ /* Prepare path */
+ ifpathlen = sizeof(NETIF_BASEDIR) - 1 + strlen(ifname);
+ if (ifpathlen + 1 + sizeof("/statistics/rx_bytes") >= sizeof(ifpath)) {
+ statusError("status_netif",
+ "ifpath buffer too small",
+ ifname);
+ return;
+ }
+ strcpy(ifpath, NETIF_BASEDIR);
+ strcat(ifpath, ifname);
+
+
+ /* Is the interface up? */
+ if (access(ifpath, F_OK)) {
+ //printf(" ^fg(grey)[%s] ", ifname);
+ return;
+ }
+
+
+ strcpy(&ifpath[ifpathlen], "/carrier");
+ stlen = fileRead(stline, sizeof(stline), ifpath);
+ if (stlen > 0) {
+ if (stline[0] == '1') {
+ fputs("^fg(yellow)", stdout);
+ } else {
+ //fputs("^fg(red)", stdout);
+ return;
+ }
+ } else {
+ return;
+ }
+
+ strcpy(&ifpath[ifpathlen], "/statistics/rx_bytes");
+ stlen = fileRead(stline, sizeof(stline), ifpath);
+ if (stlen > 0) {
+ ifsum = atof(stline);
+ }
+
+ strcpy(&ifpath[ifpathlen], "/statistics/tx_bytes");
+ stlen = fileRead(stline, sizeof(stline), ifpath);
+ if (stlen > 0) {
+ ifsum += atof(stline);
+ }
+
+
+ for(ifsumpower = 0; ifsum >= 1024.0; ifsumpower++) {
+ ifsum = ifsum / 1024;
+ }
+
+ printf(" %s: %.*f %c ", ifname,
+ ifsumpower ? ifsumpower - 1 : ifsumpower,
+ ifsum,
+ powerToChar(ifsumpower));
+}