hasGlobalRead()) { include 'includes/error-no-perm.inc.php'; } else { $link_array = array( 'page' => 'routing', 'protocol' => 'vrf', ); print_optionbar_start(); echo "VRFs » "; $menu_options = array('basic' => 'Basic', ); if (!$vars['view']) { $vars['view'] = 'basic'; } $sep = ''; foreach ($menu_options as $option => $text) { if ($vars['view'] == $option) { echo ""; } echo generate_link($text, $link_array, array('view' => $option)); if ($vars['view'] == $option) { echo ''; } echo ' | '; } 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) { echo ""; } echo generate_link($descr, $link_array, array('view' => 'graphs', 'graph' => $type)); if ($vars['graph'] == $type) { echo ''; } $type_sep = ' | '; } print_optionbar_end(); if ($vars['view'] == 'basic' || $vars['view'] == 'graphs') { // 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['vrf_name']][$vrf_device['mplsVpnVrfRouteDistinguisher']])) { $vrf_devices[$vrf_device['vrf_name']][$vrf_device['mplsVpnVrfRouteDistinguisher']][0] = $vrf_device; } else { array_push($vrf_devices[$vrf_device['vrf_name']][$vrf_device['mplsVpnVrfRouteDistinguisher']], $vrf_device); } } unset($ports); 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 `vrf_name`, `mplsVpnVrfRouteDistinguisher`, `mplsVpnVrfDescription` FROM `vrfs` GROUP BY `mplsVpnVrfRouteDistinguisher`, `mplsVpnVrfDescription`,`vrf_name`') as $vrf) { if (($i % 2)) { $bg_colour = $config['list_colour']['even']; } else { $bg_colour = $config['list_colour']['odd']; } echo ""; echo "'; echo ''; echo ''; $i++; }//end foreach echo '
"; echo ""; echo $vrf['vrf_name'].'
'; echo "".$vrf['mplsVpnVrfDescription'].'
'.$vrf['mplsVpnVrfRouteDistinguisher'].''; $x = 1; foreach ($vrf_devices[$vrf['vrf_name']][$vrf['mplsVpnVrfRouteDistinguisher']] as $device) { if (($i % 2)) { if (($x % 2)) { $dev_colour = $config['list_colour']['even_alt']; } else { $dev_colour = $config['list_colour']['even_alt2']; } } else { if (($x % 2)) { $dev_colour = $config['list_colour']['odd_alt2']; } else { $dev_colour = $config['list_colour']['odd_alt']; } } echo "'; $x++; } //end foreach echo '
'device'), array('tab' => 'routing', 'view' => 'basic', 'proto' => 'vrf', 'device' => $device['device_id']) ); echo "'>".$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 = cleanPort($port); $port = array_merge($device, $port); switch ($vars['graph']) { 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_'.$vars['graph']; echo "
".makeshortif($port['ifDescr']).'
'; print_port_thumbnail($port); echo "
".substr(short_port_descr($port['ifAlias']), 0, 22).'
'; break; default: echo $seperator.generate_port_link($port, makeshortif($port['ifDescr'])); $seperator = ', '; break; }//end switch }//end foreach echo '
'; } elseif ($vars['view'] == 'detail') { echo "Not Implemented"; }//end if } //end if