summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEitan Adler <eadler@FreeBSD.org>2014-03-07 17:47:53 +0000
committerEitan Adler <eadler@FreeBSD.org>2014-03-07 17:47:53 +0000
commit58f611943208b34b00863ca05a6d2b79d16d4b9a (patch)
tree92fc512476da2e837c6f8770e2fec24963c2642d
parentbcec4b54f347379fb352fa39940e56a81fb5e961 (diff)
Notes
-rw-r--r--tools/tools/iwn/iwnstats/main.c18
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 '?':