= '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 = "interface_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'])." ");
generate_port_thumbnail($port);
echo(" ".truncate(short_port_descr($port['ifAlias']), 22, '')."
");
break;
default:
echo($seperator.generate_port_link($port,makeshortif($port['ifDescr'])));
$seperator = ", ";
break;
}
}
echo(" | ");
$x++;
} // End While
echo(" | ");
$i++;
}
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++;
}
$x++;
echo("
");
echo("");
}
}
} else {
include("includes/error-no-perm.inc.php");
} ## End Permission if
?>