diff --git a/html/includes/graphs/device/xirrus_dataRates.inc.php b/html/includes/graphs/device/xirrus_dataRates.inc.php
new file mode 100644
index 0000000000..0f81d52f97
--- /dev/null
+++ b/html/includes/graphs/device/xirrus_dataRates.inc.php
@@ -0,0 +1,44 @@
+ 'FF0000',
+ 2 => '0000FF',
+ 3 => '00FF00',
+ 4 => 'FF00FF',
+ 5 => '000000',
+ 6 => 'FFFF00',
+ 7 => 'C0C0C0',
+ 8 => '800000',
+ 9 => '808000',
+ 10 => '008000',
+ 11 => '00FFFF',
+ 12 => '008080',
+ 13 => '000080',
+ 14 => '800080',
+ 15 => 'FF69B4',
+ 16 => '006400'
+);
+
+$rrd_options .= ' -l 0 -E ';
+$rrd_options .= " COMMENT:'Average Data Rate Cur Min Max\\n'";
+$radioId=1;
+foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_stats-*.rrd') as $rrd) {
+ // get radio name
+ preg_match("/xirrus_stats-iap([0-9]{1,2}).rrd/", $rrd, $out);
+ list(,$radioId)=$out;
+
+ // build graph
+ $color=$pallette[$radioId];
+
+ $descr = "iap$radioId ";
+
+ $rrd_options .= " DEF:rate$radioId=$rrd:dataRate:AVERAGE";
+ $rrd_options .= " LINE2:rate$radioId#".$color.":'".$descr."'";
+ $rrd_options .= " GPRINT:rate$radioId:LAST:'%5.0lf'";
+ $rrd_options .= " GPRINT:rate$radioId:MIN:'%5.0lf'";
+ $rrd_options .= " GPRINT:rate$radioId:MAX:'%5.0lf'\\l";
+
+ $radioId++;
+}//end foreach
diff --git a/html/includes/graphs/device/xirrus_noiseFloor.inc.php b/html/includes/graphs/device/xirrus_noiseFloor.inc.php
new file mode 100644
index 0000000000..5f8afaa817
--- /dev/null
+++ b/html/includes/graphs/device/xirrus_noiseFloor.inc.php
@@ -0,0 +1,44 @@
+ 'FF0000',
+ 2 => '0000FF',
+ 3 => '00FF00',
+ 4 => 'FF00FF',
+ 5 => '000000',
+ 6 => 'FFFF00',
+ 7 => 'C0C0C0',
+ 8 => '800000',
+ 9 => '808000',
+ 10 => '008000',
+ 11 => '00FFFF',
+ 12 => '008080',
+ 13 => '000080',
+ 14 => '800080',
+ 15 => 'FF69B4',
+ 16 => '006400'
+);
+
+$rrd_options .= ' -E ';
+$rrd_options .= " COMMENT:'Noisefloor Cur Min Max\\n'";
+$radioId=1;
+foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_stats-*.rrd') as $rrd) {
+ // get radio name
+ preg_match("/xirrus_stats-iap([0-9]{1,2}).rrd/", $rrd, $out);
+ list(,$radioId)=$out;
+
+ // build graph
+ $color=$pallette[$radioId];
+
+ $descr = "iap$radioId ";
+
+ $rrd_options .= " DEF:noise$radioId=$rrd:noiseFloor:AVERAGE";
+ $rrd_options .= " LINE2:noise$radioId#".$color.":'".$descr."'";
+ $rrd_options .= " GPRINT:noise$radioId:LAST:'%5.0lf'";
+ $rrd_options .= " GPRINT:noise$radioId:MIN:'%5.0lf'";
+ $rrd_options .= " GPRINT:noise$radioId:MAX:'%5.0lf'\\l";
+
+ $radioId++;
+}//end foreach
diff --git a/html/includes/graphs/device/xirrus_rssi.inc.php b/html/includes/graphs/device/xirrus_rssi.inc.php
index 3675b5d1d6..97e58e5a2b 100644
--- a/html/includes/graphs/device/xirrus_rssi.inc.php
+++ b/html/includes/graphs/device/xirrus_rssi.inc.php
@@ -24,7 +24,12 @@ $pallette = array(
$rrd_options .= ' -E ';
$rrd_options .= " COMMENT:'Signal RSSI Cur Min Max\\n'";
$radioId=1;
-foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_rssi-*.rrd') as $rrd) {
+foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_stats-*.rrd') as $rrd) {
+ // get radio name
+ preg_match("/xirrus_stats-iap([0-9]{1,2}).rrd/", $rrd, $out);
+ list(,$radioId)=$out;
+
+ // build graph
$color=$pallette[$radioId];
$descr = "iap$radioId ";
diff --git a/html/includes/graphs/device/xirrus_stations.inc.php b/html/includes/graphs/device/xirrus_stations.inc.php
new file mode 100644
index 0000000000..ae7fb4a1d4
--- /dev/null
+++ b/html/includes/graphs/device/xirrus_stations.inc.php
@@ -0,0 +1,44 @@
+ '001080',
+ 2 => '043D85',
+ 3 => '096C8A',
+ 4 => '0F8F84',
+ 5 => '159461',
+ 6 => '1B9A3E',
+ 7 => '279F22',
+ 8 => '56A429',
+ 9 => '83A930',
+ 10 => 'AEAE38',
+ 11 => 'B48E40',
+ 12 => 'B97049',
+ 13 => 'BE5552',
+ 14 => 'C35B79',
+ 15 => 'C864A1',
+ 16 => 'CE6FC7'
+);
+
+$rrd_options .= ' -l 0 -E ';
+$rrd_options .= " COMMENT:'Associated Stations Cur Min Max\\n'";
+$radioId=1;
+foreach(glob($config['rrd_dir'].'/'.$device['hostname'].'/xirrus_users-*.rrd') as $rrd) {
+ // get radio name
+ preg_match("/xirrus_users-iap([0-9]{1,2}).rrd/", $rrd, $out);
+ list(,$radioId)=$out;
+
+ // build graph
+ $color=$pallette[$radioId];
+
+ $descr = "iap$radioId ";
+
+ $rrd_options .= " DEF:stations$radioId=$rrd:stations:AVERAGE";
+ $rrd_options .= " AREA:stations$radioId#".$color.":'".$descr."':STACK";
+ $rrd_options .= " GPRINT:stations$radioId:LAST:'%5.0lf'";
+ $rrd_options .= " GPRINT:stations$radioId:MIN:'%5.0lf'";
+ $rrd_options .= " GPRINT:stations$radioId:MAX:'%5.0lf'\\l";
+
+ $radioId++;
+}//end foreach
diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php
index ce8b730aaa..2c6ebe10f1 100644
--- a/includes/definitions.inc.php
+++ b/includes/definitions.inc.php
@@ -1678,7 +1678,7 @@ $config['os'][$os]['type'] = 'wireless';
$config['os'][$os]['icon'] = 'xirrus';
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
-$config['os'][$os]['over'][1]['graph'] = 'device_wifi_clients';
+$config['os'][$os]['over'][1]['graph'] = 'device_xirrus_stations';
$config['os'][$os]['over'][1]['text'] = 'Wifi Clients';
$config['os'][$os]['over'][2]['graph'] = 'device_xirrus_rssi';
$config['os'][$os]['over'][2]['text'] = 'Signal RSSI';
@@ -2162,6 +2162,17 @@ $config['graph_types']['device']['cisco_wwan_mnc']['descr'] = 'MNC';
$config['graph_types']['device']['xirrus_rssi']['section'] = 'wireless';
$config['graph_types']['device']['xirrus_rssi']['order'] = '0';
$config['graph_types']['device']['xirrus_rssi']['descr'] = 'Signal Rssi';
+$config['graph_types']['device']['xirrus_dataRates']['section'] = 'wireless';
+$config['graph_types']['device']['xirrus_dataRates']['order'] = '0';
+$config['graph_types']['device']['xirrus_dataRates']['descr'] = 'Average DataRates';
+$config['graph_types']['device']['xirrus_noiseFloor']['section'] = 'wireless';
+$config['graph_types']['device']['xirrus_noiseFloor']['order'] = '0';
+$config['graph_types']['device']['xirrus_noiseFloor']['descr'] = 'Noise Floor';
+$config['graph_types']['device']['xirrus_stations']['section'] = 'wireless';
+$config['graph_types']['device']['xirrus_stations']['order'] = '0';
+$config['graph_types']['device']['xirrus_stations']['descr'] = 'Associated Stations';
+
+
// Device Types
diff --git a/includes/polling/wifi.inc.php b/includes/polling/wifi.inc.php
index 530bbb5521..685fac9641 100644
--- a/includes/polling/wifi.inc.php
+++ b/includes/polling/wifi.inc.php
@@ -78,18 +78,6 @@ if ($device['type'] == 'network' || $device['type'] == 'firewall' || $device['ty
echo (($wificlients1 + 0).' clients on wireless connector, ');
}
- if ($device['os'] == 'xirrus') {
- $wificlients1=0; $wificlients2=0;
- $assoc = snmpwalk_cache_oid($device, 'XIRRUS-MIB::stationAssociationIAP', array(), 'XIRRUS-MIB');
- foreach($assoc as $station) {
- if ($station['stationAssociationIAP']=='iap1') {
- $wificlients1++;
- } else {
- $wificlients2++;
- }
- }
- }
-
if (isset($wificlients1) && $wificlients1 != '') {
$tags = array(
'rrd_def' => 'DS:wificlients:GAUGE:600:-273:1000',
diff --git a/includes/polling/wireless/xirrus.inc.php b/includes/polling/wireless/xirrus.inc.php
index e7cd1f0886..e91b61854b 100644
--- a/includes/polling/wireless/xirrus.inc.php
+++ b/includes/polling/wireless/xirrus.inc.php
@@ -2,17 +2,49 @@
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus-rssi.rrd";
$radios = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorIfaceName', array(), 'XIRRUS-MIB');
$rssi = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorAverageRSSI', array(), 'XIRRUS-MIB');
+$dataRate = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorAverageDataRate', array(), 'XIRRUS-MIB');
+$noiseFloor = snmpwalk_cache_oid($device, 'XIRRUS-MIB::realtimeMonitorNoiseFloor', array(), 'XIRRUS-MIB');
+$associations=array();
+
foreach($radios as $idx => $radio) {
$radioName = $radio['realtimeMonitorIfaceName'];
- $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_rssi-$idx.rrd";
+ $associations[$radioName]=0;
+ $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_stats-$radioName.rrd";
if (!is_file($rrd_filename)) {
- rrdtool_create($rrd_filename, " --step 300 DS:rssi:GAUGE:600:-150:0".$config['rrd_rra']);
+ rrdtool_create($rrd_filename, " --step 300 DS:rssi:GAUGE:600:-150:0 DS:dataRate:GAUGE:600:0:1400 DS:noiseFloor:GAUGE:600:-150:0".$config['rrd_rra']);
}
- rrdtool_update($rrd_filename, array('rssi'=>$rssi[$idx]['realtimeMonitorAverageRSSI']));
+ rrdtool_update($rrd_filename, array(
+ 'rssi'=>$rssi[$idx]['realtimeMonitorAverageRSSI'],
+ 'dataRate'=>$dataRate[$idx]['realtimeMonitorAverageDataRate'],
+ 'noiseFloor'=>$noiseFloor[$idx]['realtimeMonitorNoiseFloor']
+ ));
}
// cleanup
unset($rrd_filename); unset($radios); unset($rssi); unset($radioName);
+
+// station associations
+// custom RRDs and graph as each AP may have 16 radios
+$assoc = snmpwalk_cache_oid($device, 'XIRRUS-MIB::stationAssociationIAP', array(), 'XIRRUS-MIB');
+foreach($assoc as $s) {
+ $radio = array_pop($s);
+ $associations[$radio]++;
+}
+unset($radio); unset($assoc);
+// write to rrds
+print_r($associations);
+foreach($associations as $radio => $count) {
+ $rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/xirrus_users-$radio.rrd";
+ if (!is_file($rrd_filename)) {
+ rrdtool_create($rrd_filename, " --step 300 DS:stations:GAUGE:600:0:3200".$config['rrd_rra']);
+ }
+ rrdtool_update($rrd_filename, array('stations'=>$count));
+}
+// cleanup
+unset($assocations); unset($rrd_filename);
+
$graphs['xirrus_rssi'] = TRUE;
-?>
+$graphs['xirrus_dataRates'] = TRUE;
+$graphs['xirrus_noiseFloor'] = TRUE;
+$graphs['xirrus_stations'] = TRUE;