svn commit: r262893 - head/tools/tools/iwn/iwnstats
Eitan Adler
eadler at FreeBSD.org
Fri Mar 7 17:47:54 UTC 2014
Author: eadler
Date: Fri Mar 7 17:47:53 2014
New Revision: 262893
URL: http://svnweb.freebsd.org/changeset/base/262893
Log:
wlanstats: Add some logic to translate from a vap to its parent device.
This isn't entirely correct (as the device may not necc. be called wlan*) but
this will be further worked into a combined ath, iwn, wlan, etc. tool.
Discussed with: jhb, adrian
Modified:
head/tools/tools/iwn/iwnstats/main.c
Modified: head/tools/tools/iwn/iwnstats/main.c
==============================================================================
--- head/tools/tools/iwn/iwnstats/main.c Fri Mar 7 16:43:08 2014 (r262892)
+++ head/tools/tools/iwn/iwnstats/main.c Fri Mar 7 17:47:53 2014 (r262893)
@@ -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 '?':
More information about the svn-src-all
mailing list