. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; use Log; class BgpEstablished 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) { $state_oid = $trap->findOid('BGP4-MIB::bgpPeerState'); $bgpPeerIp = substr($state_oid, 23); $bgpPeer = $device->bgppeers()->where('bgpPeerIdentifier', $bgpPeerIp)->first(); if (!$bgpPeer) { Log::error('Unknown bgp peer handling bgpEstablished trap: ' . $bgpPeerIp); return; } $bgpPeer->bgpPeerState = $trap->getOidData($state_oid); if ($bgpPeer->isDirty('bgpPeerState')) { Log::event('SNMP Trap: BGP Up ' . $bgpPeer->bgpPeerIdentifier . ' ' . get_astext($bgpPeer->bgpPeerRemoteAs) . ' is now ' . $bgpPeer->bgpPeerState, $device->device_id, 'bgpPeer', 1, $bgpPeerIp); } $bgpPeer->save(); } }