'routing', 'protocol' => 'vrf']; $navbar = ['brand' => "VRFs", 'class' => "navbar-narrow"]; $navbar['options']['vrf']['text'] = 'All VRFs'; if (!isset($vars['vrf'])) { $navbar['options']['vrf']['class'] .= " active"; } $navbar['options']['vrf']['url'] = generate_url($vars, ['vrf' => NULL]); $options['basic']['text'] = 'Basic'; // $navbar['options']['details']['text'] = 'Details'; $options['graphs'] = ['text' => 'Graphs', 'class' => 'pull-right', 'icon' => $config['icon']['graphs']]; if (!isset($vars['view'])) { $vars['view'] = 'basic'; } foreach ($options as $option => $array) { $navbar['options'][$option] = $array; if ($vars['view'] == $option) { $navbar['options'][$option]['class'] .= " active"; } $navbar['options'][$option]['url'] = generate_url($vars, ['view' => $option]); } foreach (['graphs'] as $type) { foreach ($config['graph_types']['port'] as $option => $data) { if ($vars['view'] == $type && $vars['view'] == $option) { $navbar['options'][$type]['suboptions'][$option]['class'] = 'active'; $navbar['options'][$type]['text'] .= ' (' . $data['name'] . ')'; } $navbar['options'][$type]['suboptions'][$option]['text'] = $data['name']; $navbar['options'][$type]['suboptions'][$option]['url'] = generate_url($vars, ['view' => $type, 'graph' => $option]); } } print_navbar($navbar); unset($navbar); if (!$vars['vrf']) { // 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`, `vrf_rd`, `vrf_descr`, `vrf_name`"; $dev_fields = "`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` LEFT JOIN `devices` USING (`device_id`)" . generate_where_clause($GLOBALS['cache']['where']['devices_permitted'])) as $vrf_device) { if (empty($vrf_devices[$vrf_device['vrf_rd']])) { $vrf_devices[$vrf_device['vrf_rd']][0] = $vrf_device; } else { array_push($vrf_devices[$vrf_device['vrf_rd']], $vrf_device); } } foreach (dbFetchRows("SELECT $port_fields FROM `ports`" . generate_where_clause($GLOBALS['cache']['where']['ports_permitted'], '`ifVrf` IS NOT NULL')) as $port) { if (empty($vrf_ports[$port['ifVrf']][$port['device_id']])) { $vrf_ports[$port['ifVrf']][$port['device_id']][0] = $port; } else { array_push($vrf_ports[$port['ifVrf']][$port['device_id']], $port); } } echo generate_box_open(); echo(''); foreach (dbFetchRows("SELECT * FROM `vrfs`" . generate_where_clause($GLOBALS['cache']['where']['devices_permitted']) . " GROUP BY `vrf_rd`") as $vrf) { echo(''); echo(''); echo(''); echo(''; } echo("
' . $vrf['vrf_name'] . '
' . $vrf['vrf_descr'] . '
' . $vrf['vrf_rd'] . ''); echo generate_box_open(); echo(''); foreach ($vrf_devices[$vrf['vrf_rd']] as $device) { echo('"); } // End While echo '
' . generate_device_link_short($device) . ''); if ($device['vrf_name'] != $vrf['vrf_name']) { echo(generate_tooltip_link(NULL, ' ' . get_icon('exclamation'), "Expected Name : " . $vrf['vrf_name'] . "
Configured : " . $device['vrf_name'])); } echo("
"); unset($seperator); foreach ($vrf_ports[$device['vrf_id']][$device['device_id']] as $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'] = get_time('day'); $port['to'] = get_time(); $port['bg'] = "#" . $bg; $port['graph_type'] = "port_" . $vars['graph']; echo '
' . short_ifname($port['ifDescr']) . '
'; generate_port_thumbnail($port); echo("
" . short_port_descr($port['ifAlias']) . "
"); break; default: echo($seperator . generate_port_link_short($port)); $seperator = ", "; break; } } echo("
'; echo generate_box_close(); echo '
"); echo generate_box_close(); } else { // Print single VRF echo generate_box_open(); echo(''); $vrf = dbFetchRow("SELECT * FROM `vrfs` " . generate_where_clause('`vrf_rd` = ?', $GLOBALS['cache']['where']['devices_permitted']), [$vars['vrf']]); echo(''); echo(''); echo(''); echo(''); echo('
' . $vrf['vrf_name'] . '' . $vrf['vrf_rd'] . '' . $vrf['vrf_descr'] . '
'); echo generate_box_close(); $vrf_devices = dbFetchRows("SELECT * FROM `vrfs` LEFT JOIN `devices` USING (`device_id`)" . generate_where_clause('`vrf_rd` = ?', $GLOBALS['cache']['where']['devices_permitted']), [$vrf['vrf_rd']]); foreach ($vrf_devices as $device) { $hostname = $device['hostname']; echo generate_box_open(); echo(''); print_device_row($device); echo('
'); echo generate_box_close(); unset($seperator); echo('
'); foreach (dbFetchRows("SELECT * FROM `ports`" . generate_where_clause('`ifVrf` = ? AND `device_id` = ?', $GLOBALS['cache']['where']['ports_permitted']), [$device['vrf_id'], $device['device_id']]) as $port) { print_port_row($port); } echo('
'); echo('
'); } } // EOF