= '5') {
if (!isset($_GET['optb'])) {
$_GET['optb'] = 'all';
}
if (!isset($_GET['optc'])) {
$_GET['optc'] = 'basic';
}
print_optionbar_start();
echo 'VRF » ';
if ($_GET['opta'] == 'vrf' && $_GET['optb'] == 'all') {
echo "';
}
echo ' | ';
if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'basic') {
echo "';
}
echo ' | ';
if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'details') {
echo "';
}
echo ' | Graphs: ( ';
if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'bits') {
echo "';
}
echo ' | ';
if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'upkts') {
echo "';
}
echo ' | ';
if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'nupkts') {
echo "';
}
echo ' | ';
if ($_GET['opta'] == 'vrf' && $_GET['optc'] == 'errors') {
echo "';
}
echo ' )';
print_optionbar_end();
if ($_GET['optb'] == 'all') {
// Pre-Cache in arrays
// That's heavier on RAM, but much faster on CPU (1:40)
// Specifying the fields reduces a lot the RAM used (1:4) .
$vrf_fields = 'vrf_id, mplsVpnVrfRouteDistinguisher, mplsVpnVrfDescription, vrf_name';
$dev_fields = 'D.device_id as device_id, hostname, os, hardware, version, features, location, status, `ignore`, disabled';
$port_fields = 'port_id, ifvrf, device_id, ifDescr, ifAlias, ifName';
foreach (dbFetchRows("SELECT $vrf_fields, $dev_fields FROM `vrfs` AS V, `devices` AS D WHERE D.device_id = V.device_id") as $vrf_device) {
if (empty($vrf_devices[$vrf_device['mplsVpnVrfRouteDistinguisher']])) {
$vrf_devices[$vrf_device['mplsVpnVrfRouteDistinguisher']][0] = $vrf_device;
}
else {
array_push($vrf_devices[$vrf_device['mplsVpnVrfRouteDistinguisher']], $vrf_device);
}
}
foreach (dbFetchRows("SELECT $port_fields FROM `ports` WHERE ifVrf<>0") as $port) {
if (empty($ports[$port['ifvrf']][$port['device_id']])) {
$ports[$port['ifvrf']][$port['device_id']][0] = $port;
}
else {
array_push($ports[$port['ifvrf']][$port['device_id']], $port);
}
}
echo "
";
$i = '1';
foreach (dbFetchRows('SELECT * FROM `vrfs` GROUP BY `mplsVpnVrfRouteDistinguisher`') as $vrf) {
if (($i % 2)) {
$bg_colour = $list_colour_a;
}
else {
$bg_colour = $list_colour_b;
}
echo "";
echo "".$vrf['vrf_name'].' '.$vrf['mplsVpnVrfDescription'].' | ';
echo ''.$vrf['mplsVpnVrfRouteDistinguisher'].' | ';
// echo("" . $vrf['mplsVpnVrfDescription'] . " | ");
echo '';
$x = 1;
foreach ($vrf_devices[$vrf['mplsVpnVrfRouteDistinguisher']] as $device) {
if (($i % 2)) {
if (($x % 2)) {
$dev_colour = $list_colour_a_a;
}
else {
$dev_colour = $list_colour_a_b;
}
}
else {
if (($x % 2)) {
$dev_colour = $list_colour_b_b;
}
else {
$dev_colour = $list_colour_b_a;
}
}
echo "".generate_device_link($device, shorthost($device['hostname']));
if ($device['vrf_name'] != $vrf['vrf_name']) {
echo "Configured : '.$device['vrf_name']."', CAPTION, 'VRF Inconsistency' ,FGCOLOR,'#e5e5e5', BGCOLOR, '#c0c0c0', BORDER, 5, CELLPAD, 4, CAPCOLOR, '#050505');\" onmouseout=\"return nd();\"> ";
}
echo ' | ';
unset($seperator);
foreach ($ports[$device['vrf_id']][$device['device_id']] as $port) {
$port = array_merge($device, $port);
switch ($_GET['optc']) {
case 'bits':
case 'upkts':
case 'nupkts':
case 'errors':
$port['width'] = '130';
$port['height'] = '30';
$port['from'] = $config['time']['day'];
$port['to'] = $config['time']['now'];
$port['bg'] = '#'.$bg;
$port['graph_type'] = 'port_'.$_GET['optc'];
echo "
".makeshortif($port['ifDescr']).' ';
print_port_thumbnail($port);
echo " ".truncate(short_port_descr($port['ifAlias']), 22, '').'
';
break;
default:
echo $seperator.generate_port_link($port, makeshortif($port['ifDescr']));
$seperator = ', ';
break;
}//end switch
}//end foreach
echo ' | ';
$x++;
} //end foreach
echo ' | ';
$i++;
}//end foreach
echo '
';
}
else {
echo "";
$vrf = dbFetchRow('SELECT * FROM `vrfs` WHERE mplsVpnVrfRouteDistinguisher = ?', array($_GET['optb']));
echo "";
echo "".$vrf['vrf_name'].' | ';
echo ''.$vrf['mplsVpnVrfRouteDistinguisher'].' | ';
echo ''.$vrf['mplsVpnVrfDescription'].' | ';
echo '
';
$x = 0;
$devices = dbFetchRows('SELECT * FROM `vrfs` AS V, `devices` AS D WHERE `mplsVpnVrfRouteDistinguisher` = ? AND D.device_id = V.device_id', array($vrf['mplsVpnVrfRouteDistinguisher']));
foreach ($devices as $device) {
$hostname = $device['hostname'];
if (($x % 2)) {
$device_colour = $list_colour_a;
}
else {
$device_colour = $list_colour_b;
}
echo '';
include 'includes/device-header.inc.php';
echo '
';
unset($seperator);
echo '';
$i = 1;
foreach (dbFetchRows('SELECT * FROM `ports` WHERE `ifVrf` = ? AND `device_id` = ?', array($device['vrf_id'], $device['device_id'])) as $interface) {
if (($x % 2)) {
if (($i % 2) === 0) {
$int_colour = $list_colour_a_b;
}
else {
$int_colour = $list_colour_a_a;
}
}
else {
if (($i % 2) === 0) {
$int_colour = $list_colour_b_a;
}
else {
$int_colour = $list_colour_b_b;
}
}
include 'includes/print-interface.inc.php';
$i++;
}//end foreach
$x++;
echo '
';
echo "";
}//end foreach
}//end if
}
else {
include 'includes/error-no-perm.inc.php';
} //end if