* @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited * */ register_html_title("OSPF"); $navbar = array(); $navbar['brand'] = "OSPF"; $navbar['class'] = "navbar-narrow"; $ospf_instances = dbFetchRows("SELECT * FROM `ospf_instances` WHERE `device_id` = ?", array($device['device_id'])); echo generate_box_open(); echo ''; // Loop Instances (There can only ever really be once instance at the moment, thanks to douchebags who decided we should use undiscoverable context names instead of just making tables.) foreach ($ospf_instances as $instance) { $area_count = dbFetchCell("SELECT COUNT(*) FROM `ospf_areas` WHERE `device_id` = ?", array($device['device_id'])); $port_count = dbFetchCell("SELECT COUNT(*) FROM `ospf_ports` WHERE `device_id` = ?", array($device['device_id'])); $port_count_enabled = dbFetchCell("SELECT COUNT(*) FROM `ospf_ports` WHERE `ospfIfAdminStat` = 'enabled' AND `device_id` = ?", array($device['device_id'])); $nbr_count = dbFetchCell("SELECT COUNT(*) FROM `ospf_nbrs` WHERE `device_id` = ?", array($device['device_id'])); $query = "SELECT * FROM `ipv4_addresses` WHERE `ipv4_address` = ? AND `device_id` = ?"; //$query .= "(A.ipv4_address = ? AND I.port_id = A.port_id)"; //$query .= " AND I.device_id = ?"; $ipv4_host = dbFetchRow($query, array($peer['bgpPeerIdentifier'], $device['device_id'])); if ($instance['ospfAdminStat'] == "enabled") { $enabled = 'enabled'; $row_class = 'up'; } else { $enabled = 'disabled'; $row_class = "disabled"; } if ($instance['ospfAreaBdrRtrStatus'] == "true") { $abr = 'yes'; } else { $abr = 'no'; } if ($instance['ospfASBdrRtrStatus'] == "true") { $asbr = 'yes'; } else { $asbr = 'no'; } echo(''); echo(''); echo(' '); echo(' '); echo(' '); echo(' '); echo(' '); echo(' '); echo(' '); echo(' '); echo(''); echo '
Router IdStatusABRASBRAreasPortsNeighbours
'.$instance['ospfRouterId'] . '' . $enabled . '' . $abr . '' . $asbr . '' . $area_count . '' . $port_count . '('.$port_count_enabled.')' . $nbr_count . '
'; echo generate_box_close(); /// Global Areas Table /// FIXME -- humanize_ospf_area() echo generate_box_open(array('title' => 'Areas')); echo(''); echo(''); /// Loop Areas foreach (dbFetchRows("SELECT * FROM `ospf_areas` WHERE `device_id` = ?", array($device['device_id'])) as $area) { $area_port_count = dbFetchCell("SELECT COUNT(*) FROM `ospf_ports` WHERE `device_id` = ? AND `ospfIfAreaId` = ?", array($device['device_id'], $area['ospfAreaId'])); $area_port_count_enabled = dbFetchCell("SELECT COUNT(*) FROM `ospf_ports` WHERE `ospfIfAdminStat` = 'enabled' AND `device_id` = ? AND `ospfIfAreaId` = ?", array($device['device_id'], $area['ospfAreaId'])); echo(''); echo(' '); echo(' '); echo(' '); echo ' '; echo ' '; echo ' '; echo ' '; echo(' '); echo(''); echo(''); echo('
Area IdStatusAuth TypeAS ExternalArea LSAsArea SummaryPorts
'.$area['ospfAreaId'] . '' . $enabled . '' . $area['ospfAuthType'] . '' . $area['ospfImportAsExtern'] . '' . $area['ospfAreaLsaCount'] . '' . $area['ospfAreaSummary'] . '' . $area_port_count . '('.$area_port_count_enabled.')
'); /// Per-Area Ports Table /// FIXME -- humanize_ospf_port() echo generate_box_open(); echo(''); echo(''); ///# Loop Ports $p_sql = "SELECT * FROM `ospf_ports` AS O, `ports` AS P WHERE O.`ospfIfAdminStat` = 'enabled' AND O.`device_id` = ? AND O.`ospfIfAreaId` = ? AND P.port_id = O.port_id"; foreach (dbFetchRows($p_sql, array($device['device_id'], $area['ospfAreaId'])) as $ospfport) { if ($ospfport['ospfIfAdminStat'] == "enabled") { $port_enabled = 'enabled'; $port_row_class = 'up'; } else { $port_enabled = 'disabled'; $port_row_class = 'disabled'; } echo(''); echo(' '); echo(' '); echo(' '); echo(' '); echo(' '); echo(''); $i_p++; } // End loop Ports echo('
PortStatusPort TypePort State
'. generate_port_link($ospfport) . '' . $port_enabled . '' . $ospfport['ospfIfType'] . '' . $ospfport['ospfIfState'] . '
'); echo generate_box_close(); } // End loop areas echo '
'; echo generate_box_close(); /// Global Neighbour Table /// FIXME -- humanize_ospf_neighbour() echo generate_box_open(array('title' => 'Neighbours')); echo ''; echo ''; // Loop Neigbours foreach (dbFetchRows("SELECT * FROM `ospf_nbrs` WHERE `device_id` = ?", array($device['device_id'])) as $nbr) { $host = dbFetchRow("SELECT * FROM ipv4_addresses AS A, ports AS I, devices AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id", array($nbr['ospfNbrRtrId'])); if (is_array($host)) { $rtr_id = generate_device_link($host); } else { $rtr_id = "unknown"; } echo(''); echo(' '); echo(' '); echo(' '); echo(' '); echo(' '); echo(''); } echo('
Router IdDeviceIP AddressStatus
' . $nbr['ospfNbrRtrId'] . '' . $rtr_id . '' . $nbr['ospfNbrIpAddr'] . ''); switch ($nbr['ospfNbrState']) { case 'full': echo(''.$nbr['ospfNbrState'].''); break; case 'down': echo(''.$nbr['ospfNbrState'].''); break; default: echo(''.$nbr['ospfNbrState'].''); break; } echo('
'); echo generate_box_close(); } // End loop instances // EOF