Improve LinkUp and LinkDown trap handling incomplete traps (#14385)

* fix LinkUp and LinkDown trap parsing
These traps do not always include 'ifAdminStatus' and 'ifOperStatus' from IF-MIB,
which causes the fields to become NULL when traps are received.

Add checks that values exist, and add default value for ifOperStatus.

* Fix styleci complaint

* Update LinkDown.php

* Update LinkUp.php

* Update LinkUp.php

Co-authored-by: Tony Murray <murraytony@gmail.com>
This commit is contained in:
Tuomas Riihimäki 2022-10-12 17:17:33 +03:00 committed by GitHub
parent 4efbb83d9b
commit 5255da80ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 4 deletions

View File

@ -52,9 +52,12 @@ class LinkDown implements SnmptrapHandler
return;
}
$port->ifOperStatus = $trap->getOidData("IF-MIB::ifOperStatus.$ifIndex");
$port->ifAdminStatus = $trap->getOidData("IF-MIB::ifAdminStatus.$ifIndex");
$port->ifOperStatus = $trap->getOidData("IF-MIB::ifOperStatus.$ifIndex") ?: 'down';
$trapAdminStatus = $trap->getOidData("IF-MIB::ifAdminStatus.$ifIndex");
if ($trapAdminStatus) {
$port->ifAdminStatus = $trapAdminStatus;
}
Log::event("SNMP Trap: linkDown $port->ifAdminStatus/$port->ifOperStatus " . $port->ifDescr, $device->device_id, 'interface', 5, $port->port_id);
if ($port->isDirty('ifAdminStatus')) {

View File

@ -52,8 +52,8 @@ class LinkUp implements SnmptrapHandler
return;
}
$port->ifOperStatus = $trap->getOidData("IF-MIB::ifAdminStatus.$ifIndex");
$port->ifAdminStatus = $trap->getOidData("IF-MIB::ifOperStatus.$ifIndex");
$port->ifOperStatus = $trap->getOidData("IF-MIB::ifOperStatus.$ifIndex") ?: 'up';
$port->ifAdminStatus = $trap->getOidData("IF-MIB::ifAdminStatus.$ifIndex") ?: 'up'; // If we receive LinkUp trap, we can safely assume that the ifAdminStatus is also up.
Log::event("SNMP Trap: linkUp $port->ifAdminStatus/$port->ifOperStatus " . $port->ifDescr, $device->device_id, 'interface', 1, $port->port_id);