fix: Fixed JunOS bgpPeers_cbgp mistakenly removed + better support for mysql strict mode #5531 (#5536)

This commit is contained in:
Neil Lathwood
2017-01-22 08:25:53 +00:00
committed by GitHub
parent b644c5cc73
commit 53df1d0b2c
2 changed files with 56 additions and 15 deletions

View File

@@ -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));
}
}

View File

@@ -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));