Fix error from MikroTik routers when updating BGP peer info (#16224)

* Create a case for routeros.

RouterOS doesn't support the bgpPeerInUpdateElapsedTime object, so when
LibreNMS does to insert a peer update into the database from a MikroTik
router, you see the following error:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column `librenms`.`bgpPeers`.`bgpPeerInUpdateElapsedTime` at row 2 (Connection: mysql, SQL: UPDATE `bgpPeers` set `bgpPeerAdminStatus`=start,`bgpPeerInUpdateElapsedTime`=...

To fix this, special-case routeros and note that the object is not yet
supported.

* Use spaces, not tabs.

* Use set_numeric() to ensure bgpPeerInUpdateElapsedTime is a number.

---------

Co-authored-by: Joe Clarke <jclarke@cisco.com>
This commit is contained in:
Joe Clarke
2024-07-19 13:41:16 -04:00
committed by GitHub
parent 23965cee49
commit aad110102f
+1
View File
@@ -512,6 +512,7 @@ if (! empty($peers)) {
$peer_data['bgpPeerOutUpdates'] = set_numeric($peer_data['bgpPeerOutUpdates']);
$peer_data['bgpPeerInTotalMessages'] = set_numeric($peer_data['bgpPeerInTotalMessages']);
$peer_data['bgpPeerOutTotalMessages'] = set_numeric($peer_data['bgpPeerOutTotalMessages']);
$peer_data['bgpPeerInUpdateElapsedTime'] = set_numeric($peer_data['bgpPeerInUpdateElapsedTime']);
$fields = [
'bgpPeerOutUpdates' => $peer_data['bgpPeerOutUpdates'],