'device',
'device' => $device['device_id'],
'tab' => 'ports',
);
print_optionbar_start();
$menu_options['basic'] = 'Basic';
$menu_options['details'] = 'Details';
$menu_options['arp'] = 'ARP Table';
if (dbFetchCell("SELECT * FROM links AS L, ports AS I WHERE I.device_id = '".$device['device_id']."' AND I.port_id = L.local_port_id")) {
$menu_options['neighbours'] = 'Neighbours';
}
if (dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE `ifType` = 'adsl'")) {
$menu_options['adsl'] = 'ADSL';
}
$sep = '';
foreach ($menu_options as $option => $text) {
echo $sep;
if ($vars['view'] == $option) {
echo "';
}
$sep = ' | ';
}
unset($sep);
echo ' | Graphs: ';
$graph_types = array(
'bits' => 'Bits',
'upkts' => 'Unicast Packets',
'nupkts' => 'Non-Unicast Packets',
'errors' => 'Errors',
'etherlike' => 'Etherlike',
);
foreach ($graph_types as $type => $descr) {
echo "$type_sep";
if ($vars['graph'] == $type && $vars['view'] == 'graphs') {
echo "';
}
echo ' (';
if ($vars['graph'] == $type && $vars['view'] == 'minigraphs') {
echo "';
}
echo ')';
$type_sep = ' | ';
}//end foreach
print_optionbar_end();
if ($vars['view'] == 'minigraphs') {
$timeperiods = array(
'-1day',
'-1week',
'-1month',
'-1year',
);
$from = '-1day';
echo "
";
unset($seperator);
// FIXME - FIX THIS. UGLY.
foreach (dbFetchRows('select * from ports WHERE device_id = ? ORDER BY ifIndex', array($device['device_id'])) as $port) {
echo "
\
'.$port['ifAlias']." \

\
', CENTER, LEFT, FGCOLOR, '#e5e5e5', BGCOLOR, '#e5e5e5', WIDTH, 400, HEIGHT, 150);\" onmouseout=\"return nd();\" >"."
".truncate(short_port_descr($port['ifAlias']), 32, '').'
';
}
echo '';
}
else if ($vars['view'] == 'arp' || $vars['view'] == 'adsl' || $vars['view'] == 'neighbours') {
include 'ports/'.$vars['view'].'.inc.php';
}
else {
if ($vars['view'] == 'details') {
$port_details = 1;
}
echo "";
$i = '1';
global $port_cache, $port_index_cache;
$ports = dbFetchRows("SELECT * FROM `ports` WHERE `device_id` = ? AND `deleted` = '0' ORDER BY `ifIndex` ASC", array($device['device_id']));
// As we've dragged the whole database, lets pre-populate our caches :)
// FIXME - we should probably split the fetching of link/stack/etc into functions and cache them here too to cut down on single row queries.
foreach ($ports as $port) {
$port_cache[$port['port_id']] = $port;
$port_index_cache[$port['device_id']][$port['ifIndex']] = $port;
}
foreach ($ports as $port) {
if ($config['memcached']['enable'] === true) {
$state = $memcache->get('port-'.$port['port_id'].'-state');
d_echo($state);
if (is_array($state)) {
$port = array_merge($port, $state);
}
unset($state);
}
include 'includes/print-interface.inc.php';
$i++;
}
echo '
';
}//end if
$pagetitle[] = 'Ports';