ifDescr; $ifIndex = $port->ifIndex; $speed = \LibreNMS\Util\Number::formatSi($port->ifSpeed, 2, 3, 'bps'); $ifalias = $port->getLabel(); if ($port->ifPhysAddress) { $mac = $port->ifPhysAddress; } $color = 'black'; if ($port->ifAdminStatus == 'down') { $status = "Disabled"; } if ($port->ifAdminStatus == 'up' && $port->ifOperStatus != 'up') { $status = "Enabled / Disconnected"; } if ($port->ifAdminStatus == 'up' && $port->ifOperStatus == 'up') { $status = "Enabled / Connected"; } $i = 1; $inf = Rewrite::normalizeIfName($ifname); $bg = '#ffffff'; $show_all = 1; echo "
"; require 'includes/html/print-interface.inc.php'; echo '
'; $pos = strpos(strtolower($ifname), 'vlan'); if ($pos !== false) { $broke = 'yes'; } $pos = strpos(strtolower($ifname), 'loopback'); if ($pos !== false) { $broke = 'yes'; } echo "
"; print_optionbar_start(); $link_array = [ 'page' => 'device', 'device' => $device['device_id'], 'tab' => 'port', 'port' => $port->port_id, ]; $menu_options['graphs'] = 'Graphs'; $menu_options['realtime'] = 'Real time'; // FIXME CONDITIONAL $menu_options['arp'] = 'ARP Table'; $menu_options['fdb'] = 'FDB Table'; $menu_options['events'] = 'Eventlog'; $menu_options['notes'] = 'Notes'; if (dbFetchCell("SELECT COUNT(*) FROM `sensors` WHERE `device_id` = ? AND `entPhysicalIndex` = ? AND entPhysicalIndex_measured = 'ports'", [$device['device_id'], $port->ifIndex])) { $menu_options['sensors'] = 'Health'; } if (PortAdsl::where('port_id', $port->port_id)->exists()) { $menu_options['xdsl'] = 'xDSL'; } elseif (PortVdsl::where('port_id', $port->port_id)->exists()) { $menu_options['xdsl'] = 'xDSL'; } if (DeviceCache::getPrimary()->ports()->where('pagpGroupIfIndex', $port->ifIndex)->exists()) { $menu_options['pagp'] = 'PAgP'; } if (dbFetchCell("SELECT COUNT(*) FROM `ports_vlans` WHERE `port_id` = '" . $port->port_id . "' and `device_id` = '" . $device['device_id'] . "'")) { $menu_options['vlans'] = 'VLANs'; } // Are there any CBQoS components for this device? $component = new LibreNMS\Component(); $options = []; // Re-init array in case it has been declared previously. $options['filter']['type'] = ['=', 'Cisco-CBQOS']; $components = $component->getComponents($device['device_id'], $options); $components = $components[$device['device_id']] ?? []; // We only care about our device id. if (count($components) > 0) { $menu_options['cbqos'] = 'CBQoS'; } $portModel = Port::find($port->port_id); if (LibreNMS\Plugins::countHooks('port_container') || \PluginManager::hasHooks(PortTabHook::class, ['port' => $portModel])) { // Checking if any plugin implements the port_container. If yes, allow to display the menu_option $menu_options['plugins'] = 'Plugins'; } $sep = ''; foreach ($menu_options as $option => $text) { echo $sep; if ($vars['view'] == $option) { echo ""; } echo generate_link($text, $link_array, ['view' => $option]); if ($vars['view'] == $option) { echo ''; } $sep = ' | '; } unset($sep); if (dbFetchCell("SELECT count(*) FROM mac_accounting WHERE port_id = '" . $port->port_id . "'") > '0') { echo generate_link($descr, $link_array, ['view' => 'macaccounting', 'graph' => $type]); echo ' | Mac Accounting : '; if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'bits' && $vars['subview'] == 'graphs') { echo ""; } echo generate_link('Bits', $link_array, ['view' => 'macaccounting', 'subview' => 'graphs', 'graph' => 'bits']); if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'bits' && $vars['subview'] == 'graphs') { echo ''; } echo '('; if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'bits' && $vars['subview'] == 'minigraphs') { echo ""; } echo generate_link('Mini', $link_array, ['view' => 'macaccounting', 'subview' => 'minigraphs', 'graph' => 'bits']); if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'bits' && $vars['subview'] == 'minigraphs') { echo ''; } echo '|'; if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'bits' && $vars['subview'] == 'top10') { echo ""; } echo generate_link('Top10', $link_array, ['view' => 'macaccounting', 'subview' => 'top10', 'graph' => 'bits']); if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'bits' && $vars['subview'] == 'top10') { echo ''; } echo ') | '; if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'pkts' && $vars['subview'] == 'graphs') { echo ""; } echo generate_link('Packets', $link_array, ['view' => 'macaccounting', 'subview' => 'graphs', 'graph' => 'pkts']); if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'pkts' && $vars['subview'] == 'graphs') { echo ''; } echo '('; if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'pkts' && $vars['subview'] == 'minigraphs') { echo ""; } echo generate_link('Mini', $link_array, ['view' => 'macaccounting', 'subview' => 'minigraphs', 'graph' => 'pkts']); if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'pkts' && $vars['subview'] == 'minigraphs') { echo ''; } echo '|'; if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'pkts' && $vars['subview'] == 'top10') { echo ""; } echo generate_link('Top10', $link_array, ['view' => 'macaccounting', 'subview' => 'top10', 'graph' => 'pkts']); if ($vars['view'] == 'macaccounting' && $vars['graph'] == 'pkts' && $vars['subview'] == 'top10') { echo ''; } echo ')'; }//end if if (dbFetchCell("SELECT COUNT(*) FROM juniAtmVp WHERE port_id = '" . $port->port_id . "'") > '0') { // FIXME ATM VPs // FIXME URLs BROKEN echo ' | ATM VPs : '; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'bits') { echo ""; } echo " 'device', 'device' => $device['device_id'], 'tab' => 'port', 'port' => $port->port_id]) . "/junose-atm-vp/bits/'>Bits"; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'bits') { echo ''; } echo ' | '; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'packets') { echo ""; } echo " 'device', 'device' => $device['device_id'], 'tab' => 'port', 'port' => $port->port_id]) . "/junose-atm-vp/packets/'>Packets"; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'bits') { echo ''; } echo ' | '; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'cells') { echo ""; } echo " 'device', 'device' => $device['device_id'], 'tab' => 'port', 'port' => $port->port_id]) . "/junose-atm-vp/cells/'>Cells"; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'bits') { echo ''; } echo ' | '; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'errors') { echo ""; } echo " 'device', 'device' => $device['device_id'], 'tab' => 'port', 'port' => $port->port_id]) . "/junose-atm-vp/errors/'>Errors"; if ($vars['view'] == 'junose-atm-vp' && $vars['graph'] == 'bits') { echo ''; } }//end if if (Auth::user()->hasGlobalAdmin() && \LibreNMS\Config::get('enable_billing') == 1) { $bills = dbFetchRows('SELECT `bill_id` FROM `bill_ports` WHERE `port_id`=?', [$port->port_id]); if (count($bills) === 1) { echo " 'bill', 'bill_id' => $bills[0]['bill_id']]) . "'> View Bill"; } elseif (count($bills) > 1) { echo " 'bills']) . "'> View Bills"; } else { echo " 'bills', 'view' => 'add', 'port' => $port->port_id]) . "'> Create Bill"; } } print_optionbar_end(); echo "
"; require 'includes/html/pages/device/port/' . $vars['view'] . '.inc.php'; echo '
';