From a3cd53e0eeefe0a9fd1fc550349fac58d60f7315 Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Wed, 27 Jan 2010 21:51:59 +0000 Subject: [PATCH] fix some errors displaying peer hostname and link on /device/*/bgp/ page. split ipv4/ipv6 sql into 2 queries. git-svn-id: http://www.observium.org/svn/observer/trunk@732 61d68cd4-352d-0410-923a-c4978735b2b8 --- html/pages/device/bgp.inc.php | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/html/pages/device/bgp.inc.php b/html/pages/device/bgp.inc.php index 338701968..c6f3465f8 100644 --- a/html/pages/device/bgp.inc.php +++ b/html/pages/device/bgp.inc.php @@ -31,13 +31,31 @@ print_optionbar_end(); if($peer['bgpPeerRemoteAs'] == $device['bgpLocalAs']) { $peer_type = "iBGP"; } else { $peer_type = "eBGP"; } - $query = "SELECT * FROM ipv4_addresses AS A, ipv6_addresses AS S, interfaces AS I, devices AS D WHERE "; + $query = "SELECT * FROM ipv4_addresses AS A, interfaces AS I, devices AS D WHERE "; $query .= "(A.ipv4_address = '".$peer['bgpPeerIdentifier']."' AND I.interface_id = A.interface_id)"; - $query .= " OR (S.ipv6_compressed = '".$peer['bgpPeerIdentifier']."' AND I.interface_id = S.interface_id)"; $query .= " AND D.device_id = I.device_id"; - $peerhost = mysql_fetch_array(mysql_query($query)); + $ipv4_host = mysql_fetch_array(mysql_query($query)); - if($peerhost) { $peername = generatedevicelink($peerhost); } else { $peername = '' . gethostbyaddr($peer['bgpPeerIdentifier']) . ''; if ($peername == ''.$peer['bgpPeerIdentifier'].'') $peername = "";} + $query = "SELECT * FROM ipv6_addresses AS A, interfaces AS I, devices AS D WHERE "; + $query .= "(A.ipv6_address = '".$peer['bgpPeerIdentifier']."' AND I.interface_id = A.interface_id)"; + $query .= " AND D.device_id = I.device_id"; + $ipv6_host = mysql_fetch_array(mysql_query($query)); + + if($ipv4_host) { + $peerhost = $ipv4_host; + } elseif($ipv6_host) { + $peerhost = $ipv6_host; + } + if($peerhost) { + $peername = generatedevicelink($peerhost); + } else { + $peername = gethostbyaddr($peer['bgpPeerIdentifier']); + if($peername == $peer['bgpPeerIdentifier']) { + unset ($peername); + } else { + $peername = "".$peername.""; + } + } $af_query = mysql_query("SELECT * FROM `bgpPeers_cbgp` WHERE `device_id` = '".$device['device_id']."' AND bgpPeerIdentifier = '".$peer['bgpPeerIdentifier']."'"); unset($peer_af); @@ -48,6 +66,7 @@ print_optionbar_end(); $sep = "
"; $valid_afi_safi[$afi][$safi] = 1; ## Build a list of valid AFI/SAFI for this peer } + unset($sep); echo(" $i