. * * @package LibreNMS * @link http://librenms.org * @copyright 2017 Tony Murray * @author Tony Murray */ namespace LibreNMS\OS; use LibreNMS\Device\WirelessSensor; use LibreNMS\Interfaces\Discovery\ProcessorDiscovery; use LibreNMS\Interfaces\Discovery\Sensors\WirelessApCountDiscovery; use LibreNMS\Interfaces\Discovery\Sensors\WirelessClientsDiscovery; use LibreNMS\OS; use LibreNMS\OS\Shared\Cisco; class Ciscowlc extends Cisco implements WirelessClientsDiscovery, WirelessApCountDiscovery { /** * Discover wireless client counts. Type is clients. * Returns an array of LibreNMS\Device\Sensor objects that have been discovered * * @return array Sensors */ public function discoverWirelessClients() { $ssids = $this->getCacheByIndex('bsnDot11EssSsid', 'AIRESPACE-WIRELESS-MIB'); $counts = $this->getCacheByIndex('bsnDot11EssNumberOfMobileStations', 'AIRESPACE-WIRELESS-MIB'); $sensors = array(); $total_oids = array(); $total = 0; foreach ($counts as $index => $count) { $oid = '.1.3.6.1.4.1.14179.2.1.1.1.38.' . $index; $total_oids[] = $oid; $total += $count; $sensors[] = new WirelessSensor( 'clients', $this->getDeviceId(), $oid, 'ciscowlc-ssid', $index, 'SSID: ' . $ssids[$index], $count ); } if (!empty($counts)) { $sensors[] = new WirelessSensor( 'clients', $this->getDeviceId(), $total_oids, 'ciscowlc', 0, 'Clients: Total', $total ); } return $sensors; } /** * Discover wireless capacity. This is a percent. Type is capacity. * Returns an array of LibreNMS\Device\Sensor objects that have been discovered * * @return array Sensors */ public function discoverWirelessApCount() { $oids = array( 'CISCO-LWAPP-SYS-MIB::clsSysApConnectCount.0', 'AIRESPACE-SWITCHING-MIB::agentInventoryMaxNumberOfAPsSupported.0', ); $data = snmp_get_multi($this->getDevice(), $oids); if (isset($data[0]['clsSysApConnectCount'])) { return array( new WirelessSensor( 'ap-count', $this->getDeviceId(), '.1.3.6.1.4.1.9.9.618.1.8.4.0', 'ciscowlc', 0, 'Connected APs', $data[0]['clsSysApConnectCount'], 1, 1, 'sum', null, $data[0]['agentInventoryMaxNumberOfAPsSupported'], 0 ), ); } return array(); } }