ports/net/netspeed_applet/files/patch-src_backend.c
Jean-Yves Lefort a3812d35be Update to 0.13.
2006-05-03 01:19:50 +00:00

56 lines
1.3 KiB
C

--- src/backend.c.orig Wed May 3 02:41:00 2006
+++ src/backend.c Wed May 3 03:03:09 2006
@@ -20,6 +20,7 @@
#include <config.h>
#include <glibtop/netlist.h>
#include <glibtop/netload.h>
+#include <net/if_media.h>
#include "backend.h"
/* Check for all available devices. This really should be
@@ -131,7 +132,7 @@
g_strlcpy(request.ifr_name, devinfo->name, sizeof request.ifr_name);
- if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+ if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
goto out;
if (ioctl(fd, SIOCGIFFLAGS, &request) == -1)
@@ -148,16 +149,20 @@
}
}
+ if (devinfo->type == DEV_UNKNOWN) {
+ struct ifmediareq ifmr;
- if (ioctl(fd, SIOCGIWNAME, &request) >= 0) {
- devinfo->type = DEV_WIRELESS;
- }
+ memset(&ifmr, 0, sizeof(ifmr));
+ g_strlcpy(ifmr.ifm_name, devinfo->name, sizeof(ifmr.ifm_name));
- if (ioctl(fd, SIOCGIWENCODE, &request) >= 0) {
- g_assert_not_reached();
+ if (ioctl(fd, SIOCGIFMEDIA, &ifmr) >= 0) {
+ switch (IFM_TYPE(ifmr.ifm_current)) {
+ case IFM_ETHER: devinfo->type = DEV_ETHERNET; break;
+ case IFM_IEEE80211: devinfo->type = DEV_WIRELESS; break;
+ }
+ }
}
-
out:
if(fd != -1)
close(fd);
@@ -210,9 +215,6 @@
else {
devinfo.type = DEV_PPP;
}
- }
- else if (g_str_has_prefix(device, "eth")) {
- devinfo.type = DEV_ETHERNET;
}
get_additional_info(&devinfo);