diff options
| author | Eitan Adler <eadler@FreeBSD.org> | 2014-03-07 17:47:53 +0000 |
|---|---|---|
| committer | Eitan Adler <eadler@FreeBSD.org> | 2014-03-07 17:47:53 +0000 |
| commit | 58f611943208b34b00863ca05a6d2b79d16d4b9a (patch) | |
| tree | 92fc512476da2e837c6f8770e2fec24963c2642d | |
| parent | bcec4b54f347379fb352fa39940e56a81fb5e961 (diff) | |
Notes
| -rw-r--r-- | tools/tools/iwn/iwnstats/main.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/tools/iwn/iwnstats/main.c b/tools/tools/iwn/iwnstats/main.c index 105b7e68b674..c0b0546a7e65 100644 --- a/tools/tools/iwn/iwnstats/main.c +++ b/tools/tools/iwn/iwnstats/main.c @@ -38,6 +38,8 @@ #include <err.h> #include <net/if.h> #include <sys/endian.h> +#include <sys/types.h> +#include <sys/sysctl.h> #include "net80211/ieee80211_ioctl.h" #include "net80211/ieee80211_radiotap.h" @@ -269,6 +271,9 @@ main(int argc, char *argv[]) int ch; char *ifname; bool first; + char *sysctlname; + size_t len; + int ret; ifname = strdup(IWN_DEFAULT_IF); @@ -280,6 +285,19 @@ main(int argc, char *argv[]) if (ifname) free(ifname); ifname = strdup(optarg); + if (strncmp(ifname, "wlan", 4) == 0) { + free(ifname); + len = 0; + asprintf(&sysctlname, "net.wlan.%s.%%parent", ifname + 4); + ret = sysctlbyname(sysctlname, NULL, &len, NULL, 0); + if (ret != 0) + err(1, "sysctl failed"); + ifname = calloc(len, 1); + ret = sysctlbyname(sysctlname, ifname, &len, NULL, 0); + if (ret != 0) + err(1, "sysctl failed"); + free(sysctlname); + } break; default: case '?': |
