From 9212ee658bb977557f65f569336417a74f7c4edc Mon Sep 17 00:00:00 2001 From: Gerome Fournier Date: Wed, 7 Feb 2018 11:26:34 +0100 Subject: [PATCH] Make iface_type() work on FreeBSD --- src/first_network_device.c | 42 ++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/first_network_device.c b/src/first_network_device.c index 3f34cf2..430f1d5 100644 --- a/src/first_network_device.c +++ b/src/first_network_device.c @@ -14,10 +14,10 @@ #include "i3status.h" -#ifdef __linux__ -#define LOOPBACK_DEV "lo" -#else +#ifdef __OpenBSD__ #define LOOPBACK_DEV "lo0" +#else +#define LOOPBACK_DEV "lo" #endif static bool sysfs_devtype(char *dest, size_t n, const char *ifnam) { @@ -67,24 +67,7 @@ static bool is_virtual(const char *ifname) { } static net_type_t iface_type(const char *ifname) { -#ifdef __linux__ - char devtype[32]; - - if (!sysfs_devtype(devtype, sizeof(devtype), ifname)) - return NET_TYPE_OTHER; - - /* Default to Ethernet when no devtype is available */ - if (!devtype[0]) - return NET_TYPE_ETHERNET; - - if (strcmp(devtype, "wlan") == 0) - return NET_TYPE_WIRELESS; - - if (strcmp(devtype, "wwan") == 0) - return NET_TYPE_OTHER; - - return NET_TYPE_OTHER; -#elif __OpenBSD__ +#ifdef __OpenBSD__ /* *First determine if the device is a wireless device by trying two ioctl(2) * commands against it. If either succeeds we can be sure it's a wireless @@ -127,7 +110,22 @@ static net_type_t iface_type(const char *ifname) { return NET_TYPE_ETHERNET; } #else -#error Missing implementation to determine interface type. + char devtype[32]; + + if (!sysfs_devtype(devtype, sizeof(devtype), ifname)) + return NET_TYPE_OTHER; + + /* Default to Ethernet when no devtype is available */ + if (!devtype[0]) + return NET_TYPE_ETHERNET; + + if (strcmp(devtype, "wlan") == 0) + return NET_TYPE_WIRELESS; + + if (strcmp(devtype, "wwan") == 0) + return NET_TYPE_OTHER; + + return NET_TYPE_OTHER; #endif } -- 2.39.5