mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
fix: Fixed JunOS bgpPeers_cbgp mistakenly removed + better support for mysql strict mode #5531 (#5536)
This commit is contained in:
@@ -97,7 +97,24 @@ if ($config['enable_bgp']) {
|
||||
$astext = get_astext($peer['as']);
|
||||
|
||||
if (dbFetchCell('SELECT COUNT(*) from `bgpPeers` WHERE device_id = ? AND bgpPeerIdentifier = ?', array($device['device_id'], $peer['ip'])) < '1') {
|
||||
$add = dbInsert(array('device_id' => $device['device_id'], 'bgpPeerIdentifier' => $peer['ip'], 'bgpPeerRemoteAs' => $peer['as'], 'context_name' => $device['context_name']), 'bgpPeers');
|
||||
$bgpPeers = array(
|
||||
'device_id' => $device['device_id'],
|
||||
'bgpPeerIdentifier' => $peer['ip'],
|
||||
'bgpPeerRemoteAs' => $peer['as'],
|
||||
'context_name' => $device['context_name'],
|
||||
'astext' => $astext,
|
||||
'bgpPeerState' => 'idle',
|
||||
'bgpPeerAdminStatus' => 'stop',
|
||||
'bgpLocalAddr' => '0.0.0.0',
|
||||
'bgpPeerRemoteAddr' => '0.0.0.0',
|
||||
'bgpPeerInUpdates' => 0,
|
||||
'bgpPeerOutUpdates' => 0,
|
||||
'bgpPeerInTotalMessages' => 0,
|
||||
'bgpPeerOutTotalMessages' => 0,
|
||||
'bgpPeerFsmEstablishedTime' => 0,
|
||||
'bgpPeerInUpdateElapsedTime' => 0,
|
||||
);
|
||||
$add = dbInsert($bgpPeers, 'bgpPeers');
|
||||
if ($config['autodiscovery']['bgp'] === true) {
|
||||
$name = gethostbyaddr($peer['ip']);
|
||||
$remote_device_id = discover_new_device($name, $device, 'BGP');
|
||||
@@ -152,7 +169,7 @@ if ($config['enable_bgp']) {
|
||||
|
||||
if (!isset($j_peerIndexes)) {
|
||||
$j_bgp = snmpwalk_cache_multi_oid($device, 'jnxBgpM2PeerEntry', $jbgp, 'BGP4-V2-MIB-JUNIPER', 'junos');
|
||||
print_r($j_bgp);
|
||||
d_echo($j_bgp);
|
||||
foreach ($j_bgp as $index => $entry) {
|
||||
switch ($entry['jnxBgpM2PeerRemoteAddrType']) {
|
||||
case 'ipv4':
|
||||
@@ -189,9 +206,33 @@ if ($config['enable_bgp']) {
|
||||
foreach ($j_afisafi[$j_peerIndexes[$peer['ip']]] as $afisafi) {
|
||||
list ($afi,$safi) = explode('.', $afisafi);
|
||||
$safi = $safis[$safi];
|
||||
$af_list[$afi][$safi] = 1;
|
||||
$af_list[$peer['ip']][$afi][$safi] = 1;
|
||||
if (dbFetchCell('SELECT COUNT(*) from `bgpPeers_cbgp` WHERE device_id = ? AND bgpPeerIdentifier = ? AND afi=? AND safi=?', array($device['device_id'], $peer['ip'], $afi, $safi)) == 0) {
|
||||
dbInsert(array('device_id' => $device['device_id'], 'bgpPeerIdentifier' => $peer['ip'], 'afi' => $afi, 'safi' => $safi), 'bgpPeers_cbgp');
|
||||
$cbgp = array(
|
||||
'device_id' => $device['device_id'],
|
||||
'bgpPeerIdentifier' => $peer['ip'],
|
||||
'afi' => $afi,
|
||||
'safi' => $safi,
|
||||
'AcceptedPrefixes' => 0,
|
||||
'DeniedPrefixes' => 0,
|
||||
'PrefixAdminLimit' => 0,
|
||||
'PrefixThreshold' => 0,
|
||||
'PrefixClearThreshold' => 0,
|
||||
'AdvertisedPrefixes' => 0,
|
||||
'SuppressedPrefixes' => 0,
|
||||
'WithdrawnPrefixes' => 0,
|
||||
'AcceptedPrefixes_delta' => 0,
|
||||
'AcceptedPrefixes_prev' => 0,
|
||||
'DeniedPrefixes_delta' => 0,
|
||||
'DeniedPrefixes_prev' => 0,
|
||||
'AdvertisedPrefixes_delta' => 0,
|
||||
'AdvertisedPrefixes_prev' => 0,
|
||||
'SuppressedPrefixes_delta' => 0,
|
||||
'SuppressedPrefixes_prev' => 0,
|
||||
'WithdrawnPrefixes_delta' => 0,
|
||||
'WithdrawnPrefixes_prev' => 0,
|
||||
);
|
||||
dbInsert($cbgp, 'bgpPeers_cbgp');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -200,7 +241,7 @@ if ($config['enable_bgp']) {
|
||||
foreach (dbFetchRows($af_query) as $entry) {
|
||||
$afi = $entry['afi'];
|
||||
$safi = $entry['safi'];
|
||||
if (!$af_list[$afi][$safi] || !$af_list[$entry['bgpPeerIdentifier']][$afi][$safi]) {
|
||||
if (!$af_list[$entry['bgpPeerIdentifier']][$afi][$safi]) {
|
||||
dbDelete('bgpPeers_cbgp', '`device_id` = ? AND `bgpPeerIdentifier` = ? AND afi=? AND safi=?', array($device['device_id'], $peer['ip'], $afi, $safi));
|
||||
}
|
||||
}
|
||||
|
@@ -281,14 +281,14 @@ if ($config['enable_bgp']) {
|
||||
|
||||
// FIXME THESE FIELDS DO NOT EXIST IN THE DATABASE!
|
||||
$update = 'UPDATE bgpPeers_cbgp SET';
|
||||
$peer['c_update']['AcceptedPrefixes'] = $cbgpPeerAcceptedPrefixes;
|
||||
$peer['c_update']['DeniedPrefixes'] = $cbgpPeerDeniedPrefixes;
|
||||
$peer['c_update']['PrefixAdminLimit'] = $cbgpPeerAdminLimit;
|
||||
$peer['c_update']['PrefixThreshold'] = $cbgpPeerPrefixThreshold;
|
||||
$peer['c_update']['PrefixClearThreshold'] = $cbgpPeerPrefixClearThreshold;
|
||||
$peer['c_update']['AdvertisedPrefixes'] = $cbgpPeerAdvertisedPrefixes;
|
||||
$peer['c_update']['SuppressedPrefixes'] = $cbgpPeerSuppressedPrefixes;
|
||||
$peer['c_update']['WithdrawnPrefixes'] = $cbgpPeerWithdrawnPrefixes;
|
||||
$peer['c_update']['AcceptedPrefixes'] = set_numeric($cbgpPeerAcceptedPrefixes);
|
||||
$peer['c_update']['DeniedPrefixes'] = set_numeric($cbgpPeerDeniedPrefixes);
|
||||
$peer['c_update']['PrefixAdminLimit'] = set_numeric($cbgpPeerAdminLimit);
|
||||
$peer['c_update']['PrefixThreshold'] = set_numeric($cbgpPeerPrefixThreshold);
|
||||
$peer['c_update']['PrefixClearThreshold'] = set_numeric($cbgpPeerPrefixClearThreshold);
|
||||
$peer['c_update']['AdvertisedPrefixes'] = set_numeric($cbgpPeerAdvertisedPrefixes);
|
||||
$peer['c_update']['SuppressedPrefixes'] = set_numeric($cbgpPeerSuppressedPrefixes);
|
||||
$peer['c_update']['WithdrawnPrefixes'] = set_numeric($cbgpPeerWithdrawnPrefixes);
|
||||
|
||||
$oids = array(
|
||||
'AcceptedPrefixes',
|
||||
@@ -299,8 +299,8 @@ if ($config['enable_bgp']) {
|
||||
);
|
||||
|
||||
foreach ($oids as $oid) {
|
||||
$peer['c_update'][$oid.'_delta'] = $peer['c_update'][$oid] - $peer_afi[$oid];
|
||||
$peer['c_update'][$oid.'_prev'] = $peer_afi[$oid];
|
||||
$peer['c_update'][$oid.'_delta'] = set_numeric($peer['c_update'][$oid] - $peer_afi[$oid]);
|
||||
$peer['c_update'][$oid.'_prev'] = set_numeric($peer_afi[$oid]);
|
||||
}
|
||||
|
||||
dbUpdate($peer['c_update'], 'bgpPeers_cbgp', '`device_id` = ? AND bgpPeerIdentifier = ? AND afi = ? AND safi = ?', array($device['device_id'], $peer['bgpPeerIdentifier'], $afi, $safi));
|
||||
|
Reference in New Issue
Block a user