diff --git a/includes/discovery/mempools/ciscowlc.inc.php b/includes/discovery/mempools/ciscowlc.inc.php new file mode 100644 index 0000000000..b966bdfff2 --- /dev/null +++ b/includes/discovery/mempools/ciscowlc.inc.php @@ -0,0 +1,12 @@ + $value) { - $numClients += $value['bsnApIfNoOfUsers']; + $numClients += $value['bsnApIfNoOfUsers']; } $rrdfile = $host_rrd.'/ciscowlc'.safename('.rrd'); if (!is_file($rrdfile)) { - rrdtool_create($rrdfile, ' --step 300 DS:NUMAPS:GAUGE:600:0:12500000000 DS:NUMCLIENTS:GAUGE:600:0:12500000000 '.$config['rrd_rra']); + rrdtool_create($rrdfile, ' --step 300 DS:NUMAPS:GAUGE:600:0:12500000000 DS:NUMCLIENTS:GAUGE:600:0:12500000000 '.$config['rrd_rra']); } $fields = array( - 'NUMAPS' => $numAccessPoints, - 'NUMCLIENTS' => $numClients + 'NUMAPS' => $numAccessPoints, + 'NUMCLIENTS' => $numClients ); $ret = rrdtool_update($rrdfile, $fields); @@ -75,8 +64,123 @@ if (!is_file($wificlientsrrd)) { } $fields = array( - 'wificlients' => $numClients + 'wificlients' => $numClients ); rrdtool_update($wificlientsrrd, $fields); $graphs['wifi_clients'] = true; + + +$ap_db = dbFetchRows('SELECT * FROM `access_points` WHERE `device_id` = ?', array($device['device_id'])); + +foreach ($radios as $key => $value) { + + $indexName = substr($key, 0, -2); + + $channel = str_replace('ch', '', $value['bsnAPIfPhyChannelNumber']); + $mac = str_replace(' ', ':', $stats[$indexName]['bsnAPDot3MacAddress']); + $name = $stats[$indexName]['bsnAPName']; + $numasoclients = $value['bsnApIfNoOfUsers']; + $radioArray = explode('.',$key); + $radionum = array_pop($radioArray); + $txpow = $value['bsnAPIfPhyTxPowerLevel']; + $type = $value['bsnAPIfType']; + $interference = 128 + $interferences[$key . '.' . $channel]['bsnAPIfInterferencePower']; + $radioutil = $loadParams[$key]['bsnAPIfLoadChannelUtilization']; + + // TODO + $numactbssid = 0; + $nummonbssid = 0; + $nummonclients = 0; + + d_echo(" name: $name\n"); + d_echo(" radionum: $radionum\n"); + d_echo(" type: $type\n"); + d_echo(" channel: $channel\n"); + d_echo(" txpow: $txpow\n"); + d_echo(" radioutil: $radioutil\n"); + d_echo(" numasoclients: $numasoclients\n"); + d_echo(" interference: $interference\n"); + + // if there is a numeric channel, assume the rest of the data is valid, I guess + if (!is_numeric($channel)) { + continue; + } + + $rrd_file = $config['rrd_dir'].'/'.$device['hostname'].'/'.safename("arubaap-$name.$radionum.rrd"); + if (!is_file($rrd_file)) { + $dslist = 'DS:channel:GAUGE:600:0:200 '; + $dslist .= 'DS:txpow:GAUGE:600:0:200 '; + $dslist .= 'DS:radioutil:GAUGE:600:0:100 '; + $dslist .= 'DS:nummonclients:GAUGE:600:0:500 '; + $dslist .= 'DS:nummonbssid:GAUGE:600:0:200 '; + $dslist .= 'DS:numasoclients:GAUGE:600:0:500 '; + $dslist .= 'DS:interference:GAUGE:600:0:2000 '; + rrdtool_create($rrd_file, "--step 300 $dslist ".$config['rrd_rra']); + } + + $fields = array( + 'channel' => $channel, + 'txpow' => $txpow, + 'radioutil' => $radioutil, + 'nummonclients' => $nummonclients, + 'nummonbssid' => $nummonbssid, + 'numasoclients' => $numasoclients, + 'interference' => $interference, + ); + + rrdtool_update($rrd_file, $fields); + + $foundid = 0; + + for ($z = 0; $z < sizeof($ap_db); $z++) { + if ($ap_db[$z]['name'] == $name && $ap_db[$z]['radio_number'] == $radionum) { + $foundid = $ap_db[$z]['accesspoint_id']; + $ap_db[$z]['seen'] = 1; + continue; + } + } + + if ($foundid == 0) { + $ap_id = dbInsert( + array( + 'device_id' => $device['device_id'], + 'name' => $name, + 'radio_number' => $radionum, + 'type' => $type, + 'mac_addr' => $mac, + 'channel' => $channel, + 'txpow' => $txpow, + 'radioutil' => $radioutil, + 'numasoclients' => $numasoclients, + 'nummonclients' => $nummonclients, + 'numactbssid' => $numactbssid, + 'nummonbssid' => $nummonbssid, + 'interference' => $interference + ), + 'access_points'); + } else { + dbUpdate( + array( + 'mac_addr' => $mac, + 'type' => $type, + 'deleted' => 0, + 'channel' => $channel, + 'txpow' => $txpow, + 'radioutil' => $radioutil, + 'numasoclients' => $numasoclients, + 'nummonclients' => $nummonclients, + 'numactbssid' => $numactbssid, + 'nummonbssid' => $nummonbssid, + 'interference' => $interference + ), + 'access_points', + '`accesspoint_id` = ?', array($foundid)); + } +}//end foreach + +for ($z = 0; $z < sizeof($ap_db); $z++) { + if (!isset($ap_db[$z]['seen']) && $ap_db[$z]['deleted'] == 0) { + dbUpdate(array('deleted' => 1), 'access_points', '`accesspoint_id` = ?', array($ap_db[$z]['accesspoint_id'])); + } +}