. * * The BGPBackwardTransition Event is generated * when the BGP FSM moves from a higher numbered * state to a lower numbered state. * * @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\Util\IP; use Log; class JnxBgpM2BackwardTransition 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) { $peerState = $trap->getOidData($trap->findOid('BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerState')); $peerAddr = IP::fromHexString($trap->getOidData($trap->findOid('BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.'))); $bgpPeer = $device->bgppeers()->where('bgpPeerIdentifier', $peerAddr)->first(); if (!$bgpPeer) { Log::error('Unknown bgp peer handling bgpEstablished trap: ' . $peerAddr); return; } $bgpPeer->bgpPeerState = $peerState; if ($bgpPeer->isDirty('bgpPeerState')) { Log::event("BGP Peer $peerAddr is now in the $peerState state", $device->device_id, 'trap', 5); } $bgpPeer->save(); } }