. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 KanREN, Inc. * @author Heath Barnhart */ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; use LibreNMS\Snmptrap\Handlers\JnxDomLaneAlarmId; use Log; class JnxDomLaneAlarmSet implements SnmptrapHandler { /** * Handle snmptrap. * Data is pre-parsed and delivered as a Trap. * * @param Device $device * @param Trap $trap * @return void */ public function handle(Device $device, Trap $trap) { $currentAlarm = $trap->getOidData($trap->findOid('JUNIPER-DOM-MIB::jnxDomCurrentLaneAlarms')); $lane = $trap->getOidData($trap->findOid('JUNIPER-DOM-MIB::jnxDomLaneIndex')); $alarmList = JnxDomLaneAlarmId::getLaneAlarms($currentAlarm); $ifIndex = substr(strrchr($trap->findOid('IF-MIB::ifDescr'), '.'), 1); $port = $device->ports()->where('ifIndex', $ifIndex)->first(); if (!$port) { Log::warning("Snmptrap JnxDomLaneAlarmSet: Could not find port at ifIndex $port->ifIndex for device: " . $device->hostname); return; } Log::event("DOM lane alarm on interface $port->ifDescr lane $lane. Current alarm(s): $alarmList", $device->device_id, 'trap', 5); } }