[collectd] [PATCH] Madwifi plugin
Ondrej Zajicek
santiago at crfreenet.org
Fri Jul 17 23:13:31 CEST 2009
Hello
Here is a patch adding plugin for collecting statistics of Madwifi
wireless driver.
---
diff -uprN collectd-4.6.3/configure.in collectd-4.6.3-mod/configure.in
--- collectd-4.6.3/configure.in 2009-06-02 11:17:47.000000000 +0200
+++ collectd-4.6.3-mod/configure.in 2009-07-17 21:57:50.000000000 +0200
@@ -2910,6 +2910,7 @@ plugin_ipvs="no"
plugin_irq="no"
plugin_libvirt="no"
plugin_load="no"
+plugin_madwifi="no"
plugin_memory="no"
plugin_multimeter="no"
plugin_nfs="no"
@@ -2936,6 +2937,7 @@ then
plugin_interface="yes"
plugin_irq="yes"
plugin_load="yes"
+ plugin_madwifi="yes"
plugin_memory="yes"
plugin_nfs="yes"
plugin_processes="yes"
@@ -3149,6 +3151,7 @@ AC_PLUGIN([irq], [$plugin_irq],
AC_PLUGIN([libvirt], [$plugin_libvirt], [Virtual machine statistics])
AC_PLUGIN([load], [$plugin_load], [System load])
AC_PLUGIN([logfile], [yes], [File logging plugin])
+AC_PLUGIN([madwifi], [$plugin_madwifi], [Madwifi wireless statistics])
AC_PLUGIN([match_regex], [yes], [The regex match])
AC_PLUGIN([match_timediff], [yes], [The timediff match])
AC_PLUGIN([match_value], [yes], [The value match])
@@ -3353,6 +3356,7 @@ Configuration:
libvirt . . . . . . . $enable_libvirt
load . . . . . . . . $enable_load
logfile . . . . . . . $enable_logfile
+ madwifi . . . . . . . $enable_madwifi
match_regex . . . . . $enable_match_regex
match_timediff . . . $enable_match_timediff
match_value . . . . . $enable_match_value
diff -uprN collectd-4.6.3/src/Makefile.am collectd-4.6.3-mod/src/Makefile.am
--- collectd-4.6.3/src/Makefile.am 2009-06-02 11:17:47.000000000 +0200
+++ collectd-4.6.3-mod/src/Makefile.am 2009-07-17 21:57:50.000000000 +0200
@@ -410,6 +410,14 @@ collectd_LDADD += "-dlopen" logfile.la
collectd_DEPENDENCIES += logfile.la
endif
+if BUILD_PLUGIN_MADWIFI
+pkglib_LTLIBRARIES += madwifi.la
+madwifi_la_SOURCES = madwifi.c
+madwifi_la_LDFLAGS = -module -avoid-version
+collectd_LDADD += "-dlopen" madwifi.la
+collectd_DEPENDENCIES += madwifi.la
+endif
+
if BUILD_PLUGIN_MATCH_REGEX
pkglib_LTLIBRARIES += match_regex.la
match_regex_la_SOURCES = match_regex.c
diff -uprN collectd-4.6.3/src/config.h.in collectd-4.6.3-mod/src/config.h.in
--- collectd-4.6.3/src/config.h.in 2009-06-02 11:19:03.000000000 +0200
+++ collectd-4.6.3-mod/src/config.h.in 2009-07-17 21:57:50.000000000 +0200
@@ -513,6 +513,9 @@
/* Define to 1 if the logfile plugin is enabled. */
#undef HAVE_PLUGIN_LOGFILE
+/* Define to 1 if the madwifi plugin is enabled. */
+#undef HAVE_PLUGIN_MADWIFI
+
/* Define to 1 if the match_regex plugin is enabled. */
#undef HAVE_PLUGIN_MATCH_REGEX
diff -uprN collectd-4.6.3/src/madwifi.c collectd-4.6.3-mod/src/madwifi.c
--- collectd-4.6.3/src/madwifi.c 1970-01-01 01:00:00.000000000 +0100
+++ collectd-4.6.3-mod/src/madwifi.c 2009-07-17 21:57:50.000000000 +0200
@@ -0,0 +1,441 @@
+/**
+ * collectd - src/madwifi.c
+ * Copyright (C) 2009 Ondrej 'SanTiago' Zajicek
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; only version 2 of the License is applicable.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author:
+ * Ondrej 'SanTiago' Zajicek <santiago at crfreenet.org>
+ *
+ * based on some code from interfaces.c (collectd) and Madwifi driver
+ **/
+
+#include "collectd.h"
+#include "common.h"
+#include "plugin.h"
+#include "configfile.h"
+#include "utils_ignorelist.h"
+
+#include <dirent.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+
+#if !KERNEL_LINUX
+# error "No applicable input method."
+#endif
+
+#include <linux/wireless.h>
+#include "madwifi.h"
+
+
+/*
+ * (Module-)Global variables
+ */
+static const char *config_keys[] =
+{
+ "Interface",
+ "IgnoreSelected",
+ NULL
+};
+static int config_keys_num = 2;
+
+static ignorelist_t *ignorelist;
+
+
+static int madwifi_config (const char *key, const char *value)
+{
+ if (ignorelist == NULL)
+ ignorelist = ignorelist_create (/* invert = */ 1);
+
+ if (strcasecmp (key, "Interface") == 0) {
+ ignorelist_add (ignorelist, value);
+ }
+ else if (strcasecmp (key, "IgnoreSelected") == 0) {
+ int invert = 1;
+ if ((strcasecmp (value, "True") == 0)
+ || (strcasecmp (value, "Yes") == 0)
+ || (strcasecmp (value, "On") == 0))
+ invert = 0;
+ ignorelist_set_invert (ignorelist, invert);
+ } else {
+ return (-1);
+ }
+
+ return (0);
+}
+
+
+static void submit (const char *dev, const char *mac, const char *type, value_t *val, int len)
+{
+ value_list_t vl = VALUE_LIST_INIT;
+
+ vl.values = val;
+ vl.values_len = len;
+ sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+ sstrncpy (vl.plugin, "madwifi", sizeof (vl.plugin));
+ sstrncpy (vl.plugin_instance, dev, sizeof (vl.plugin_instance));
+ sstrncpy (vl.type, type, sizeof (vl.type));
+ if (mac)
+ sstrncpy (vl.type_instance, mac, sizeof (vl.type_instance));
+
+ plugin_dispatch_values (&vl);
+}
+
+static void submit_counter (const char *dev, const char *mac, const char *type, counter_t val)
+{
+ value_t item;
+ item.counter = val;
+ submit (dev, mac, type, &item, 1);
+}
+
+static void submit_gauge (const char *dev, const char *mac, const char *type, gauge_t val)
+{
+ value_t item;
+ item.gauge = val;
+ submit (dev, mac, type, &item, 1);
+}
+
+static void submit_antx (const char *dev, const char *mac, const char *type, u_int32_t *vals, int count)
+{
+ int i;
+ value_t items[count];
+ for (i = 0; i < count; i++)
+ items[i].counter = vals[i];
+ submit (dev, mac, type, items, count);
+}
+
+static inline void
+macaddr_to_str(char *buf, int bufsize, const uint8_t mac[IEEE80211_ADDR_LEN])
+{
+ snprintf (buf, bufsize, "%02x:%02x:%02x:%02x:%02x:%02x",
+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+}
+
+static void
+process_athstats(int sk, const char *dev)
+{
+ struct ifreq ifr;
+ struct ath_stats stats;
+ strncpy(ifr.ifr_name, dev, sizeof (ifr.ifr_name));
+ ifr.ifr_data = (caddr_t) &stats;
+ if (ioctl(sk, SIOCGATHSTATS, &ifr) < 0)
+ return;
+
+#define STAT1(item) if (stats.ast_##item) submit_counter (dev, NULL, "ath_hw_" #item, stats.ast_##item)
+ STAT1 (watchdog); /* device reset by watchdog */
+ STAT1 (hardware); /* fatal hardware error interrupts */
+ STAT1 (bmiss); /* beacon miss interrupts */
+ STAT1 (rxorn); /* rx overrun interrupts */
+ STAT1 (rxeol); /* rx eol interrupts */
+ STAT1 (txurn); /* tx underrun interrupts */
+ STAT1 (mib); /* mib interrupts */
+ STAT1 (tx_packets); /* packet sent on the interface */
+ STAT1 (tx_mgmt); /* management frames transmitted */
+ STAT1 (tx_discard); /* frames discarded prior to assoc */
+ STAT1 (tx_invalid); /* frames discarded due to is device gone */
+ STAT1 (tx_qstop); /* tx queue stopped because it's full */
+ STAT1 (tx_encap); /* tx encapsulation failed */
+ STAT1 (tx_nonode); /* tx failed due to of no node */
+ STAT1 (tx_nobuf); /* tx failed due to of no tx buffer (data) */
+ STAT1 (tx_nobufmgt); /* tx failed due to of no tx buffer (mgmt)*/
+ STAT1 (tx_xretries); /* tx failed due to of too many retries */
+ STAT1 (tx_fifoerr); /* tx failed due to of FIFO underrun */
+ STAT1 (tx_filtered); /* tx failed due to xmit filtered */
+ STAT1 (tx_shortretry); /* tx on-chip retries (short) */
+ STAT1 (tx_longretry); /* tx on-chip retries (long) */
+ STAT1 (tx_badrate); /* tx failed due to of bogus xmit rate */
+ STAT1 (tx_noack); /* tx frames with no ack marked */
+ STAT1 (tx_rts); /* tx frames with rts enabled */
+ STAT1 (tx_cts); /* tx frames with cts enabled */
+ STAT1 (tx_shortpre); /* tx frames with short preamble */
+ STAT1 (tx_altrate); /* tx frames with alternate rate */
+ STAT1 (tx_protect); /* tx frames with protection */
+ STAT1 (rx_orn); /* rx failed due to of desc overrun */
+ STAT1 (rx_crcerr); /* rx failed due to of bad CRC */
+ STAT1 (rx_fifoerr); /* rx failed due to of FIFO overrun */
+ STAT1 (rx_badcrypt); /* rx failed due to of decryption */
+ STAT1 (rx_badmic); /* rx failed due to of MIC failure */
+ STAT1 (rx_phyerr); /* rx PHY error summary count */
+ STAT1 (rx_tooshort); /* rx discarded due to frame too short */
+ STAT1 (rx_toobig); /* rx discarded due to frame too large */
+ STAT1 (rx_nobuf); /* rx setup failed due to of no skbuff */
+ STAT1 (rx_packets); /* packet recv on the interface */
+ STAT1 (rx_mgt); /* management frames received */
+ STAT1 (rx_ctl); /* control frames received */
+ STAT1 (be_xmit); /* beacons transmitted */
+ STAT1 (be_nobuf); /* no skbuff available for beacon */
+ STAT1 (per_cal); /* periodic calibration calls */
+ STAT1 (per_calfail); /* periodic calibration failed */
+ STAT1 (per_rfgain); /* periodic calibration rfgain reset */
+ STAT1 (rate_calls); /* rate control checks */
+ STAT1 (rate_raise); /* rate control raised xmit rate */
+ STAT1 (rate_drop); /* rate control dropped xmit rate */
+ STAT1 (ant_defswitch); /* rx/default antenna switches */
+ STAT1 (ant_txswitch); /* tx antenna switches */
+ submit_antx (dev, NULL, "ath_hw_ant_rx", stats.ast_ant_rx, 8); /* rx frames with antenna */
+ submit_antx (dev, NULL, "ath_hw_ant_tx", stats.ast_ant_tx, 8); /* tx frames with antenna */
+#undef STAT1
+}
+
+static void
+process_80211stats(int sk, const char *dev)
+{
+ struct ifreq ifr;
+ struct ieee80211_stats stats;
+ strncpy (ifr.ifr_name, dev, sizeof (ifr.ifr_name));
+ ifr.ifr_data = (caddr_t) &stats;
+ if (ioctl(sk, SIOCG80211STATS, &ifr) < 0)
+ return;
+
+#define STAT1(item) if (stats.is_##item) submit_counter (dev, NULL, "ath_dev_" #item, stats.is_##item)
+ STAT1 (rx_badversion); /* rx frame with bad version */
+ STAT1 (rx_tooshort); /* rx frame too short */
+ STAT1 (rx_wrongbss); /* rx from wrong bssid */
+ STAT1 (rx_dup); /* rx discard due to it's a dup */
+ STAT1 (rx_wrongdir); /* rx w/ wrong direction */
+ STAT1 (rx_mcastecho); /* rx discard due to of mcast echo */
+ STAT1 (rx_notassoc); /* rx discard due to sta !assoc */
+ STAT1 (rx_noprivacy); /* rx w/ wep but privacy off */
+ STAT1 (rx_unencrypted); /* rx w/o wep and privacy on */
+ STAT1 (rx_wepfail); /* rx wep processing failed */
+ STAT1 (rx_decap); /* rx decapsulation failed */
+ STAT1 (rx_mgtdiscard); /* rx discard mgt frames */
+ STAT1 (rx_ctl); /* rx discard ctrl frames */
+ STAT1 (rx_beacon); /* rx beacon frames */
+ STAT1 (rx_rstoobig); /* rx rate set truncated */
+ STAT1 (rx_elem_missing); /* rx required element missing*/
+ STAT1 (rx_elem_toobig); /* rx element too big */
+ STAT1 (rx_elem_toosmall); /* rx element too small */
+ STAT1 (rx_elem_unknown); /* rx element unknown */
+ STAT1 (rx_badchan); /* rx frame w/ invalid chan */
+ STAT1 (rx_chanmismatch); /* rx frame chan mismatch */
+ STAT1 (rx_nodealloc); /* rx frame dropped */
+ STAT1 (rx_ssidmismatch); /* rx frame ssid mismatch */
+ STAT1 (rx_auth_unsupported); /* rx w/ unsupported auth alg */
+ STAT1 (rx_auth_fail); /* rx sta auth failure */
+ STAT1 (rx_auth_countermeasures);/* rx auth discard due to CM */
+ STAT1 (rx_assoc_bss); /* rx assoc from wrong bssid */
+ STAT1 (rx_assoc_notauth); /* rx assoc w/o auth */
+ STAT1 (rx_assoc_capmismatch); /* rx assoc w/ cap mismatch */
+ STAT1 (rx_assoc_norate); /* rx assoc w/ no rate match */
+ STAT1 (rx_assoc_badwpaie); /* rx assoc w/ bad WPA IE */
+ STAT1 (rx_deauth); /* rx deauthentication */
+ STAT1 (rx_disassoc); /* rx disassociation */
+ STAT1 (rx_badsubtype); /* rx frame w/ unknown subtype*/
+ STAT1 (rx_nobuf); /* rx failed for lack of buf */
+ STAT1 (rx_decryptcrc); /* rx decrypt failed on crc */
+ STAT1 (rx_ahdemo_mgt); /* rx discard ahdemo mgt frame*/
+ STAT1 (rx_bad_auth); /* rx bad auth request */
+ STAT1 (rx_unauth); /* rx on unauthorized port */
+ STAT1 (rx_badkeyid); /* rx w/ incorrect keyid */
+ STAT1 (rx_ccmpreplay); /* rx seq# violation (CCMP) */
+ STAT1 (rx_ccmpformat); /* rx format bad (CCMP) */
+ STAT1 (rx_ccmpmic); /* rx MIC check failed (CCMP) */
+ STAT1 (rx_tkipreplay); /* rx seq# violation (TKIP) */
+ STAT1 (rx_tkipformat); /* rx format bad (TKIP) */
+ STAT1 (rx_tkipmic); /* rx MIC check failed (TKIP) */
+ STAT1 (rx_tkipicv); /* rx ICV check failed (TKIP) */
+ STAT1 (rx_badcipher); /* rx failed due to of key type */
+ STAT1 (rx_nocipherctx); /* rx failed due to key !setup */
+ STAT1 (rx_acl); /* rx discard due to of acl policy */
+ STAT1 (rx_ffcnt); /* rx fast frames */
+ STAT1 (rx_badathtnl); /* driver key alloc failed */
+ STAT1 (tx_nobuf); /* tx failed for lack of buf */
+ STAT1 (tx_nonode); /* tx failed for no node */
+ STAT1 (tx_unknownmgt); /* tx of unknown mgt frame */
+ STAT1 (tx_badcipher); /* tx failed due to of key type */
+ STAT1 (tx_nodefkey); /* tx failed due to no defkey */
+ STAT1 (tx_noheadroom); /* tx failed due to no space */
+ STAT1 (tx_ffokcnt); /* tx fast frames sent success */
+ STAT1 (tx_fferrcnt); /* tx fast frames sent success */
+ STAT1 (scan_active); /* active scans started */
+ STAT1 (scan_passive); /* passive scans started */
+ STAT1 (node_timeout); /* nodes timed out inactivity */
+ STAT1 (crypto_nomem); /* no memory for crypto ctx */
+ STAT1 (crypto_tkip); /* tkip crypto done in s/w */
+ STAT1 (crypto_tkipenmic); /* tkip en-MIC done in s/w */
+ STAT1 (crypto_tkipdemic); /* tkip de-MIC done in s/w */
+ STAT1 (crypto_tkipcm); /* tkip counter measures */
+ STAT1 (crypto_ccmp); /* ccmp crypto done in s/w */
+ STAT1 (crypto_wep); /* wep crypto done in s/w */
+ STAT1 (crypto_setkey_cipher); /* cipher rejected key */
+ STAT1 (crypto_setkey_nokey); /* no key index for setkey */
+ STAT1 (crypto_delkey); /* driver key delete failed */
+ STAT1 (crypto_badcipher); /* unknown cipher */
+ STAT1 (crypto_nocipher); /* cipher not available */
+ STAT1 (crypto_attachfail); /* cipher attach failed */
+ STAT1 (crypto_swfallback); /* cipher fallback to s/w */
+ STAT1 (crypto_keyfail); /* driver key alloc failed */
+ STAT1 (crypto_enmicfail); /* en-MIC failed */
+ STAT1 (ibss_capmismatch); /* merge failed-cap mismatch */
+ STAT1 (ibss_norate); /* merge failed-rate mismatch */
+ STAT1 (ps_unassoc); /* ps-poll for unassoc. sta */
+ STAT1 (ps_badaid); /* ps-poll w/ incorrect aid */
+ STAT1 (ps_qempty); /* ps-poll w/ nothing to send */
+#undef STAT1
+}
+
+
+static void
+process_station(int sk, const char *dev, struct ieee80211req_sta_info *si)
+{
+ struct iwreq iwr;
+ static char mac[DATA_MAX_NAME_LEN];
+ struct ieee80211req_sta_stats stats;
+ const struct ieee80211_nodestats *ns = &stats.is_stats;
+
+ macaddr_to_str (mac, sizeof (mac), si->isi_macaddr);
+
+ submit_gauge (dev, mac, "ath_sta_tx_rate", (si->isi_rates[si->isi_txrate] & IEEE80211_RATE_VAL) / 2);
+ submit_gauge (dev, mac, "ath_sta_rssi", si->isi_rssi);
+
+ memset (&iwr, 0, sizeof (iwr));
+ strncpy(iwr.ifr_name, dev, sizeof (iwr.ifr_name));
+ iwr.u.data.pointer = &stats;
+ iwr.u.data.length = sizeof (stats);
+ memcpy(stats.is_u.macaddr, si->isi_macaddr, IEEE80211_ADDR_LEN);
+ if (ioctl(sk, IEEE80211_IOCTL_STA_STATS, &iwr) < 0)
+ return;
+
+#define STAT1(item) if (ns->ns_##item) submit_counter (dev, mac, "ath_sta_" #item, ns->ns_##item)
+ STAT1 (rx_data); /* rx data frames */
+ STAT1 (rx_mgmt); /* rx management frames */
+ STAT1 (rx_ctrl); /* rx control frames */
+ STAT1 (rx_ucast); /* rx unicast frames */
+ STAT1 (rx_mcast); /* rx multi/broadcast frames */
+ STAT1 (rx_bytes); /* rx data count (bytes) */
+ STAT1 (rx_beacons); /* rx beacon frames */
+ STAT1 (rx_proberesp); /* rx probe response frames */
+
+ STAT1 (rx_dup); /* rx discard because it's a dup */
+ STAT1 (rx_noprivacy); /* rx w/ wep but privacy off */
+ STAT1 (rx_wepfail); /* rx wep processing failed */
+ STAT1 (rx_demicfail); /* rx demic failed */
+ STAT1 (rx_decap); /* rx decapsulation failed */
+ STAT1 (rx_defrag); /* rx defragmentation failed */
+ STAT1 (rx_disassoc); /* rx disassociation */
+ STAT1 (rx_deauth); /* rx deauthentication */
+ STAT1 (rx_decryptcrc); /* rx decrypt failed on crc */
+ STAT1 (rx_unauth); /* rx on unauthorized port */
+ STAT1 (rx_unencrypted); /* rx unecrypted w/ privacy */
+
+ STAT1 (tx_data); /* tx data frames */
+ STAT1 (tx_mgmt); /* tx management frames */
+ STAT1 (tx_ucast); /* tx unicast frames */
+ STAT1 (tx_mcast); /* tx multi/broadcast frames */
+ STAT1 (tx_bytes); /* tx data count (bytes) */
+ STAT1 (tx_probereq); /* tx probe request frames */
+ STAT1 (tx_uapsd); /* tx on uapsd queue */
+
+ STAT1 (tx_novlantag); /* tx discard due to no tag */
+ STAT1 (tx_vlanmismatch); /* tx discard due to of bad tag */
+
+ STAT1 (tx_eosplost); /* uapsd EOSP retried out */
+ STAT1 (ps_discard); /* ps discard due to of age */
+ STAT1 (uapsd_triggers); /* uapsd triggers */
+
+ /* MIB-related state */
+ STAT1 (tx_assoc); /* [re]associations */
+ STAT1 (tx_assoc_fail); /* [re]association failures */
+ STAT1 (tx_auth); /* [re]authentications */
+ STAT1 (tx_auth_fail); /* [re]authentication failures*/
+ STAT1 (tx_deauth); /* deauthentications */
+ STAT1 (tx_disassoc); /* disassociations */
+ STAT1 (psq_drops); /* power save queue drops */
+#undef STAT1
+}
+
+static void
+process_stations(int sk, const char *dev)
+{
+ uint8_t buf[24*1024];
+ struct iwreq iwr;
+ uint8_t *cp;
+ int len;
+
+ memset (&iwr, 0, sizeof (iwr));
+ strncpy (iwr.ifr_name, dev, sizeof (iwr.ifr_name));
+ iwr.u.data.pointer = (void *) buf;
+ iwr.u.data.length = sizeof (buf);
+ if (ioctl (sk, IEEE80211_IOCTL_STA_INFO, &iwr) < 0)
+ return;
+
+ len = iwr.u.data.length;
+
+ cp = buf;
+ while (len >= sizeof (struct ieee80211req_sta_info))
+ {
+ struct ieee80211req_sta_info *si = (void *) cp;
+ process_station(sk, dev, si);
+ cp += si->isi_len;
+ len -= si->isi_len;
+ }
+}
+
+
+static int
+check_devname(const char *dev)
+{
+ char buf[256];
+ char buf2[256];
+ int i;
+
+ if (dev[0] == '.')
+ return 0;
+
+ ssnprintf (buf, sizeof (buf), "/sys/class/net/%s/device/driver", dev);
+ buf[sizeof (buf) - 1] = 0;
+
+ i = readlink (buf, buf2, sizeof (buf2) - 1);
+ if (i < 0)
+ return 0;
+ buf2[i] = 0;
+
+ return (strstr (buf2, "/drivers/ath_") != NULL);
+}
+
+
+static int madwifi_read (void)
+{
+ struct dirent *de;
+
+ int sk = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sk < 0)
+ return (-1);
+
+ DIR *nets = opendir ("/sys/class/net/");
+ if (nets == NULL)
+ return (-1);
+
+ while ((de = readdir (nets)))
+ if (check_devname (de->d_name) &&
+ (ignorelist_match (ignorelist, de->d_name) == 0)) {
+ process_athstats (sk, de->d_name);
+ process_80211stats (sk, de->d_name);
+ process_stations (sk, de->d_name);
+ }
+ closedir(nets);
+
+ close(sk);
+
+ return (0);
+}
+
+void module_register (void)
+{
+ plugin_register_config ("madwifi", madwifi_config,
+ config_keys, config_keys_num);
+
+ plugin_register_read ("madwifi", madwifi_read);
+}
diff -uprN collectd-4.6.3/src/madwifi.h collectd-4.6.3-mod/src/madwifi.h
--- collectd-4.6.3/src/madwifi.h 1970-01-01 01:00:00.000000000 +0100
+++ collectd-4.6.3-mod/src/madwifi.h 2009-07-17 21:57:50.000000000 +0200
@@ -0,0 +1,307 @@
+/**
+ * This file is compiled from several Madwifi header files.
+ * Original copyright is:
+ *
+ * Copyright (c) 2001 Atsushi Onoe
+ * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef MADWIFI_H
+#define MADWIFI_H
+
+#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address */
+#define IEEE80211_RATE_VAL 0x7f
+#define IEEE80211_RATE_SIZE 8 /* 802.11 standard */
+#define IEEE80211_RATE_MAXSIZE 15 /* max rates we'll handle */
+
+
+/*
+ * Per/node (station) statistics available when operating as an AP.
+ */
+struct ieee80211_nodestats {
+ u_int32_t ns_rx_data; /* rx data frames */
+ u_int32_t ns_rx_mgmt; /* rx management frames */
+ u_int32_t ns_rx_ctrl; /* rx control frames */
+ u_int32_t ns_rx_ucast; /* rx unicast frames */
+ u_int32_t ns_rx_mcast; /* rx multi/broadcast frames */
+ u_int64_t ns_rx_bytes; /* rx data count (bytes) */
+ u_int64_t ns_rx_beacons; /* rx beacon frames */
+ u_int32_t ns_rx_proberesp; /* rx probe response frames */
+
+ u_int32_t ns_rx_dup; /* rx discard because it's a dup */
+ u_int32_t ns_rx_noprivacy; /* rx w/ wep but privacy off */
+ u_int32_t ns_rx_wepfail; /* rx wep processing failed */
+ u_int32_t ns_rx_demicfail; /* rx demic failed */
+ u_int32_t ns_rx_decap; /* rx decapsulation failed */
+ u_int32_t ns_rx_defrag; /* rx defragmentation failed */
+ u_int32_t ns_rx_disassoc; /* rx disassociation */
+ u_int32_t ns_rx_deauth; /* rx deauthentication */
+ u_int32_t ns_rx_decryptcrc; /* rx decrypt failed on crc */
+ u_int32_t ns_rx_unauth; /* rx on unauthorized port */
+ u_int32_t ns_rx_unencrypted; /* rx unecrypted w/ privacy */
+
+ u_int32_t ns_tx_data; /* tx data frames */
+ u_int32_t ns_tx_mgmt; /* tx management frames */
+ u_int32_t ns_tx_ucast; /* tx unicast frames */
+ u_int32_t ns_tx_mcast; /* tx multi/broadcast frames */
+ u_int64_t ns_tx_bytes; /* tx data count (bytes) */
+ u_int32_t ns_tx_probereq; /* tx probe request frames */
+ u_int32_t ns_tx_uapsd; /* tx on uapsd queue */
+
+ u_int32_t ns_tx_novlantag; /* tx discard due to no tag */
+ u_int32_t ns_tx_vlanmismatch; /* tx discard due to of bad tag */
+
+ u_int32_t ns_tx_eosplost; /* uapsd EOSP retried out */
+
+ u_int32_t ns_ps_discard; /* ps discard due to of age */
+
+ u_int32_t ns_uapsd_triggers; /* uapsd triggers */
+
+ /* MIB-related state */
+ u_int32_t ns_tx_assoc; /* [re]associations */
+ u_int32_t ns_tx_assoc_fail; /* [re]association failures */
+ u_int32_t ns_tx_auth; /* [re]authentications */
+ u_int32_t ns_tx_auth_fail; /* [re]authentication failures*/
+ u_int32_t ns_tx_deauth; /* deauthentications */
+ u_int32_t ns_tx_deauth_code; /* last deauth reason */
+ u_int32_t ns_tx_disassoc; /* disassociations */
+ u_int32_t ns_tx_disassoc_code; /* last disassociation reason */
+ u_int32_t ns_psq_drops; /* power save queue drops */
+};
+
+/*
+ * Summary statistics.
+ */
+struct ieee80211_stats {
+ u_int32_t is_rx_badversion; /* rx frame with bad version */
+ u_int32_t is_rx_tooshort; /* rx frame too short */
+ u_int32_t is_rx_wrongbss; /* rx from wrong bssid */
+ u_int32_t is_rx_dup; /* rx discard due to it's a dup */
+ u_int32_t is_rx_wrongdir; /* rx w/ wrong direction */
+ u_int32_t is_rx_mcastecho; /* rx discard due to of mcast echo */
+ u_int32_t is_rx_notassoc; /* rx discard due to sta !assoc */
+ u_int32_t is_rx_noprivacy; /* rx w/ wep but privacy off */
+ u_int32_t is_rx_unencrypted; /* rx w/o wep and privacy on */
+ u_int32_t is_rx_wepfail; /* rx wep processing failed */
+ u_int32_t is_rx_decap; /* rx decapsulation failed */
+ u_int32_t is_rx_mgtdiscard; /* rx discard mgt frames */
+ u_int32_t is_rx_ctl; /* rx discard ctrl frames */
+ u_int32_t is_rx_beacon; /* rx beacon frames */
+ u_int32_t is_rx_rstoobig; /* rx rate set truncated */
+ u_int32_t is_rx_elem_missing; /* rx required element missing*/
+ u_int32_t is_rx_elem_toobig; /* rx element too big */
+ u_int32_t is_rx_elem_toosmall; /* rx element too small */
+ u_int32_t is_rx_elem_unknown; /* rx element unknown */
+ u_int32_t is_rx_badchan; /* rx frame w/ invalid chan */
+ u_int32_t is_rx_chanmismatch; /* rx frame chan mismatch */
+ u_int32_t is_rx_nodealloc; /* rx frame dropped */
+ u_int32_t is_rx_ssidmismatch; /* rx frame ssid mismatch */
+ u_int32_t is_rx_auth_unsupported;/* rx w/ unsupported auth alg */
+ u_int32_t is_rx_auth_fail; /* rx sta auth failure */
+ u_int32_t is_rx_auth_countermeasures;/* rx auth discard due to CM */
+ u_int32_t is_rx_assoc_bss; /* rx assoc from wrong bssid */
+ u_int32_t is_rx_assoc_notauth; /* rx assoc w/o auth */
+ u_int32_t is_rx_assoc_capmismatch;/* rx assoc w/ cap mismatch */
+ u_int32_t is_rx_assoc_norate; /* rx assoc w/ no rate match */
+ u_int32_t is_rx_assoc_badwpaie; /* rx assoc w/ bad WPA IE */
+ u_int32_t is_rx_deauth; /* rx deauthentication */
+ u_int32_t is_rx_disassoc; /* rx disassociation */
+ u_int32_t is_rx_badsubtype; /* rx frame w/ unknown subtype*/
+ u_int32_t is_rx_nobuf; /* rx failed for lack of buf */
+ u_int32_t is_rx_decryptcrc; /* rx decrypt failed on crc */
+ u_int32_t is_rx_ahdemo_mgt; /* rx discard ahdemo mgt frame*/
+ u_int32_t is_rx_bad_auth; /* rx bad auth request */
+ u_int32_t is_rx_unauth; /* rx on unauthorized port */
+ u_int32_t is_rx_badkeyid; /* rx w/ incorrect keyid */
+ u_int32_t is_rx_ccmpreplay; /* rx seq# violation (CCMP) */
+ u_int32_t is_rx_ccmpformat; /* rx format bad (CCMP) */
+ u_int32_t is_rx_ccmpmic; /* rx MIC check failed (CCMP) */
+ u_int32_t is_rx_tkipreplay; /* rx seq# violation (TKIP) */
+ u_int32_t is_rx_tkipformat; /* rx format bad (TKIP) */
+ u_int32_t is_rx_tkipmic; /* rx MIC check failed (TKIP) */
+ u_int32_t is_rx_tkipicv; /* rx ICV check failed (TKIP) */
+ u_int32_t is_rx_badcipher; /* rx failed due to of key type */
+ u_int32_t is_rx_nocipherctx; /* rx failed due to key !setup */
+ u_int32_t is_rx_acl; /* rx discard due to of acl policy */
+ u_int32_t is_rx_ffcnt; /* rx fast frames */
+ u_int32_t is_rx_badathtnl; /* driver key alloc failed */
+ u_int32_t is_tx_nobuf; /* tx failed for lack of buf */
+ u_int32_t is_tx_nonode; /* tx failed for no node */
+ u_int32_t is_tx_unknownmgt; /* tx of unknown mgt frame */
+ u_int32_t is_tx_badcipher; /* tx failed due to of key type */
+ u_int32_t is_tx_nodefkey; /* tx failed due to no defkey */
+ u_int32_t is_tx_noheadroom; /* tx failed due to no space */
+ u_int32_t is_tx_ffokcnt; /* tx fast frames sent success */
+ u_int32_t is_tx_fferrcnt; /* tx fast frames sent success */
+ u_int32_t is_scan_active; /* active scans started */
+ u_int32_t is_scan_passive; /* passive scans started */
+ u_int32_t is_node_timeout; /* nodes timed out inactivity */
+ u_int32_t is_crypto_nomem; /* no memory for crypto ctx */
+ u_int32_t is_crypto_tkip; /* tkip crypto done in s/w */
+ u_int32_t is_crypto_tkipenmic; /* tkip en-MIC done in s/w */
+ u_int32_t is_crypto_tkipdemic; /* tkip de-MIC done in s/w */
+ u_int32_t is_crypto_tkipcm; /* tkip counter measures */
+ u_int32_t is_crypto_ccmp; /* ccmp crypto done in s/w */
+ u_int32_t is_crypto_wep; /* wep crypto done in s/w */
+ u_int32_t is_crypto_setkey_cipher;/* cipher rejected key */
+ u_int32_t is_crypto_setkey_nokey;/* no key index for setkey */
+ u_int32_t is_crypto_delkey; /* driver key delete failed */
+ u_int32_t is_crypto_badcipher; /* unknown cipher */
+ u_int32_t is_crypto_nocipher; /* cipher not available */
+ u_int32_t is_crypto_attachfail; /* cipher attach failed */
+ u_int32_t is_crypto_swfallback; /* cipher fallback to s/w */
+ u_int32_t is_crypto_keyfail; /* driver key alloc failed */
+ u_int32_t is_crypto_enmicfail; /* en-MIC failed */
+ u_int32_t is_ibss_capmismatch; /* merge failed-cap mismatch */
+ u_int32_t is_ibss_norate; /* merge failed-rate mismatch */
+ u_int32_t is_ps_unassoc; /* ps-poll for unassoc. sta */
+ u_int32_t is_ps_badaid; /* ps-poll w/ incorrect aid */
+ u_int32_t is_ps_qempty; /* ps-poll w/ nothing to send */
+};
+
+/*
+ * Retrieve per-node statistics.
+ */
+struct ieee80211req_sta_stats {
+ union {
+ /* NB: explicitly force 64-bit alignment */
+ u_int8_t macaddr[IEEE80211_ADDR_LEN];
+ u_int64_t pad;
+ } is_u;
+ struct ieee80211_nodestats is_stats;
+};
+
+/*
+ * Station information block; the mac address is used
+ * to retrieve other data like stats, unicast key, etc.
+ */
+struct ieee80211req_sta_info {
+ u_int16_t isi_len; /* length (mult of 4) */
+ u_int16_t isi_freq; /* MHz */
+ u_int16_t isi_flags; /* channel flags */
+ u_int16_t isi_state; /* state flags */
+ u_int8_t isi_authmode; /* authentication algorithm */
+ u_int8_t isi_rssi;
+ u_int16_t isi_capinfo; /* capabilities */
+ u_int8_t isi_athflags; /* Atheros capabilities */
+ u_int8_t isi_erp; /* ERP element */
+ u_int8_t isi_macaddr[IEEE80211_ADDR_LEN];
+ u_int8_t isi_nrates; /* negotiated rates */
+ u_int8_t isi_rates[IEEE80211_RATE_MAXSIZE];
+ u_int8_t isi_txrate; /* index to isi_rates[] */
+ u_int16_t isi_ie_len; /* IE length */
+ u_int16_t isi_associd; /* assoc response */
+ u_int16_t isi_txpower; /* current tx power */
+ u_int16_t isi_vlan; /* vlan tag */
+ u_int16_t isi_txseqs[17]; /* seq to be transmitted */
+ u_int16_t isi_rxseqs[17]; /* seq previous for qos frames*/
+ u_int16_t isi_inact; /* inactivity timer */
+ u_int8_t isi_uapsd; /* UAPSD queues */
+ u_int8_t isi_opmode; /* sta operating mode */
+
+ /* XXX frag state? */
+ /* variable length IE data */
+};
+
+
+struct ath_stats {
+ u_int32_t ast_watchdog; /* device reset by watchdog */
+ u_int32_t ast_hardware; /* fatal hardware error interrupts */
+ u_int32_t ast_bmiss; /* beacon miss interrupts */
+ u_int32_t ast_rxorn; /* rx overrun interrupts */
+ u_int32_t ast_rxeol; /* rx eol interrupts */
+ u_int32_t ast_txurn; /* tx underrun interrupts */
+ u_int32_t ast_mib; /* mib interrupts */
+ u_int32_t ast_tx_packets; /* packet sent on the interface */
+ u_int32_t ast_tx_mgmt; /* management frames transmitted */
+ u_int32_t ast_tx_discard; /* frames discarded prior to assoc */
+ u_int32_t ast_tx_invalid; /* frames discarded due to is device gone */
+ u_int32_t ast_tx_qstop; /* tx queue stopped because it's full */
+ u_int32_t ast_tx_encap; /* tx encapsulation failed */
+ u_int32_t ast_tx_nonode; /* tx failed due to of no node */
+ u_int32_t ast_tx_nobuf; /* tx failed due to of no tx buffer (data) */
+ u_int32_t ast_tx_nobufmgt; /* tx failed due to of no tx buffer (mgmt)*/
+ u_int32_t ast_tx_xretries; /* tx failed due to of too many retries */
+ u_int32_t ast_tx_fifoerr; /* tx failed due to of FIFO underrun */
+ u_int32_t ast_tx_filtered; /* tx failed due to xmit filtered */
+ u_int32_t ast_tx_shortretry; /* tx on-chip retries (short) */
+ u_int32_t ast_tx_longretry; /* tx on-chip retries (long) */
+ u_int32_t ast_tx_badrate; /* tx failed due to of bogus xmit rate */
+ u_int32_t ast_tx_noack; /* tx frames with no ack marked */
+ u_int32_t ast_tx_rts; /* tx frames with rts enabled */
+ u_int32_t ast_tx_cts; /* tx frames with cts enabled */
+ u_int32_t ast_tx_shortpre; /* tx frames with short preamble */
+ u_int32_t ast_tx_altrate; /* tx frames with alternate rate */
+ u_int32_t ast_tx_protect; /* tx frames with protection */
+ u_int32_t ast_rx_orn; /* rx failed due to of desc overrun */
+ u_int32_t ast_rx_crcerr; /* rx failed due to of bad CRC */
+ u_int32_t ast_rx_fifoerr; /* rx failed due to of FIFO overrun */
+ u_int32_t ast_rx_badcrypt; /* rx failed due to of decryption */
+ u_int32_t ast_rx_badmic; /* rx failed due to of MIC failure */
+ u_int32_t ast_rx_phyerr; /* rx PHY error summary count */
+ u_int32_t ast_rx_phy[32]; /* rx PHY error per-code counts */
+ u_int32_t ast_rx_tooshort; /* rx discarded due to frame too short */
+ u_int32_t ast_rx_toobig; /* rx discarded due to frame too large */
+ u_int32_t ast_rx_nobuf; /* rx setup failed due to of no skbuff */
+ u_int32_t ast_rx_packets; /* packet recv on the interface */
+ u_int32_t ast_rx_mgt; /* management frames received */
+ u_int32_t ast_rx_ctl; /* control frames received */
+ int8_t ast_tx_rssi; /* tx rssi of last ack */
+ int8_t ast_rx_rssi; /* rx rssi from histogram */
+ u_int32_t ast_be_xmit; /* beacons transmitted */
+ u_int32_t ast_be_nobuf; /* no skbuff available for beacon */
+ u_int32_t ast_per_cal; /* periodic calibration calls */
+ u_int32_t ast_per_calfail; /* periodic calibration failed */
+ u_int32_t ast_per_rfgain; /* periodic calibration rfgain reset */
+ u_int32_t ast_rate_calls; /* rate control checks */
+ u_int32_t ast_rate_raise; /* rate control raised xmit rate */
+ u_int32_t ast_rate_drop; /* rate control dropped xmit rate */
+ u_int32_t ast_ant_defswitch; /* rx/default antenna switches */
+ u_int32_t ast_ant_txswitch; /* tx antenna switches */
+ u_int32_t ast_ant_rx[8]; /* rx frames with antenna */
+ u_int32_t ast_ant_tx[8]; /* tx frames with antenna */
+};
+
+#define SIOCGATHSTATS (SIOCDEVPRIVATE+0)
+#define SIOCGATHDIAG (SIOCDEVPRIVATE+1)
+#define SIOCGATHRADARSIG (SIOCDEVPRIVATE+2)
+#define SIOCGATHHALDIAG (SIOCDEVPRIVATE+3)
+#define SIOCG80211STATS (SIOCDEVPRIVATE+2)
+/* NB: require in+out parameters so cannot use wireless extensions, yech */
+#define IEEE80211_IOCTL_GETKEY (SIOCDEVPRIVATE+3)
+#define IEEE80211_IOCTL_GETWPAIE (SIOCDEVPRIVATE+4)
+#define IEEE80211_IOCTL_STA_STATS (SIOCDEVPRIVATE+5)
+#define IEEE80211_IOCTL_STA_INFO (SIOCDEVPRIVATE+6)
+#define SIOC80211IFCREATE (SIOCDEVPRIVATE+7)
+#define SIOC80211IFDESTROY (SIOCDEVPRIVATE+8)
+#define IEEE80211_IOCTL_SCAN_RESULTS (SIOCDEVPRIVATE+9)
+
+
+#endif
diff -uprN collectd-4.6.3/src/types.db collectd-4.6.3-mod/src/types.db
--- collectd-4.6.3/src/types.db 2009-06-02 11:17:47.000000000 +0200
+++ collectd-4.6.3-mod/src/types.db 2009-07-17 21:57:50.000000000 +0200
@@ -119,3 +119,179 @@ voltage value:GAUGE:U:U
vs_memory value:GAUGE:0:9223372036854775807
vs_processes value:GAUGE:0:65535
vs_threads value:GAUGE:0:65535
+ath_dev_rx_badversion value:COUNTER:0:4294967295
+ath_dev_rx_tooshort value:COUNTER:0:4294967295
+ath_dev_rx_wrongbss value:COUNTER:0:4294967295
+ath_dev_rx_dup value:COUNTER:0:4294967295
+ath_dev_rx_wrongdir value:COUNTER:0:4294967295
+ath_dev_rx_mcastecho value:COUNTER:0:4294967295
+ath_dev_rx_notassoc value:COUNTER:0:4294967295
+ath_dev_rx_noprivacy value:COUNTER:0:4294967295
+ath_dev_rx_unencrypted value:COUNTER:0:4294967295
+ath_dev_rx_wepfail value:COUNTER:0:4294967295
+ath_dev_rx_decap value:COUNTER:0:4294967295
+ath_dev_rx_mgtdiscard value:COUNTER:0:4294967295
+ath_dev_rx_ctl value:COUNTER:0:4294967295
+ath_dev_rx_beacon value:COUNTER:0:4294967295
+ath_dev_rx_rstoobig value:COUNTER:0:4294967295
+ath_dev_rx_elem_missing value:COUNTER:0:4294967295
+ath_dev_rx_elem_toobig value:COUNTER:0:4294967295
+ath_dev_rx_elem_toosmall value:COUNTER:0:4294967295
+ath_dev_rx_elem_unknown value:COUNTER:0:4294967295
+ath_dev_rx_badchan value:COUNTER:0:4294967295
+ath_dev_rx_chanmismatch value:COUNTER:0:4294967295
+ath_dev_rx_nodealloc value:COUNTER:0:4294967295
+ath_dev_rx_ssidmismatch value:COUNTER:0:4294967295
+ath_dev_rx_auth_unsupported value:COUNTER:0:4294967295
+ath_dev_rx_auth_fail value:COUNTER:0:4294967295
+ath_dev_rx_assoc_bss value:COUNTER:0:4294967295
+ath_dev_rx_assoc_notauth value:COUNTER:0:4294967295
+ath_dev_rx_assoc_capmismatch value:COUNTER:0:4294967295
+ath_dev_rx_assoc_norate value:COUNTER:0:4294967295
+ath_dev_rx_assoc_badwpaie value:COUNTER:0:4294967295
+ath_dev_rx_deauth value:COUNTER:0:4294967295
+ath_dev_rx_disassoc value:COUNTER:0:4294967295
+ath_dev_rx_badsubtype value:COUNTER:0:4294967295
+ath_dev_rx_nobuf value:COUNTER:0:4294967295
+ath_dev_rx_decryptcrc value:COUNTER:0:4294967295
+ath_dev_rx_ahdemo_mgt value:COUNTER:0:4294967295
+ath_dev_rx_bad_auth value:COUNTER:0:4294967295
+ath_dev_rx_unauth value:COUNTER:0:4294967295
+ath_dev_rx_badkeyid value:COUNTER:0:4294967295
+ath_dev_rx_ccmpreplay value:COUNTER:0:4294967295
+ath_dev_rx_ccmpformat value:COUNTER:0:4294967295
+ath_dev_rx_ccmpmic value:COUNTER:0:4294967295
+ath_dev_rx_tkipreplay value:COUNTER:0:4294967295
+ath_dev_rx_tkipformat value:COUNTER:0:4294967295
+ath_dev_rx_tkipmic value:COUNTER:0:4294967295
+ath_dev_rx_tkipicv value:COUNTER:0:4294967295
+ath_dev_rx_badcipher value:COUNTER:0:4294967295
+ath_dev_rx_nocipherctx value:COUNTER:0:4294967295
+ath_dev_rx_acl value:COUNTER:0:4294967295
+ath_dev_rx_ffcnt value:COUNTER:0:4294967295
+ath_dev_rx_badathtnl value:COUNTER:0:4294967295
+ath_dev_rx_auth_countermeasures value:COUNTER:0:4294967295
+ath_dev_tx_nobuf value:COUNTER:0:4294967295
+ath_dev_tx_nonode value:COUNTER:0:4294967295
+ath_dev_tx_unknownmgt value:COUNTER:0:4294967295
+ath_dev_tx_badcipher value:COUNTER:0:4294967295
+ath_dev_tx_nodefkey value:COUNTER:0:4294967295
+ath_dev_tx_noheadroom value:COUNTER:0:4294967295
+ath_dev_tx_ffokcnt value:COUNTER:0:4294967295
+ath_dev_tx_fferrcnt value:COUNTER:0:4294967295
+ath_dev_scan_active value:COUNTER:0:4294967295
+ath_dev_scan_passive value:COUNTER:0:4294967295
+ath_dev_node_timeout value:COUNTER:0:4294967295
+ath_dev_crypto_nomem value:COUNTER:0:4294967295
+ath_dev_crypto_tkip value:COUNTER:0:4294967295
+ath_dev_crypto_tkipenmic value:COUNTER:0:4294967295
+ath_dev_crypto_tkipdemic value:COUNTER:0:4294967295
+ath_dev_crypto_tkipcm value:COUNTER:0:4294967295
+ath_dev_crypto_ccmp value:COUNTER:0:4294967295
+ath_dev_crypto_wep value:COUNTER:0:4294967295
+ath_dev_crypto_setkey_cipher value:COUNTER:0:4294967295
+ath_dev_crypto_setkey_nokey value:COUNTER:0:4294967295
+ath_dev_crypto_delkey value:COUNTER:0:4294967295
+ath_dev_crypto_badcipher value:COUNTER:0:4294967295
+ath_dev_crypto_nocipher value:COUNTER:0:4294967295
+ath_dev_crypto_attachfail value:COUNTER:0:4294967295
+ath_dev_crypto_swfallback value:COUNTER:0:4294967295
+ath_dev_crypto_keyfail value:COUNTER:0:4294967295
+ath_dev_crypto_enmicfail value:COUNTER:0:4294967295
+ath_dev_ibss_capmismatch value:COUNTER:0:4294967295
+ath_dev_ibss_norate value:COUNTER:0:4294967295
+ath_dev_ps_unassoc value:COUNTER:0:4294967295
+ath_dev_ps_badaid value:COUNTER:0:4294967295
+ath_dev_ps_qempty value:COUNTER:0:4294967295
+ath_hw_watchdog value:COUNTER:0:4294967295
+ath_hw_hardware value:COUNTER:0:4294967295
+ath_hw_bmiss value:COUNTER:0:4294967295
+ath_hw_rxorn value:COUNTER:0:4294967295
+ath_hw_rxeol value:COUNTER:0:4294967295
+ath_hw_txurn value:COUNTER:0:4294967295
+ath_hw_mib value:COUNTER:0:4294967295
+ath_hw_tx_packets value:COUNTER:0:4294967295
+ath_hw_tx_mgmt value:COUNTER:0:4294967295
+ath_hw_tx_discard value:COUNTER:0:4294967295
+ath_hw_tx_invalid value:COUNTER:0:4294967295
+ath_hw_tx_qstop value:COUNTER:0:4294967295
+ath_hw_tx_encap value:COUNTER:0:4294967295
+ath_hw_tx_nonode value:COUNTER:0:4294967295
+ath_hw_tx_nobuf value:COUNTER:0:4294967295
+ath_hw_tx_nobufmgt value:COUNTER:0:4294967295
+ath_hw_tx_xretries value:COUNTER:0:4294967295
+ath_hw_tx_fifoerr value:COUNTER:0:4294967295
+ath_hw_tx_filtered value:COUNTER:0:4294967295
+ath_hw_tx_shortretry value:COUNTER:0:4294967295
+ath_hw_tx_longretry value:COUNTER:0:4294967295
+ath_hw_tx_badrate value:COUNTER:0:4294967295
+ath_hw_tx_noack value:COUNTER:0:4294967295
+ath_hw_tx_rts value:COUNTER:0:4294967295
+ath_hw_tx_cts value:COUNTER:0:4294967295
+ath_hw_tx_shortpre value:COUNTER:0:4294967295
+ath_hw_tx_altrate value:COUNTER:0:4294967295
+ath_hw_tx_protect value:COUNTER:0:4294967295
+ath_hw_rx_orn value:COUNTER:0:4294967295
+ath_hw_rx_crcerr value:COUNTER:0:4294967295
+ath_hw_rx_fifoerr value:COUNTER:0:4294967295
+ath_hw_rx_badcrypt value:COUNTER:0:4294967295
+ath_hw_rx_badmic value:COUNTER:0:4294967295
+ath_hw_rx_phyerr value:COUNTER:0:4294967295
+ath_hw_rx_tooshort value:COUNTER:0:4294967295
+ath_hw_rx_toobig value:COUNTER:0:4294967295
+ath_hw_rx_nobuf value:COUNTER:0:4294967295
+ath_hw_rx_packets value:COUNTER:0:4294967295
+ath_hw_rx_mgt value:COUNTER:0:4294967295
+ath_hw_rx_ctl value:COUNTER:0:4294967295
+ath_hw_be_xmit value:COUNTER:0:4294967295
+ath_hw_be_nobuf value:COUNTER:0:4294967295
+ath_hw_per_cal value:COUNTER:0:4294967295
+ath_hw_per_calfail value:COUNTER:0:4294967295
+ath_hw_per_rfgain value:COUNTER:0:4294967295
+ath_hw_rate_calls value:COUNTER:0:4294967295
+ath_hw_rate_raise value:COUNTER:0:4294967295
+ath_hw_rate_drop value:COUNTER:0:4294967295
+ath_hw_ant_defswitch value:COUNTER:0:4294967295
+ath_hw_ant_txswitch value:COUNTER:0:4294967295
+ath_hw_ant_rx 0:COUNTER:0:4294967295, 1:COUNTER:0:4294967295, 2:COUNTER:0:4294967295, 3:COUNTER:0:4294967295, 4:COUNTER:0:4294967295, 5:COUNTER:0:4294967295, 6:COUNTER:0:4294967295, 7:COUNTER:0:4294967295
+ath_hw_ant_tx 0:COUNTER:0:4294967295, 1:COUNTER:0:4294967295, 2:COUNTER:0:4294967295, 3:COUNTER:0:4294967295, 4:COUNTER:0:4294967295, 5:COUNTER:0:4294967295, 6:COUNTER:0:4294967295, 7:COUNTER:0:4294967295
+ath_sta_tx_rate value:GAUGE:0:127
+ath_sta_rssi value:GAUGE:0:255
+ath_sta_rx_data value:COUNTER:0:4294967295
+ath_sta_rx_mgmt value:COUNTER:0:4294967295
+ath_sta_rx_ctrl value:COUNTER:0:4294967295
+ath_sta_rx_ucast value:COUNTER:0:4294967295
+ath_sta_rx_mcast value:COUNTER:0:4294967295
+ath_sta_rx_bytes value:COUNTER:0:U
+ath_sta_rx_beacons value:COUNTER:0:U
+ath_sta_rx_proberesp value:COUNTER:0:4294967295
+ath_sta_rx_dup value:COUNTER:0:4294967295
+ath_sta_rx_noprivacy value:COUNTER:0:4294967295
+ath_sta_rx_wepfail value:COUNTER:0:4294967295
+ath_sta_rx_demicfail value:COUNTER:0:4294967295
+ath_sta_rx_decap value:COUNTER:0:4294967295
+ath_sta_rx_defrag value:COUNTER:0:4294967295
+ath_sta_rx_disassoc value:COUNTER:0:4294967295
+ath_sta_rx_deauth value:COUNTER:0:4294967295
+ath_sta_rx_decryptcrc value:COUNTER:0:4294967295
+ath_sta_rx_unauth value:COUNTER:0:4294967295
+ath_sta_rx_unencrypted value:COUNTER:0:4294967295
+ath_sta_tx_data value:COUNTER:0:4294967295
+ath_sta_tx_mgmt value:COUNTER:0:4294967295
+ath_sta_tx_ucast value:COUNTER:0:4294967295
+ath_sta_tx_mcast value:COUNTER:0:4294967295
+ath_sta_tx_bytes value:COUNTER:0:U
+ath_sta_tx_probereq value:COUNTER:0:4294967295
+ath_sta_tx_uapsd value:COUNTER:0:4294967295
+ath_sta_tx_novlantag value:COUNTER:0:4294967295
+ath_sta_tx_vlanmismatch value:COUNTER:0:4294967295
+ath_sta_tx_eosplost value:COUNTER:0:4294967295
+ath_sta_ps_discard value:COUNTER:0:4294967295
+ath_sta_uapsd_triggers value:COUNTER:0:4294967295
+ath_sta_tx_assoc value:COUNTER:0:4294967295
+ath_sta_tx_assoc_fail value:COUNTER:0:4294967295
+ath_sta_tx_auth value:COUNTER:0:4294967295
+ath_sta_tx_auth_fail value:COUNTER:0:4294967295
+ath_sta_tx_deauth value:COUNTER:0:4294967295
+ath_sta_tx_disassoc value:COUNTER:0:4294967295
+ath_sta_psq_drops value:COUNTER:0:4294967295
--
Elen sila lumenn' omentielvo
Ondrej 'SanTiago' Zajicek (email: santiago at crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://mailman.verplant.org/pipermail/collectd/attachments/20090717/1291f7d9/attachment-0001.pgp
More information about the collectd
mailing list