diff --git a/html/pages/device.inc.php b/html/pages/device.inc.php index 610088e7f2..5c3947df8e 100644 --- a/html/pages/device.inc.php +++ b/html/pages/device.inc.php @@ -131,6 +131,18 @@ if (device_permitted($_GET['id']) || $check_device == $_GET['id']) '); } + $cef_query = mysql_query("SELECT COUNT(*) FROM `cef_switching` WHERE `device_id` = '".$device['device_id']."'"); + $cef_count = mysql_result($cef_query,0); + + if ($cef_count) + { + echo('
  • + + CEF + +
  • '); + } + if ($_SESSION['userlevel'] >= "5" && mysql_result(mysql_query("SELECT count(*) FROM links AS L, ports AS I WHERE I.device_id = '".$device['device_id']."' AND I.interface_id = L.local_interface_id"),0)) { echo('
  • diff --git a/html/pages/device/cefswitching.inc.php b/html/pages/device/cefswitching.inc.php new file mode 100644 index 0000000000..db8cada8a9 --- /dev/null +++ b/html/pages/device/cefswitching.inc.php @@ -0,0 +1,67 @@ + 'Basic', + 'graphs' => 'Graphs', + ); + +if (!$_GET['opta']) { $_GET['opta'] = "basic"; } + +$sep = ""; +foreach ($menu_options as $option => $text) +{ + echo($sep); + if ($_GET['opta'] == $option) { echo(""); } + echo('' . $text + . ''); + if ($_GET['opta'] == $option) { echo(""); } + $sep = " | "; +} + +unset($sep); + +print_optionbar_end(); + + +echo(""); + +$cef_query = mysql_query("SELECT * FROM `cef_switching` WHERE `device_id` = '".$device['device_id']."' ORDER BY `entPhysicalIndex`, `afi`, `cef_index`"); + +echo(" +"); + +$i=0; + +while ($cef = mysql_fetch_assoc($cef_query)) +{ + + $entity_query = mysql_query("SELECT * FROM `entPhysical` WHERE device_id = '".$device['device_id']."' AND `entPhysicalIndex` = '".$cef['entPhysicalIndex']."'"); + $entity = mysql_fetch_assoc($entity_query); + + if (!is_integer($i/2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } + + $interval = $cef['updated'] - $cef['updated_prev']; + + echo(" + + "); + + echo(""); + echo(""); + echo(""); + + echo(" + "); + $i++; +} + +echo("
    EntityAFIPathDropPuntPunt2Host
    ".$entity['entPhysicalName']." - ".$entity['entPhysicalModelName']."".$cef['afi']."".$cef['cef_path']."".format_si($cef['drop'])); + if($cef['drop'] > $cef['drop_prev']) { echo(" (".round(($cef['drop']-$cef['drop_prev'])/$interval,2)."/sec)"); } + echo("".format_si($cef['punt'])); + if($cef['punt'] > $cef['punt_prev']) { echo(" (".round(($cef['punt']-$cef['punt_prev'])/$interval,2)."/sec)"); } + echo("".format_si($cef['punt'])); + if($cef['punt2host'] > $cef['punt2host_prev']) { echo(" (".round(($cef['punt2host']-$cef['punt2host_prev'])/$interval,2)."/sec)"); } + echo("
    "); + +?> diff --git a/html/pages/device/vlans.inc.php b/html/pages/device/vlans.inc.php index e490a356bd..7f60924cad 100644 --- a/html/pages/device/vlans.inc.php +++ b/html/pages/device/vlans.inc.php @@ -24,4 +24,4 @@ while ($vlan = mysql_fetch_assoc($vlan_query)) echo(""); -?> \ No newline at end of file +?> diff --git a/includes/polling/cisco-cef.inc.php b/includes/polling/cisco-cef.inc.php index 077c4eb590..7c528a28e2 100755 --- a/includes/polling/cisco-cef.inc.php +++ b/includes/polling/cisco-cef.inc.php @@ -4,6 +4,8 @@ echo("Cisco CEF Switching Path: "); $cefs = array(); $cefs = snmpwalk_cache_threepart_oid($device, "CISCO-CEF-MIB::cefSwitchingStatsEntry", $cefs); +$polled = time(); + if ($debug) { print_r($cefs); } if (is_array($cefs)) @@ -26,20 +28,26 @@ if (is_array($cefs)) foreach($afis as $afi => $paths) { echo(" |- $afi\n"); - foreach($paths as $path => $path_name) + foreach($paths as $path => $cef_stat) { - echo(" | |-".$path.": ".$path_name['cefSwitchingPath']); + echo(" | |-".$path.": ".$cef_stat['cefSwitchingPath']); if(mysql_result(mysql_query("SELECT COUNT(*) FROM `cef_switching` WHERE `device_id` = '".$device['device_id']."' AND `entPhysicalIndex` = '".$entity."' AND `afi` = '".$afi."' AND `cef_index` = '".$path."'"),0) != "1") { $sql = "INSERT INTO `cef_switching` (`device_id`, `entPhysicalIndex`, `afi`, `cef_index`, `cef_path`) - VALUES ('".$device['device_id']."', '".$entity."', '".$afi."', '".$path."', '".$path_name['cefSwitchingPath']."')"; + VALUES ('".$device['device_id']."', '".$entity."', '".$afi."', '".$path."', '".$cef_stat['cefSwitchingPath']."')"; mysql_query($sql); echo("+"); } + $sql = "SELECT * FROM `cef_switching` WHERE `device_id` = '".$device['device_id']."' AND `entPhysicalIndex` = '".$entity."' + AND `afi` = '".$afi."' AND `cef_index` = '".$path."'"; + + $query = mysql_query($sql); + $cef_entry = mysql_fetch_assoc($query); + $filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename("cefswitching-".$entity."-".$afi."-".$path.".rrd"); if (!is_file($filename)) @@ -54,20 +62,31 @@ if (is_array($cefs)) RRA:LAST:0.5:1:600 RRA:LAST:0.5:6:700 RRA:LAST:0.5:24:775 RRA:LAST:0.5:288:797"); } - $path_name['cefSwitchingPath']; - $path_name['cefSwitchingDrop']; - $path_name['cefSwitchingPunt']; - $path_name['cefSwitchingPunt2Host']; - ### Copy HC to non-HC if they exist - if (is_numeric($this_port['cefSwitchingPath'])) { $this_port['cefSwitchingPath'] = $this_port['cefSwitchingHCDrop']; } - if (is_numeric($this_port['cefSwitchingPunt'])) { $this_port['cefSwitchingPunt'] = $this_port['cefSwitchingHCPunt']; } - if (is_numeric($this_port['cefSwitchingPunt2Host'])) { $this_port['cefSwitchingPunt2Host'] = $this_port['cefSwitchingHCPunt2Host']; } + if (is_numeric($cef_stat['cefSwitchingHCDrop'])) { $cef_stat['cefSwitchingDrop'] = $cef_stat['cefSwitchingHCDrop']; } + if (is_numeric($cef_stat['cefSwitchingHCPunt'])) { $cef_stat['cefSwitchingPunt'] = $cef_stat['cefSwitchingHCPunt']; } + if (is_numeric($cef_stat['cefSwitchingHCPunt2Host'])) { $cef_stat['cefSwitchingPunt2Host'] = $cef_stat['cefSwitchingHCPunt2Host']; } + + $update = " `drop` = '".$cef_stat['cefSwitchingDrop']."'"; + $update .= ", `punt` = '".$cef_stat['cefSwitchingPunt']."'"; + $update .= ", `punt2host` = '".$cef_stat['cefSwitchingPunt2Host']."'"; + + $update .= ", `drop_prev` = '".$cef_entry['drop']."'"; + $update .= ", `punt_prev` = '".$cef_entry['punt']."'"; + $update .= ", `punt2host_prev` = '".$cef_entry['punt2host']."'"; + + $update .= ", `updated` = '".$polled."'"; + $update .= ", `updated_prev` = '".$cef_entry['updated']."'"; + + $update_query = "UPDATE `cef_switching` SET ".$update." WHERE `device_id` = '".$device['device_id']."' AND `entPhysicalIndex` = '".$entity."' + AND `afi` = '".$afi."' AND `cef_index` = '".$path."'"; + @mysql_query($update_query); + if ($debug) {echo("\nMYSQL : [ $update_query ]"); } - $rrd_update = "N:".$path_name['cefSwitchingDrop'].":".$path_name['cefSwitchingPunt'].":".$path_name['cefSwitchingPunt2Host']; + $rrd_update = "N:".$cef_stat['cefSwitchingDrop'].":".$cef_stat['cefSwitchingPunt'].":".$cef_stat['cefSwitchingPunt2Host']; $ret = rrdtool_update("$filename", $rrd_update); - if($debug) { echo(" Values: ".$path_name['cefSwitchingDrop'].":".$path_name['cefSwitchingPunt'].":".$path_name['cefSwitchingPunt2Host']); } + if($debug) { echo(" Values: ".$cef_stat['cefSwitchingDrop'].":".$cef_stat['cefSwitchingPunt'].":".$cef_stat['cefSwitchingPunt2Host']); } echo("\n");