mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Allow more compatibility in STP port discovery/polling (#13109)
* allow more variety in STP port discovery/polling * style
This commit is contained in:
@@ -126,12 +126,12 @@ if ($stpprotocol == 'ieee8021d' || $stpprotocol == 'unknown') {
|
||||
// set port binding
|
||||
$stp_port['port_id'] = dbFetchCell('SELECT port_id FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?', [$device['device_id'], $stp_raw[$port]['dot1dStpPort']]);
|
||||
|
||||
$dr = str_replace([' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedRoot']));
|
||||
$dr = substr($dr, -12); //remove first two octets
|
||||
$dr = str_replace(['.', ' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedRoot']));
|
||||
$dr = substr($dr, -12); //keep the last 12 chars (the mac address)
|
||||
$stp_port['designatedRoot'] = $dr;
|
||||
|
||||
$db = str_replace([' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedBridge']));
|
||||
$db = substr($db, -12); //remove first two octets
|
||||
$db = str_replace(['.', ' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedBridge']));
|
||||
$db = substr($db, -12); //keep the last 12 chars (the mac address)
|
||||
$stp_port['designatedBridge'] = $db;
|
||||
|
||||
if ($device['os'] == 'pbn') {
|
||||
@@ -145,9 +145,15 @@ if ($stpprotocol == 'ieee8021d' || $stpprotocol == 'unknown') {
|
||||
$stp_port['designatedPort'] = $dp;
|
||||
}
|
||||
} else {
|
||||
// Port saved in format priority+port (ieee 802.1d-1998: clause 8.5.5.1)
|
||||
$dp = substr($stp_raw[$port]['dot1dStpPortDesignatedPort'], -2); //discard the first octet (priority part)
|
||||
$stp_port['designatedPort'] = hexdec($dp);
|
||||
if (preg_match('/-/', $stp_raw[$port]['dot1dStpPortDesignatedPort'])) {
|
||||
// Syntax with "priority" dash "portID" like so : 32768-54, both in decimal
|
||||
$dp = explode('-', $stp_raw[$port]['dot1dStpPortDesignatedPort'])[1];
|
||||
$stp_port['designatedPort'] = $dp;
|
||||
} else {
|
||||
// Port saved in format priority+port (ieee 802.1d-1998: clause 8.5.5.1)
|
||||
$dp = substr($stp_raw[$port]['dot1dStpPortDesignatedPort'], -2); //discard the first octet (priority part)
|
||||
$stp_port['designatedPort'] = hexdec($dp);
|
||||
}
|
||||
}
|
||||
|
||||
d_echo($stp_port);
|
||||
|
@@ -136,11 +136,11 @@ if ($stpprotocol == 'ieee8021d' || $stpprotocol == 'unknown') {
|
||||
// set port binding
|
||||
$stp_port['port_id'] = dbFetchCell('SELECT port_id FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?', [$device['device_id'], $stp_raw[$port]['dot1dStpPort']]);
|
||||
|
||||
$dr = str_replace([' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedRoot']));
|
||||
$dr = str_replace(['.', ' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedRoot']));
|
||||
$dr = substr($dr, -12); //remove first two octets
|
||||
$stp_port['designatedRoot'] = $dr;
|
||||
|
||||
$db = str_replace([' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedBridge']));
|
||||
$db = str_replace(['.', ' ', ':', '-'], '', strtolower($stp_raw[$port]['dot1dStpPortDesignatedBridge']));
|
||||
$db = substr($db, -12); //remove first two octets
|
||||
$stp_port['designatedBridge'] = $db;
|
||||
|
||||
@@ -155,13 +155,17 @@ if ($stpprotocol == 'ieee8021d' || $stpprotocol == 'unknown') {
|
||||
$stp_port['designatedPort'] = $dp;
|
||||
}
|
||||
} else {
|
||||
// Port saved in format priority+port (ieee 802.1d-1998: clause 8.5.5.1)
|
||||
$dp = substr($stp_raw[$port]['dot1dStpPortDesignatedPort'], -2); //discard the first octet (priority part)
|
||||
$stp_port['designatedPort'] = hexdec($dp);
|
||||
if (preg_match('/-/', $stp_raw[$port]['dot1dStpPortDesignatedPort'])) {
|
||||
// Syntax with "priority" dash "portID" like so : 32768-54, both in decimal
|
||||
$dp = explode('-', $stp_raw[$port]['dot1dStpPortDesignatedPort'])[1];
|
||||
$stp_port['designatedPort'] = $dp;
|
||||
} else {
|
||||
// Port saved in format priority+port (ieee 802.1d-1998: clause 8.5.5.1)
|
||||
$dp = substr($stp_raw[$port]['dot1dStpPortDesignatedPort'], -2); //discard the first octet (priority part)
|
||||
$stp_port['designatedPort'] = hexdec($dp);
|
||||
}
|
||||
}
|
||||
|
||||
//d_echo($stp_port);
|
||||
|
||||
// Update db
|
||||
dbUpdate($stp_port, 'ports_stp', '`device_id` = ? AND `port_id` = ?', [$device['device_id'], $stp_port['port_id']]);
|
||||
echo '.';
|
||||
|
Reference in New Issue
Block a user