]> git.sur5r.net Git - i3/i3status/blobdiff - src/get_eth_info.c
Support for (Debian) GNU/kFreeBSD
[i3/i3status] / src / get_eth_info.c
index 9172abb34e50eca0be59eca769a42125b617c0b0..80cc829c32e12ef86edcfbf06aa9a8b2d0e8cba1 100644 (file)
 #define PART_ETHSPEED  "E: %s (%d Mbit/s)"
 #endif
 
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 #include <net/if_media.h>
 #define IFM_TYPE_MATCH(dt, t)                       \
         (IFM_TYPE((dt)) == 0 || IFM_TYPE((dt)) == IFM_TYPE((t)))
 
 #define PART_ETHSPEED  "E: %s (%s)"
 
-struct ifmedia_type_to_subtype {
-    struct {
-        struct ifmedia_description *desc;
-        int alias;
-    } subtypes[5];
-    struct {
-        struct ifmedia_description *desc;
-        int alias;
-    } options[3];
-    struct {
-        struct ifmedia_description *desc;
-        int alias;
-    } modes[3];
-};
 #endif
 
 /*
@@ -48,7 +34,7 @@ const char *get_eth_info() {
         static char part[512];
 #if defined(LINUX)
         int ethspeed=0;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
         char *ethspeed;
 #endif
         const char *ip_address = get_ip_addr(eth_interface);
@@ -71,10 +57,10 @@ const char *get_eth_info() {
                 if (ioctl(general_socket, SIOCETHTOOL, &ifr) == 0)
                         ethspeed = (ecmd.speed == USHRT_MAX ? 0 : ecmd.speed);
                 else get_ethspeed = false;
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
                 struct ifmediareq ifm;
                 (void)memset(&ifm, 0, sizeof(ifm));
-                (void)strncpy(ifm.ifm_name, ifaddr->ifa_name, sizeof(ifm.ifm_name));
+                (void)strncpy(ifm.ifm_name, eth_interface, sizeof(ifm.ifm_name));
                 int ret = ioctl(general_socket, SIOCGIFMEDIA, (caddr_t)&ifm);
 
                 /* Get the description of the media type, partially taken from