From: Teemu Toivola Date: Sun, 16 Jun 2019 14:16:29 +0000 (+0300) Subject: refactoring X-Git-Tag: v2.3~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4763cd1c88d2b4828f1bca73084b9cdc5aaa338f;p=vnstat refactoring --- diff --git a/src/common.h b/src/common.h index 5f56cea..a2dce02 100644 --- a/src/common.h +++ b/src/common.h @@ -33,6 +33,7 @@ #include #include #include +#define BSD_VNSTAT #endif /* OpenBSD and NetBSD don't support the ' character (decimal conversion) in printf formatting */ diff --git a/src/ifinfo.c b/src/ifinfo.c index 9c55e1c..52f190c 100644 --- a/src/ifinfo.c +++ b/src/ifinfo.c @@ -48,7 +48,7 @@ int getifinfo(const char *iface) return 1; } -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) +#elif defined(BSD_VNSTAT) if (readifaddrs(inface) == 1) { ifinfo.timestamp = time(NULL); return 1; @@ -109,20 +109,25 @@ int getifliststring(char **ifacelist, int showspeed) return 0; } -int getiflist(iflist **ifl, int getspeed) +int getiflist(iflist **ifl, const int getspeed) { - char temp[64]; #if defined(__linux__) || defined(CHECK_VNSTAT) + return getiflist_linux(ifl, getspeed); +#elif defined(BSD_VNSTAT) + return getiflist_bsd(ifl, getspeed); +#endif +} + +#if defined(__linux__) || defined(CHECK_VNSTAT) +int getiflist_linux(iflist **ifl, const int getspeed) +{ + char temp[64]; char interface[32]; FILE *fp; DIR *dp; struct dirent *di; char procline[512]; -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) - struct ifaddrs *ifap, *ifa; -#endif -#if defined(__linux__) || defined(CHECK_VNSTAT) if ((fp = fopen(PROCNETDEV, "r")) != NULL) { /* make list of interfaces */ @@ -162,7 +167,14 @@ int getiflist(iflist **ifl, int getspeed) } } -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) + return 0; +} +#elif defined(BSD_VNSTAT) +int getiflist_bsd(iflist **ifl, const int getspeed) +{ + char temp[64]; + struct ifaddrs *ifap, *ifa; + if (getifaddrs(&ifap) >= 0) { /* make list of interfaces */ @@ -181,10 +193,9 @@ int getiflist(iflist **ifl, int getspeed) return 1; } -#endif - return 0; } +#endif int readproc(const char *iface) { @@ -325,7 +336,7 @@ int readsysclassnet(const char *iface) return 1; } -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) +#if defined(BSD_VNSTAT) int getifdata(const char *iface, struct if_data *ifd) { struct ifaddrs *ifap, *ifa; @@ -382,6 +393,7 @@ int readifaddrs(const char *iface) uint32_t getifspeed(const char *iface) { uint64_t speed = 0; + #if defined(__linux__) FILE *fp; @@ -405,7 +417,7 @@ uint32_t getifspeed(const char *iface) } fclose(fp); -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) +#elif defined(BSD_VNSTAT) struct if_data ifd; @@ -418,6 +430,7 @@ uint32_t getifspeed(const char *iface) } #endif + if (debug) printf("getifspeed: \"%s\": %" PRIu64 "\n", iface, speed); diff --git a/src/ifinfo.h b/src/ifinfo.h index ff9cd0a..572a013 100644 --- a/src/ifinfo.h +++ b/src/ifinfo.h @@ -3,16 +3,21 @@ #include "iflist.h" -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) +#if defined(BSD_VNSTAT) #include #endif int getifinfo(const char *iface); int getifliststring(char **ifacelist, int showspeed); int getiflist(iflist **ifl, int getspeed); +#if defined(__linux__) || defined(CHECK_VNSTAT) +int getiflist_linux(iflist **ifl, const int getspeed); +#elif defined(BSD_VNSTAT) +int getiflist_bsd(iflist **ifl, const int getspeed); +#endif int readproc(const char *iface); int readsysclassnet(const char *iface); -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) +#if defined(BSD_VNSTAT) int getifdata(const char *iface, struct if_data *ifd); int readifaddrs(const char *iface); #endif diff --git a/src/misc.c b/src/misc.c index aa4fc1d..5d717e7 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1,4 +1,4 @@ -#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__FreeBSD_kernel__) +#if !defined(BSD_VNSTAT) #if defined(__clang__) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wreserved-id-macro" @@ -127,7 +127,7 @@ uint64_t getbtime(void) result = strtoull(statline + 6, (char **)NULL, 0); -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) +#elif defined(BSD_VNSTAT) struct timeval btm; size_t len = sizeof(btm); int mib[2] = {CTL_KERN, KERN_BOOTTIME};