BGP API: Allow to filter by local and remote peer address. (#11340)

This commit is contained in:
Mathieu Poussin
2020-04-05 17:16:16 +02:00
committed by GitHub
parent c379fee161
commit 29748fe306
2 changed files with 14 additions and 7 deletions

View File

@@ -500,6 +500,8 @@ function list_bgp(\Illuminate\Http\Request $request)
$hostname = $request->get('hostname');
$asn = $request->get('asn');
$remote_asn = $request->get('remote_asn');
$local_address = $request->get('local_address');
$remote_address = $request->get('remote_address');
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
if (is_numeric($device_id)) {
$sql .= ' AND `devices`.`device_id` = ?';
@@ -513,6 +515,14 @@ function list_bgp(\Illuminate\Http\Request $request)
$sql .= ' AND `bgpPeers`.`bgpPeerRemoteAs` = ?';
$sql_params[] = $remote_asn;
}
if (!empty($local_address)) {
$sql .= ' AND `bgpPeers`.`bgpLocalAddr` = ?';
$sql_params[] = $local_address;
}
if (!empty($remote_address)) {
$sql .= ' AND `bgpPeers`.`bgpPeerIdentifier` = ?';
$sql_params[] = $remote_address;
}
$bgp_sessions = dbFetchRows("SELECT `bgpPeers`.* FROM `bgpPeers` LEFT JOIN `devices` ON `bgpPeers`.`device_id` = `devices`.`device_id` WHERE `bgpPeerState` IS NOT NULL AND `bgpPeerState` != '' $sql", $sql_params);
$total_bgp_sessions = count($bgp_sessions);