From aad110102f774dd236ddc659b69ef2fac60fa3c9 Mon Sep 17 00:00:00 2001 From: Joe Clarke Date: Fri, 19 Jul 2024 13:41:16 -0400 Subject: [PATCH] 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 --- includes/polling/bgp-peers.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/polling/bgp-peers.inc.php b/includes/polling/bgp-peers.inc.php index e59707d839..6252614f94 100644 --- a/includes/polling/bgp-peers.inc.php +++ b/includes/polling/bgp-peers.inc.php @@ -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'],