diff --git a/discovery.php b/discovery.php
index 99348fede6..2f71689c35 100755
--- a/discovery.php
+++ b/discovery.php
@@ -96,6 +96,8 @@ while ($device = mysql_fetch_array($device_query))
include("includes/discovery/processors.inc.php");
+ include("includes/discovery/mempools.inc.php");
+
## Discover IPv4 Addresses
include("includes/discovery/ipv4-addresses.inc.php");
diff --git a/html/includes/graphs/mempool.inc.php b/html/includes/graphs/mempool.inc.php
new file mode 100644
index 0000000000..b76b909d14
--- /dev/null
+++ b/html/includes/graphs/mempool.inc.php
@@ -0,0 +1,32 @@
+
diff --git a/html/pages/device/overview.inc.php b/html/pages/device/overview.inc.php
index b36cc12582..575ca64b01 100644
--- a/html/pages/device/overview.inc.php
+++ b/html/pages/device/overview.inc.php
@@ -72,8 +72,9 @@ echo("
");
### Right Pane
include("overview/processors.inc.php");
-include("overview/cemp.inc.php");
-include("overview/cmp.inc.php");
+include("overview/mempools.inc.php");
+#include("overview/cemp.inc.php");
+#include("overview/cmp.inc.php");
include("overview/hrStorage.inc.php");
include("overview/temperatures.inc.php");
include("overview/fanspeeds.inc.php");
diff --git a/html/pages/device/overview/mempools.inc.php b/html/pages/device/overview/mempools.inc.php
new file mode 100644
index 0000000000..89141c88c7
--- /dev/null
+++ b/html/pages/device/overview/mempools.inc.php
@@ -0,0 +1,51 @@
+");
+ echo("
Memory Pools
");
+ echo("
");
+ $mempool_rows = '1';
+ $mempools = mysql_query("SELECT * FROM `mempools` WHERE device_id = '" . $device['device_id'] . "'");
+ while($mempool = mysql_fetch_array($mempools)) {
+ if(is_integer($mempool_rows/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; }
+ $perc = round($mempool['mempool_used'] / ($mempool['mempool_total']) * 100,2);
+ $text_descr = $mempool['mempool_descr'];
+ $text_descr = str_replace("Routing Processor", "RP", $text_descr);
+ $text_descr = str_replace("Switching Processor", "SP", $text_descr);
+ $text_descr = str_replace("Processor", "Proc", $text_descr);
+ $text_descr = str_replace("Sub-Module", "Mod", $text_descr);
+ $text_descr = str_replace("DFC Card", "DFC", $text_descr);
+
+ $mempool_url = "/device/".$device['device_id']."/health/memory/";
+ $mini_url = $config['base_url'] . "/graph.php?id=".$mempool['mempool_id']."&type=mempool&from=".$day."&to=".$now."&width=80&height=20&bg=f4f4f4";
+
+ $mempool_popup = "onmouseover=\"return overlib('".$device['hostname']." - ".$text_descr;
+ $mempool_popup .= "
";
+ $mempool_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\"";
+
+ $total = formatStorage($mempool['mempool_total']);
+ $used = formatStorage($mempool['mempool_used']);
+ $free = formatStorage($mempool['mempool_free']);
+
+ if($perc > '90') { $left_background='c4323f'; $right_background='C96A73';
+ } elseif($perc > '75') { $left_background='bf5d5b'; $right_background='d39392';
+ } elseif($perc > '50') { $left_background='bf875b'; $right_background='d3ae92';
+ } elseif($perc > '25') { $left_background='5b93bf'; $right_background='92b7d3';
+ } else { $left_background='9abf5b'; $right_background='bbd392'; }
+
+ echo("" . $text_descr . " |
+  |
+
+ ".print_percentage_bar (200, 20, $perc, "$used / $total", "ffffff", $left_background, $perc . "%", "ffffff", $right_background)."
+ |
+
");
+
+
+ $mempool_rows++;
+ }
+ echo("
");
+ echo("
");
+}
+
+
+?>
diff --git a/includes/discovery/functions.inc.php b/includes/discovery/functions.inc.php
index 71d974eb44..bac4c28530 100644
--- a/includes/discovery/functions.inc.php
+++ b/includes/discovery/functions.inc.php
@@ -48,6 +48,29 @@ function discover_processor(&$valid_processor, $device, $oid, $index, $type, $de
}
}
+
+function discover_mempool(&$valid_mempool, $device, $index, $type, $descr, $precision = "1", $entPhysicalIndex = NULL, $hrDeviceIndex = NULL) {
+
+ global $config; global $debug;
+ if($debug) { echo("$device, $oid, $index, $type, $descr, $precision, $current, $entPhysicalIndex, $hrDeviceIndex\n"); }
+ if($descr) {
+ if(mysql_result(mysql_query("SELECT count(mempool_id) FROM `mempools` WHERE `mempool_index` = '$index' AND `device_id` = '".$device['device_id']."' AND `mempool_type` = '$type'"),0) == '0') {
+ $query = "INSERT INTO mempools (`entPhysicalIndex`, `hrDeviceIndex`, `device_id`, `mempool_descr`, `mempool_index`, `mempool_type`, `mempool_precision`)
+ values ('$entPhysicalIndex', '$hrDeviceIndex', '".$device['device_id']."', '$descr', '$index', '$type','$precision')";
+ mysql_query($query);
+ if($debug) { print $query . "\n"; }
+ echo("+");
+ } else {
+ echo(".");
+ $query = "UPDATE `mempools` SET `mempool_descr` = '".$descr."' WHERE `device_id` = '".$device['device_id']."' AND `mempool_index` = '".$index."' AND `mempool_type` = '".$type."'";
+ mysql_query($query);
+ if($debug) { print $query . "\n"; }
+ }
+ $valid_mempool[$type][$index] = 1;
+ }
+}
+
+
function discover_fan($device, $oid, $index, $type, $descr, $precision = 1, $low_limit = NULL, $high_limit = NULL, $current = NULL) {
global $config; global $debug;
diff --git a/includes/discovery/mempools-cmp.inc.php b/includes/discovery/mempools-cmp.inc.php
new file mode 100755
index 0000000000..6fb42106e8
--- /dev/null
+++ b/includes/discovery/mempools-cmp.inc.php
@@ -0,0 +1,20 @@
+ $cmp) {
+ if(is_numeric($cmp['ciscoMemoryPoolUsed']) && is_numeric($index)) {
+ discover_mempool($valid_mempool, $device, $index, "cmp", $cmp['ciscoMemoryPoolName'], "1", NULL, NULL);
+ }
+ }
+ }
+}
+
+?>
diff --git a/includes/discovery/mempools.inc.php b/includes/discovery/mempools.inc.php
new file mode 100755
index 0000000000..bc0a635a05
--- /dev/null
+++ b/includes/discovery/mempools.inc.php
@@ -0,0 +1,28 @@
+ " . $mempool_type . "\n"); }
+ if(!$valid_mempool[$mempool_type][$mempool_index]) {
+ echo("-");
+ mysql_query("DELETE FROM `mempools` WHERE mempool_id = '" . $test_mempool['mempool_id'] . "'");
+ }
+ unset($mempool_oid); unset($mempool_type);
+}
+
+unset($valid_mempool);
+echo("\n");
+
+?>
diff --git a/includes/polling/device-ios.inc.php b/includes/polling/device-ios.inc.php
index 81187a9833..19e3381ac6 100755
--- a/includes/polling/device-ios.inc.php
+++ b/includes/polling/device-ios.inc.php
@@ -20,9 +20,13 @@
$snmp_cmdb .= " entPhysicalModelName.1 entPhysicalContainedIn.1 entPhysicalName.1 entPhysicalSoftwareRev.1 ";
$snmp_cmdb .= " entPhysicalModelName.1001 entPhysicalContainedIn.1001";
$snmp_cmdb .= " cardDescr.1 cardSlotNumber.1";
- list($model_1,$contained_1,$name_1,$ver_1,$model_1001,$contained_1001,$descr_1,$slot_1) = explode("\n", shell_exec($snmp_cmdb));
- if(($contained_1 == "0" || $name_1 == "Chassis") && strpos($model_1, "No") === FALSE) { $ciscomodel = $model_1; list($version_1) = explode(",",$ver_1); }
+ $model_data = shell_exec($snmp_cmdb);
+ if($debug) {echo($model_data);}
+ list($model_1,$contained_1,$name_1,$ver_1,$model_1001,$contained_1001,$descr_1,$slot_1) = explode("\n", $model_data);
+
+
if($slot_1 == "-1" && strpos($descr_1, "No") === FALSE) { $ciscomodel = $descr_1; }
+ if(($contained_1 == "0" || $name_1 == "Chassis") && strpos($model_1, "No") === FALSE) { $ciscomodel = $model_1; list($version_1) = explode(",",$ver_1); }
if($contained_1001 == "0" && strpos($model_1001, "No") === FALSE) { $ciscomodel = $model_1001; }
$ciscomodel = str_replace("\"","",$ciscomodel);
if($ciscomodel) { $hardware = $ciscomodel; unset($ciscomodel); }
diff --git a/includes/polling/mempools-cmp.inc.php b/includes/polling/mempools-cmp.inc.php
new file mode 100755
index 0000000000..83bee2472c
--- /dev/null
+++ b/includes/polling/mempools-cmp.inc.php
@@ -0,0 +1,16 @@
+
diff --git a/includes/polling/mempools.inc.php b/includes/polling/mempools.inc.php
new file mode 100755
index 0000000000..eaa1d8d2fa
--- /dev/null
+++ b/includes/polling/mempools.inc.php
@@ -0,0 +1,56 @@
+
diff --git a/poll-device.php b/poll-device.php
index 9aba77052f..162fcb134f 100755
--- a/poll-device.php
+++ b/poll-device.php
@@ -114,6 +114,7 @@ while ($device = mysql_fetch_array($device_query)) {
include("includes/polling/fanspeeds.inc.php");
include("includes/polling/voltages.inc.php");
include("includes/polling/processors.inc.php");
+ include("includes/polling/mempools.inc.php");
include("includes/polling/device-netstats.inc.php");
include("includes/polling/ipSystemStats.inc.php");
include("includes/polling/ports.inc.php");