diff --git a/cron.sh b/cron.sh
index 43788cf6a..6518b0484 100755
--- a/cron.sh
+++ b/cron.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-./discovery.php --forced >> /var/log/observer.log
+#./discovery.php --forced >> /var/log/observer.log
./poll-mac_accounting.php >> /var/log/observer.log &
./discover-bgp_peers.php >> /var/log/observer.log &
./poll-device.php --odd >> /var/log/observer.log &
diff --git a/discover-cdp.php b/discover-cdp.php
index 7a9007d15..f13a5d8e0 100755
--- a/discover-cdp.php
+++ b/discover-cdp.php
@@ -15,7 +15,7 @@ if($argv[1] == "--device" && $argv[2]) {
}
-$device_query = mysql_query("SELECT * FROM `devices` WHERE `status` = '1' AND (`os` = 'IOS' OR `os` = 'IOS XE') AND hostname NOT LIKE '%bar%' $where ORDER BY `device_id` DESC");
+$device_query = mysql_query("SELECT * FROM `devices` WHERE `status` = '1' AND (`os` = 'IOS' OR `os` = 'IOS XE') AND hostname NOT LIKE '%esr%' $where ORDER BY `device_id` DESC");
while ($device = mysql_fetch_array($device_query)) {
@@ -77,7 +77,7 @@ while ($device = mysql_fetch_array($device_query)) {
{
$sql = "INSERT INTO `links` (`src_if`, `dst_if`, `cdp`) VALUES ('$src_if_id', '$dst_if_id', '1')";
mysql_query($sql);
- echo("++($src_host $src_if -> $dst_host $dst_if)");
+ echo("\n++($src_host $src_if -> $dst_host $dst_if)");
} else {
echo("..");
}
diff --git a/discovery.php b/discovery.php
index bf867a385..007717af0 100755
--- a/discovery.php
+++ b/discovery.php
@@ -36,7 +36,7 @@ if($argv[1] == "--device" && $argv[2]) {
}
-$devices_polled = 0;
+$devices_discovered = 0;
$device_query = mysql_query("SELECT * FROM `devices` WHERE status = '1' $where ORDER BY device_id DESC");
while ($device = mysql_fetch_array($device_query)) {
@@ -47,7 +47,7 @@ while ($device = mysql_fetch_array($device_query)) {
include("includes/discovery/interfaces.php");
## Discover IPv4 Addresses
- include("includes/discovery/ipaddresses.php");
+ include("includes/discovery/ipv4-addresses.php");
## Discovery IPv6 Addresses
include("includes/discovery/ipv6-addresses.php");
@@ -72,14 +72,14 @@ while ($device = mysql_fetch_array($device_query)) {
include("includes/discovery/cisco-processors.php");
}
- echo("\n"); $devices_polled++;
+ echo("\n"); $devices_discovered++;
mysql_query("DELETE FROM `devices_attribs` WHERE `device_id` = '".$device['device_id']."' AND `attrib_type` = 'discover'");
}
$end = utime(); $run = $end - $start;
$proctime = substr($run, 0, 5);
-echo("$devices_polled devices polled in $proctime secs\n");
+echo("$devices_discovered devices discovered in $proctime secs\n");
?>
diff --git a/html/graph.php b/html/graph.php
index 8b12338f3..113ba3142 100644
--- a/html/graph.php
+++ b/html/graph.php
@@ -1,6 +1,6 @@
$ip[addr]/$ip[cidr]");
+ echo("$break $ip[ipv4_address]/$ip[ipv4_prefixlen]");
$break = "
";
}
- $ip6data = mysql_query("SELECT * FROM `ip6addr` WHERE `interface_id` = '" . $interface['interface_id'] . "'");
+ $ip6data = mysql_query("SELECT * FROM `ipv6_addresses` WHERE `interface_id` = '" . $interface['interface_id'] . "'");
while($ip6 = mysql_fetch_Array($ip6data)) {
- echo("$break ".Net_IPv6::compress($ip6['ip6_addr'])."/".$ip6['ip6_prefixlen']."");
+ echo("$break ".Net_IPv6::compress($ip6['ipv6_address'])."/".$ip6['ipv6_prefixlen']."");
$break = "
";
}
@@ -111,64 +111,45 @@ echo("");
}
unset($br);
- $adj_sql = "SELECT * FROM networks AS N, interfaces AS I, adjacencies AS A ";
- $adj_sql = $adj_sql . "WHERE I.interface_id = A.interface_id AND A.network_id = N.id ";
- $adj_sql = $adj_sql . "AND I.interface_id = '$if_id'";
- $adj_query = mysql_query("$adj_sql");
- while($adjs = mysql_fetch_array($adj_query)) {
- $network_id = $adjs['network_id'];
- $newsql = "SELECT * FROM adjacencies AS A, networks as N, interfaces as I, devices as D ";
- $newsql = $newsql . "WHERE N.id = '$network_id' AND A.network_id = N.id AND I.interface_id = A.interface_id AND D.device_id = I.device_id ";
- $newsql = $newsql . "AND D.device_id != '".$device['device_id']."' AND I.ifDescr NOT LIKE '%loopback%' GROUP BY D.device_id ORDER BY D.hostname";
- $new_query = mysql_query($newsql);
- while($new = mysql_fetch_array($new_query)) {
-
- $this_ifid = $new['interface_id'];
- $this_hostid = $new['device_id'];
- $this_hostname = $new['hostname'];
- $this_ifname = fixifName($new['ifDescr']);
- $wq = mysql_query("select count(*) FROM links WHERE dst_if = '$this_ifid' AND src_if = $if_id;");
-
- $int_links[$this_ifid] = $this_ifid;
- $int_links_v4[$this_ifid] = 1;
-
-
-# if (@mysql_result($wq, 0) == '0' && $this_hostname != $hostname) {
-# $graph_url = "graph.php?if=$this_ifid&from=$twoday&to=$now&width=400&height=120&type=bits'";
-# echo("$br
" . generateiflink($new, makeshortif($new['ifDescr'])) . " on " . generatedevicelink($new));
-# $br = "
";
-# }
- }
- }
- unset($br);
- # }
-
- $sql = "SELECT ip6_network_id FROM ip6addr WHERE interface_id = '".$interface['interface_id']."'";
-
- $nets_query = mysql_query($sql);
+ $sql = "SELECT `ipv4_network_id` FROM `ipv4_addresses` WHERE `interface_id` = '".$interface['interface_id']."' AND `ipv4_address` NOT LIKE '127.%'";
+ $nets_query = mysql_query($sql);
while($net = mysql_fetch_array($nets_query)) {
- echo($net['ip6_network']);
- $ip6_network_id = $net['ip6_network_id'];
-
- $sql = "SELECT I.interface_id FROM ip6addr AS A, ip6networks AS N, interfaces AS I, devices AS D
- WHERE A.interface_id = I.interface_id
- AND A.ip6_network = N.ip6_network AND N.ip6_network_id = '".$net['ip6_network_id']."' AND D.device_id = I.device_id
- AND D.device_id != '".$device['device_id']."' AND A.ip6_origin != 'linklayer' AND A.ip6_origin != 'wellknown'";
-
+ $ipv4_network_id = $net['ipv4_network_id'];
+ $sql = "SELECT I.interface_id FROM ipv4_addresses AS A, interfaces AS I, devices AS D
+ WHERE A.interface_id = I.interface_id
+ AND A.ipv4_network_id = '".$net['ipv4_network_id']."' AND D.device_id = I.device_id
+ AND D.device_id != '".$device['device_id']."'";
$new_query = mysql_query($sql);
while($new = mysql_fetch_array($new_query)) {
-
- echo($new['ip6_network_id']);
-
+ echo($new['ipv4_network_id']);
$this_ifid = $new['interface_id'];
$this_hostid = $new['device_id'];
$this_hostname = $new['hostname'];
$this_ifname = fixifName($new['ifDescr']);
+ $int_links[$this_ifid] = $this_ifid;
+ $int_links_v4[$this_ifid] = 1;
+ }
+ }
+
+ $sql = "SELECT ipv6_network_id FROM ipv6_addresses WHERE interface_id = '".$interface['interface_id']."'";
+ $nets_query = mysql_query($sql);
+ while($net = mysql_fetch_array($nets_query)) {
+ $ipv6_network_id = $net['ipv6_network_id'];
+ $sql = "SELECT I.interface_id FROM ipv6_addresses AS A, interfaces AS I, devices AS D
+ WHERE A.interface_id = I.interface_id
+ AND A.ipv6_network_id = '".$net['ipv6_network_id']."' AND D.device_id = I.device_id
+ AND D.device_id != '".$device['device_id']."' AND A.ipv6_origin != 'linklayer' AND A.ipv6_origin != 'wellknown'";
+ $new_query = mysql_query($sql);
+ while($new = mysql_fetch_array($new_query)) {
+ echo($new['ipv6_network_id']);
+ $this_ifid = $new['interface_id'];
+ $this_hostid = $new['device_id'];
+ $this_hostname = $new['hostname'];
+ $this_ifname = fixifName($new['ifDescr']);
$int_links[$this_ifid] = $this_ifid;
$int_links_v6[$this_ifid] = 1;
-
}
}
diff --git a/html/pages/device/overview.inc.php b/html/pages/device/overview.inc.php
index a58d93657..222ebfe29 100644
--- a/html/pages/device/overview.inc.php
+++ b/html/pages/device/overview.inc.php
@@ -43,11 +43,8 @@ if(mysql_result(mysql_query("SELECT count(*) from cpmCPU WHERE device_id = '" .
echo("
| " . $proc['entPhysicalDescr'] . " |
 |
" . $proc['cpmCPUTotal5minRev'] . "% |
- " . $total . " |
- " . $used . " |
");
$i++;
-
}
echo("");
echo("");
diff --git a/includes/discovery/bgp-peers.php b/includes/discovery/bgp-peers.php
index 66a224c5a..f1d722c02 100755
--- a/includes/discovery/bgp-peers.php
+++ b/includes/discovery/bgp-peers.php
@@ -82,6 +82,7 @@ while ($entry = mysql_fetch_array($query)) {
}
if(!$exists) {
mysql_query("DELETE FROM bgpPeers WHERE bgpPeer_id = '" . $entry['bgpPeer_id'] . "'");
+ mysql_query("DELETE FROM bgpPeers_cbgp WHERE bgpPeer_id = '" . $entry['bgpPeer_id'] . "'");
echo("-");
}
}
diff --git a/includes/discovery/ipv4-addresses.php b/includes/discovery/ipv4-addresses.php
new file mode 100755
index 000000000..0ea87aa0d
--- /dev/null
+++ b/includes/discovery/ipv4-addresses.php
@@ -0,0 +1,42 @@
+
diff --git a/includes/discovery/ipv6-addresses.php b/includes/discovery/ipv6-addresses.php
index 9b9f7a659..1818a59dc 100644
--- a/includes/discovery/ipv6-addresses.php
+++ b/includes/discovery/ipv6-addresses.php
@@ -14,60 +14,58 @@ if($ipv6interfaces){
list($ipv6addr,$ifIndex) = explode(" ", $data);
$oid = "";
$sep = ''; $adsep = '';
- unset($ip6_addr);
+ unset($ipv6_address);
$do = '0';
foreach(explode(":", $ipv6addr) as $part) {
$n = hexdec($part);
$oid = "$oid" . "$sep" . "$n";
$sep = ".";
- $ip6_addr = $ip6_addr . "$adsep" . $part;
+ $ipv6_address = $ipv6_address . "$adsep" . $part;
$do++;
if($do == 2) { $adsep = ":"; $do = '0'; } else { $adsep = "";}
}
- $ip6_prefixlen = trim(shell_exec($config['snmpget']." -".$device['snmpver']." -c ".$device['community']." ".$device['hostname'].":".$device['port']." .1.3.6.1.2.1.4.34.1.5.2.16.$oid | sed 's/.*\.//'"));
- $ip6_origin = trim(shell_exec($config['snmpget']." -Ovq -".$device['snmpver']." -c ".$device['community']." ".$device['hostname'].":".$device['port']." .1.3.6.1.2.1.4.34.1.6.2.16.$oid"));
+ $ipv6_prefixlen = trim(shell_exec($config['snmpget']." -".$device['snmpver']." -c ".$device['community']." ".$device['hostname'].":".$device['port']." .1.3.6.1.2.1.4.34.1.5.2.16.$oid | sed 's/.*\.//'"));
+ $ipv6_origin = trim(shell_exec($config['snmpget']." -Ovq -".$device['snmpver']." -c ".$device['community']." ".$device['hostname'].":".$device['port']." .1.3.6.1.2.1.4.34.1.6.2.16.$oid"));
- $ip6_network = trim(shell_exec($config['sipcalc']." $ip6_addr/$ip6_prefixlen | grep Subnet | cut -f 2 -d '-'"));
- $ip6_comp_addr = trim(shell_exec($config['sipcalc']." $ip6_addr/$ip6_prefixlen | grep Compressed | cut -f 2 -d '-'"));
+ $ipv6_network = trim(shell_exec($config['sipcalc']." $ipv6_address/$ipv6_prefixlen | grep Subnet | cut -f 2 -d '-'"));
+ $ipv6_compressed = trim(shell_exec($config['sipcalc']." $ipv6_address/$ipv6_prefixlen | grep Compressed | cut -f 2 -d '-'"));
- if (mysql_result(mysql_query("SELECT count(*) FROM `interfaces` WHERE device_id = '".$device['device_id']."' AND `ifIndex` = '$ifIndex'"), 0) != '0' && $ip6_prefixlen > '0' && $ip6_prefixlen < '129' && $ip6_comp_addr != '::1') {
+ if (mysql_result(mysql_query("SELECT count(*) FROM `interfaces`
+ WHERE device_id = '".$device['device_id']."' AND `ifIndex` = '$ifIndex'"), 0) != '0' && $ipv6_prefixlen > '0' && $ipv6_prefixlen < '129' && $ipv6_compressed != '::1') {
$i_query = "SELECT interface_id FROM `interfaces` WHERE device_id = '".$device['device_id']."' AND `ifIndex` = '$ifIndex'";
$interface_id = mysql_result(mysql_query($i_query), 0);
- if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ip6networks` WHERE `ip6_network` = '$ip6_network'"), 0) < '1') {
- mysql_query("INSERT INTO `ip6networks` (`ip6_network`) VALUES ('$ip6_network')");
+ if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ipv6_networks` WHERE `ipv6_network` = '$ipv6_network'"), 0) < '1') {
+ mysql_query("INSERT INTO `ipv6_networks` (`ipv6_network`) VALUES ('$ipv6_network')");
echo("N");
}
- if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ip6networks` WHERE `ip6_network` = '$ip6_network'"), 0) < '1') {
- mysql_query("INSERT INTO `ip6networks` (`ip6_network`) VALUES ('$ip6_network')");
+ if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ipv6_networks` WHERE `ipv6_network` = '$ipv6_network'"), 0) < '1') {
+ mysql_query("INSERT INTO `ipv6_networks` (`ipv6_network`) VALUES ('$ipv6_network')");
echo("N");
}
- $ip6_network_id = @mysql_result(mysql_query("SELECT `ip6_network_id` from `ip6networks` WHERE `ip6_network` = '$ip6_network'"), 0);
+ $ipv6_network_id = @mysql_result(mysql_query("SELECT `ipv6_network_id` from `ipv6_networks` WHERE `ipv6_network` = '$ipv6_network'"), 0);
- if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ip6addr` WHERE `ip6_addr` = '$ip6_addr' AND `ip6_prefixlen` = '$ip6_prefixlen' AND `interface_id` = '$interface_id'"), 0) == '0') {
- mysql_query("INSERT INTO `ip6addr` (`ip6_addr`, `ip6_comp_addr`, `ip6_prefixlen`, `ip6_origin`, `ip6_network`, `ip6_network_id`, `interface_id`) VALUES ('$ip6_addr', '$ip6_comp_addr', '$ip6_prefixlen', '$ip6_origin', '$ip6_network', '$ip6_network_id', '$interface_id')");
+ if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ipv6_addresses` WHERE `ipv6_address` = '$ipv6_address' AND `ipv6_prefixlen` = '$ipv6_prefixlen' AND `interface_id` = '$interface_id'"), 0) == '0') {
+ mysql_query("INSERT INTO `ipv6_addresses` (`ipv6_address`, `ipv6_compressed`, `ipv6_prefixlen`, `ipv6_origin`, `ipv6_network_id`, `interface_id`)
+ VALUES ('$ipv6_address', '$ipv6_compressed', '$ipv6_prefixlen', '$ipv6_origin', '$ipv6_network_id', '$interface_id')");
echo("+");
} else { echo("."); }
-# if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ip6adjacencies` WHERE `ip6_network_id` = '$ip6_network_id' AND `interface_id` = '$interface_id'"), 0) < '1') {
-# mysql_query("INSERT INTO `ip6adjacencies` (`network_id`, `interface_id`) VALUES ('$ip6_network_id', '$interface_id')");
-# echo("A");
-# }
- $full_address = "$ip6_addr/$ip6_prefixlen";
+ $full_address = "$ipv6_address/$ipv6_prefixlen";
$valid_v6[$full_address] = 1;
}
}
}
} else { echo("None configured"); }
-$sql = "SELECT * FROM ip6addr AS A, interfaces AS I WHERE I.device_id = '".$device['device_id']."' AND A.interface_id = I.interface_id";
+$sql = "SELECT * FROM ipv6_addresses AS A, interfaces AS I WHERE I.device_id = '".$device['device_id']."' AND A.interface_id = I.interface_id";
$data = mysql_query($sql);
while($row = mysql_fetch_array($data)) {
- $full_address = $row['ip6_addr'] . "/" . $row['ip6_prefixlen'];
+ $full_address = $row['ipv6_address'] . "/" . $row['ipv6_prefixlen'];
if(!$valid_v6[$full_address]) {
echo("-");
- $query = @mysql_query("DELETE FROM `ip6addr` WHERE `ip6_addr_id` = '".$row['ip6_addr_id']."'");
- if(!mysql_result(mysql_query("SELECT count(*) FROM ip6addr WHERE ip6_network_id = '".$row['ip6_network_id']."'"),0)) {
- $query = @mysql_query("DELETE FROM `ip6networks` WHERE `ip6_network_id` = '".$row['ip6_network_id']."'");
+ $query = @mysql_query("DELETE FROM `ipv6_addresses` WHERE `ipv6_address_id` = '".$row['ipv6_address_id']."'");
+ if(!mysql_result(mysql_query("SELECT count(*) FROM ipv6_addresses WHERE ipv6_network_id = '".$row['ipv6_network_id']."'"),0)) {
+ $query = @mysql_query("DELETE FROM `ipv6_networks` WHERE `ipv6_network_id` = '".$row['ipv6_network_id']."'");
}
}
}
diff --git a/includes/graphing.php b/includes/graphing.php
index 6a2808b25..d90038655 100644
--- a/includes/graphing.php
+++ b/includes/graphing.php
@@ -94,6 +94,34 @@ function temp_graph ($temp, $graph, $from, $to, $width, $height, $title, $vertic
return $imgfile;
}
+function graph_device_cpmCPU ($device, $graph, $from, $to, $width, $height, $title, $vertical) {
+ global $config, $installdir;
+ $options = "--start $from --end $to --width $width --height $height --vertical-label '$vertical' --alt-autoscale-max ";
+ $options .= " -l 0 -E -b 1024 --title '$title' ";
+ if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
+ $hostname = gethostbyid($device);
+ $imgfile = $config['install_dir'] . "/graphs/" . "$graph";
+ $iter = "1";
+ $sql = mysql_query("SELECT * FROM `cpmCPU` where `device_id` = '$device'");
+ $options .= "COMMENT:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Cur\ \ \ \ Max\\\\n";
+ while($proc = mysql_fetch_array($sql)) {
+ if($iter=="1") {$colour="CC0000";} elseif($iter=="2") {$colour="008C00";} elseif($iter=="3") {$colour="4096EE";
+ } elseif($iter=="4") {$colour="73880A";} elseif($iter=="5") {$colour="D01F3C";} elseif($iter=="6") {$colour="36393D";
+ } elseif($iter=="7") {$colour="FF0084"; unset($iter); }
+ $proc['descr_fixed'] = str_pad($proc['entPhysicalDescr'], 28);
+ $proc['descr_fixed'] = substr($proc['descr_fixed'],0,28);
+ $rrd = $config['rrd_dir'] . "/$hostname/cpmCPU-" . $proc['cpmCPU_oid'] . ".rrd";
+ $options .= " DEF:proc" . $proc['cpmCPU_oid'] . "=$rrd:usage:AVERAGE ";
+ $options .= " LINE1:proc" . $proc['cpmCPU_oid'] . "#" . $colour . ":'" . $proc['descr_fixed'] . "' ";
+ $options .= " GPRINT:proc" . $proc['cpmCPU_oid'] . ":LAST:%3.0lf";
+ $options .= " GPRINT:proc" . $proc['cpmCPU_oid'] . ":MAX:%3.0lf\\\l ";
+ $iter++;
+ }
+ $thing = shell_exec($config['rrdtool'] . " graph $imgfile $options");
+ return $imgfile;
+}
+
+
function temp_graph_dev ($device, $graph, $from, $to, $width, $height, $title, $vertical) {
global $config, $installdir;
$options = "--start $from --end $to --width $width --height $height --vertical-label '$vertical' --alt-autoscale-max ";
diff --git a/includes/polling/cisco-processors.inc.php b/includes/polling/cisco-processors.inc.php
index 7b7c227a3..f574dd08f 100755
--- a/includes/polling/cisco-processors.inc.php
+++ b/includes/polling/cisco-processors.inc.php
@@ -9,9 +9,7 @@ while($processor = mysql_fetch_array($proc_data)) {
echo("Checking CPU " . $processor['entPhysicalDescr'] . "... ");
- $procrrd = addslashes($config['rrd_dir'] . "/" . $device['hostname'] . "/cpmCPU-" . str_replace("/", "_", str_replace(" ", "_",$processor['entPhysicalDescr'])) . ".rrd");
- $procrrd = str_replace(")", "_", $procrrd);
- $procrrd = str_replace("(", "_", $procrrd);
+ $procrrd = addslashes($config['rrd_dir'] . "/" . $device['hostname'] . "/cpmCPU-" . $processor['cpmCPU_oid'] . ".rrd");
if (!is_file($procrrd)) {
`rrdtool create $procrrd \
@@ -29,7 +27,7 @@ while($processor = mysql_fetch_array($proc_data)) {
echo($proc . "%\n");
$updatecmd = $config['rrdtool'] ." update $procrrd N:$proc";
-
+ echo("$updatecmd");
shell_exec($updatecmd);
mysql_query("UPDATE `cpmCPU` SET `cpmCPUTotal5minRev` = '$proc' WHERE `cpmCPU_id` = '".$processor['cpmCPU_id']."'");
diff --git a/mibs/CISCO-MEMORY-POOL-MIB.my b/mibs/CISCO-MEMORY-POOL-MIB.my
new file mode 100644
index 000000000..6da591353
--- /dev/null
+++ b/mibs/CISCO-MEMORY-POOL-MIB.my
@@ -0,0 +1,318 @@
+-- *****************************************************************
+-- CISCO-MEMORY-POOL-MIB
+--
+-- February 1996, Jeffrey T. Johnson
+--
+-- July 2001, Seth Wang
+--
+-- Copyright (c) 2001 by cisco Systems, Inc.
+-- All rights reserved.
+-- *****************************************************************
+
+CISCO-MEMORY-POOL-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY,
+ OBJECT-TYPE,
+ Integer32,
+ Gauge32
+ FROM SNMPv2-SMI
+ TEXTUAL-CONVENTION,
+ DisplayString,
+ TruthValue
+ FROM SNMPv2-TC
+ MODULE-COMPLIANCE,
+ OBJECT-GROUP
+ FROM SNMPv2-CONF
+ ciscoMgmt
+ FROM CISCO-SMI
+ Percent
+ FROM CISCO-QOS-PIB-MIB;
+
+ciscoMemoryPoolMIB MODULE-IDENTITY
+ LAST-UPDATED "200107310000Z"
+ ORGANIZATION "Cisco Systems, Inc."
+ CONTACT-INFO
+ "Postal: Cisco Systems, Inc.
+ 170 West Tasman Drive
+ San Jose, CA 95134-1706
+ USA
+
+ Tel: +1 408 526 4000
+
+ E-mail: cs-snmp@cisco.com"
+ DESCRIPTION
+ "MIB module for monitoring memory pools"
+ REVISION "200107310000Z"
+ DESCRIPTION
+ "Added a new table, ciscoMemoryPoolUtilizationTable, which
+ provides information about memory utilization."
+ REVISION "199602010000Z"
+ DESCRIPTION
+ "Initial version of this MIB module."
+ ::= { ciscoMgmt 48 }
+
+CiscoMemoryPoolTypes ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Represents the different types of memory pools that
+ may be present in a managed device. Memory pools can
+ be roughly categorized into two groups, predefined
+ pools and dynamic pools. The following pool types
+ are currently predefined:
+ 1: processor memory
+ 2: i/o memory
+ 3: pci memory
+ 4: fast memory
+ 5: multibus memory
+
+ Dynamic pools will have a pool type value greater than
+ any of the predefined types listed above.
+
+ Note that only the processor pool is required to be
+ supported by all devices. Support for other pool types
+ is dependent on the device being managed."
+ SYNTAX Integer32 (1..65535)
+
+ciscoMemoryPoolObjects
+ OBJECT IDENTIFIER ::= { ciscoMemoryPoolMIB 1 }
+
+ciscoMemoryPoolTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF CiscoMemoryPoolEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A table of memory pool monitoring entries."
+ ::= { ciscoMemoryPoolObjects 1 }
+
+ciscoMemoryPoolEntry OBJECT-TYPE
+ SYNTAX CiscoMemoryPoolEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An entry in the memory pool monitoring table."
+ INDEX { ciscoMemoryPoolType }
+ ::= { ciscoMemoryPoolTable 1 }
+
+CiscoMemoryPoolEntry ::=
+ SEQUENCE {
+ ciscoMemoryPoolType CiscoMemoryPoolTypes,
+ ciscoMemoryPoolName DisplayString,
+ ciscoMemoryPoolAlternate Integer32,
+ ciscoMemoryPoolValid TruthValue,
+ ciscoMemoryPoolUsed Gauge32,
+ ciscoMemoryPoolFree Gauge32,
+ ciscoMemoryPoolLargestFree Gauge32
+ }
+
+ciscoMemoryPoolType OBJECT-TYPE
+ SYNTAX CiscoMemoryPoolTypes
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The type of memory pool for which this entry
+ contains information."
+ ::= { ciscoMemoryPoolEntry 1 }
+
+ciscoMemoryPoolName OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "A textual name assigned to the memory pool. This
+ object is suitable for output to a human operator,
+ and may also be used to distinguish among the various
+ pool types, especially among dynamic pools."
+ ::= { ciscoMemoryPoolEntry 2 }
+
+ciscoMemoryPoolAlternate OBJECT-TYPE
+ SYNTAX Integer32 (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Indicates whether or not this memory pool has an
+ alternate pool configured. Alternate pools are
+ used for fallback when the current pool runs out
+ of memory.
+
+ If an instance of this object has a value of zero,
+ then this pool does not have an alternate. Otherwise
+ the value of this object is the same as the value of
+ ciscoMemoryPoolType of the alternate pool."
+ ::= { ciscoMemoryPoolEntry 3 }
+
+ciscoMemoryPoolValid OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Indicates whether or not the remaining objects in
+ this entry contain accurate data. If an instance
+ of this object has the value false (which in and of
+ itself indicates an internal error condition), the
+ values of the remaining objects in the conceptual row
+ may contain inaccurate information (specifically, the
+ reported values may be less than the actual values)."
+ ::= { ciscoMemoryPoolEntry 4 }
+
+ciscoMemoryPoolUsed OBJECT-TYPE
+ SYNTAX Gauge32
+ UNITS "bytes"
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Indicates the number of bytes from the memory pool
+ that are currently in use by applications on the
+ managed device."
+ ::= { ciscoMemoryPoolEntry 5 }
+
+ciscoMemoryPoolFree OBJECT-TYPE
+ SYNTAX Gauge32
+ UNITS "bytes"
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Indicates the number of bytes from the memory pool
+ that are currently unused on the managed device.
+
+ Note that the sum of ciscoMemoryPoolUsed and
+ ciscoMemoryPoolFree is the total amount of memory
+ in the pool"
+ ::= { ciscoMemoryPoolEntry 6 }
+
+ciscoMemoryPoolLargestFree OBJECT-TYPE
+ SYNTAX Gauge32
+ UNITS "bytes"
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Indicates the largest number of contiguous bytes
+ from the memory pool that are currently unused on
+ the managed device."
+ ::= { ciscoMemoryPoolEntry 7 }
+
+ciscoMemoryPoolUtilizationTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF CiscoMemoryPoolUtilizationEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A table of memory pool utilization entries. Each of the
+ objects provides a general idea of how much of the memory
+ pool has been used over a given period of time. It is
+ determined as a weighted decaying average."
+ ::= { ciscoMemoryPoolObjects 2 }
+
+ciscoMemoryPoolUtilizationEntry OBJECT-TYPE
+ SYNTAX CiscoMemoryPoolUtilizationEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An entry in the memory pool utilization table."
+ AUGMENTS { ciscoMemoryPoolEntry }
+ ::= { ciscoMemoryPoolUtilizationTable 1 }
+
+CiscoMemoryPoolUtilizationEntry ::=
+ SEQUENCE {
+ ciscoMemoryPoolUtilization1Min Percent,
+ ciscoMemoryPoolUtilization5Min Percent,
+ ciscoMemoryPoolUtilization10Min Percent
+ }
+
+ciscoMemoryPoolUtilization1Min OBJECT-TYPE
+ SYNTAX Percent
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "This is the memory pool utilization for 1 minute."
+ ::= { ciscoMemoryPoolUtilizationEntry 1 }
+
+ciscoMemoryPoolUtilization5Min OBJECT-TYPE
+ SYNTAX Percent
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "This is the memory pool utilization for 5 minutes."
+ ::= { ciscoMemoryPoolUtilizationEntry 2 }
+
+ciscoMemoryPoolUtilization10Min OBJECT-TYPE
+ SYNTAX Percent
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "This is the memory pool utilization for 10 minutes."
+ ::= { ciscoMemoryPoolUtilizationEntry 3 }
+
+-- notifications
+
+ciscoMemoryPoolNotifications
+ OBJECT IDENTIFIER ::= { ciscoMemoryPoolMIB 2 }
+
+-- (no notifications are currently defined)
+
+
+-- conformance information
+
+ciscoMemoryPoolConformance
+ OBJECT IDENTIFIER ::= { ciscoMemoryPoolMIB 3 }
+ciscoMemoryPoolCompliances
+ OBJECT IDENTIFIER ::= { ciscoMemoryPoolConformance 1 }
+ciscoMemoryPoolGroups
+ OBJECT IDENTIFIER ::= { ciscoMemoryPoolConformance 2 }
+
+
+-- compliance statements
+
+ciscoMemoryPoolCompliance MODULE-COMPLIANCE
+ STATUS deprecated -- superceded by ciscoMemoryPoolComplianceRev1
+ DESCRIPTION
+ "The compliance statement for entities which implement
+ the Cisco Memory Pool MIB"
+ MODULE -- this module
+ MANDATORY-GROUPS { ciscoMemoryPoolGroup }
+ ::= { ciscoMemoryPoolCompliances 1 }
+
+ciscoMemoryPoolComplianceRev1 MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION
+ "The compliance statement for entities which implement
+ the Cisco Memory Pool MIB"
+ MODULE -- this module
+ MANDATORY-GROUPS { ciscoMemoryPoolGroup }
+
+ GROUP ciscoMemoryPoolUtilizationGroup
+ DESCRIPTION
+ "Per memory pool utilization statistics is mandatory for
+ the managed system that supports memory pool utilization."
+ ::= { ciscoMemoryPoolCompliances 2 }
+
+
+-- units of conformance
+
+ciscoMemoryPoolGroup OBJECT-GROUP
+ OBJECTS {
+ ciscoMemoryPoolName,
+ ciscoMemoryPoolAlternate,
+ ciscoMemoryPoolValid,
+ ciscoMemoryPoolUsed,
+ ciscoMemoryPoolFree,
+ ciscoMemoryPoolLargestFree
+ }
+ STATUS current
+ DESCRIPTION
+ "A collection of objects providing memory pool monitoring."
+ ::= { ciscoMemoryPoolGroups 1 }
+
+ciscoMemoryPoolUtilizationGroup OBJECT-GROUP
+ OBJECTS {
+ ciscoMemoryPoolUtilization1Min,
+ ciscoMemoryPoolUtilization5Min,
+ ciscoMemoryPoolUtilization10Min
+ }
+ STATUS current
+ DESCRIPTION
+ "An optional group providing a collection of memory pool
+ utilization objects."
+ ::= { ciscoMemoryPoolGroups 2 }
+
+
+END
diff --git a/mibs/CISCO-QOS-PIB-MIB.my b/mibs/CISCO-QOS-PIB-MIB.my
new file mode 100644
index 000000000..bdf7d0bf3
--- /dev/null
+++ b/mibs/CISCO-QOS-PIB-MIB.my
@@ -0,0 +1,2022 @@
+CISCO-QOS-PIB-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY,
+ OBJECT-TYPE,
+ Counter64,
+ Unsigned32,
+ IpAddress
+ FROM SNMPv2-SMI
+
+ MODULE-COMPLIANCE,
+ OBJECT-GROUP
+ FROM SNMPv2-CONF
+
+ TEXTUAL-CONVENTION,
+ DisplayString,
+ MacAddress,
+ TruthValue
+ FROM SNMPv2-TC
+
+
+ ciscoPibToMib
+ FROM CISCO-SMI
+ ;
+
+ciscoQosPIBMIB MODULE-IDENTITY
+ LAST-UPDATED "200708290000Z"
+ ORGANIZATION "Cisco Systems Inc."
+ CONTACT-INFO
+ "Cisco Systems
+ Customer Service
+
+ Postal: 170 W Tasman Drive
+ San Jose, CA 95134
+ USA
+
+ Tel: +1 800 553-NETS
+
+ E-mail: cs-wbu@cisco.com"
+ DESCRIPTION
+ "The Cisco QOS Policy PIB for provisioning QOS policy."
+ REVISION "200708290000Z"
+ DESCRIPTION
+ "Add new enum values in QosInterfaceQueueType
+ textual convention for various queue type."
+ REVISION "200405030000Z"
+ DESCRIPTION
+ "Add new enum value in QosInterfaceQueueType
+ textual convention for 1p3q8t queue type."
+ REVISION "200302210000Z"
+ DESCRIPTION
+ "Add new enum values in QosInterfaceQueueType
+ textual convention to indicate queue types
+ containing priority queue. Add new enum value
+ in ThresholdSetRange textual convention for
+ zero threshold."
+ REVISION "200205020000Z"
+ DESCRIPTION
+ "Fix the SYNTAX of Role and RoleCombination."
+ REVISION "200006160000Z"
+ DESCRIPTION
+ "Added QosInterfaceTypeCapabilities textual convention."
+ REVISION "200005110000Z"
+ DESCRIPTION
+ "Initial version of this PIB module."
+ ::= { ciscoPibToMib 1 }
+
+-- New textual conventions
+--
+
+-- DiffServ Codepoint
+--
+Dscp ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An integer that is in the range of the DiffServ codepoint
+ values."
+ SYNTAX INTEGER (0..63)
+
+-- Layer 2 CoS
+--
+QosLayer2Cos ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An integer that is in the range of the layer 2 CoS values.
+ This corresponds to the 802.1p and ISL CoS values."
+ SYNTAX INTEGER (0..7)
+
+-- Supported Queues
+--
+QueueRange ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An integer that is limited to the number of queues per
+ interface supported by the PIB. Limited to 64 which is the
+ number of codepoints."
+ SYNTAX INTEGER {
+ oneQ(1), twoQ(2), threeQ(3), fourQ(4),
+ eightQ(8), sixteenQ(16), thirtyTwoQ(32), sixtyFourQ(64)
+ }
+
+-- Supported Thresholds
+--
+ThresholdSetRange ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An integer that is limited to the number of threshold sets
+ per queue supported by the PIB. A threshold set is a
+ collection of parameters describing queue threshold. The
+ parameters of a threshold set depend on the drop mechanism the
+ queue implements. For example, the threshold set for
+ tail-drop comprises a single parameter, the percentage of
+ queue size at which dropping occurs. The threshold set for
+ WRED comprises two parameters; within the range of the two
+ parameters packets are randomly dropped."
+ SYNTAX INTEGER {
+ zeroT(0), oneT(1), twoT(2), fourT(4), eightT(8)
+ }
+
+-- Percentage for thresholds, etc.
+--
+Percent ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An integer that is in the range of a percent value."
+ SYNTAX INTEGER (0..100)
+
+-- Interface types
+--
+QosInterfaceQueueType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An enumerated type for all the known interface types. The
+ interface types are currently limited to a predefined
+ combination of queues and thresholds such that the product of
+ queues and thresholds does not exceed 64 (i.e., the total
+ number of DSCPs."
+ SYNTAX INTEGER {
+ oneQ1t(1), oneQ2t(2), oneQ4t(3), oneQ8t(4),
+ twoQ1t(5), twoQ2t(6), twoQ4t(7), twoQ8t(8),
+ threeQ1t(9), threeQ2t(10), threeQ4t(11), threeQ8t(12),
+ fourQ1t(13), fourQ2t(14), fourQ4t(15), fourQ8t(16),
+ eightQ1t(17), eightQ2t(18), eightQ4t(19), eightQ8t(20),
+ sixteenQ1t(21), sixteenQ2t(22), sixteenQ4t(23),
+ sixtyfourQ1t(24), sixtyfourQ2t(25), sixtyfourQ4t(26),
+ oneP1Q0t(27), oneP1Q4t(28), oneP1Q8t(29), oneP2Q1t(30),
+ oneP2Q2t(31), oneP3Q1t(32), oneP7Q8t(33), oneP3Q8t(34),
+ sixteenQ8t(35), oneP15Q8t(36), oneP15Q1t(37), oneP7Q1t(38),
+ oneP31Q1t(39), thirtytwoQ1t(40), thirtytwoQ8t(41),
+ oneP31Q8t(42), oneP7Q4t(43), oneP3Q4t(44), oneP7Q2t(45)
+ }
+
+QosInterfaceTypeCapabilities ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An enumeration of interface capabilities. Used by the PDP to
+ select policies and configuration to push to the PEP."
+ SYNTAX BITS {
+ unspecified (0),
+
+ -- Classification support
+ inputL2Classification (1), inputIpClassification (2),
+ outputL2Classification (3), outputIpClassification (4),
+ inputPortClassification (19), outputPortClassification (20),
+
+ -- Policing support
+ inputUflowPolicing (5), inputAggregatePolicing (6),
+ outputUflowPolicing (7), outputAggregatePolicing (8),
+ policeByMarkingDown (9), policeByDropping (10),
+ inputUflowShaping (21), inputAggregateShaping (22),
+ outputUflowShaping (23), outputAggregateShaping (24),
+
+ -- Supported scheduling mechanisms
+ fifo (11), wrr (12), wfq (13), cq (14), pq (15), cbwfq (16),
+ pqWrr (25), pqCbwfq (26),
+
+ -- Supported congestion control mechanisms
+ tailDrop (17), wred (18)
+ }
+
+-- Role
+--
+-- This TC is commented out since it is not actually used in this
+-- PIB. Nevertheless, the size and character restrictions must still
+-- be enforced
+--
+-- Role ::= TEXTUAL-CONVENTION
+-- STATUS current
+-- DESCRIPTION
+-- "A display string where valid letters are a-z, A-Z, 0-9,
+-- ., - and _. Name can not start with an '_'.
+-- SYNTAX OCTET STRING (SIZE (1..31))
+
+-- Role Combination
+--
+RoleCombination ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "A Display string consisting of a set of roles concatenated
+ with a '+' character where the roles are in lexicographic
+ order from minimum to maximum."
+ SYNTAX OCTET STRING (SIZE (0..255))
+
+-- Policy Instance Index
+--
+PolicyInstanceId ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "A textual convention for an attribute that is an an
+ unsigned integer index attribute of class. It is used for
+ attributes that exist for the purpose of providing an integer
+ index of an instance.
+
+ For any integer index that refers to another policy instance,
+ that other policy instance must exist. Furthermore, it is an
+ error to try to delete a policy instance that is referred to by
+ another instance without first deleting the referring
+ instance."
+ SYNTAX Unsigned32
+
+-- Unsigned 64 bit integer
+--
+Unsigned64 ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "An unsigned 64 bit integer. We use SYNTAX Counter64 for the
+ enconding rules."
+ SYNTAX Counter64
+
+--
+-- Object identifier for conformance statements
+--
+
+qosPIBConformance OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 1 }
+
+--
+-- Device Config.
+--
+
+-- This group contains device configuration information. This
+-- configuration is either set by management or reflects the physical
+-- configuration of the device. This configuration is generally
+-- reported to the PDP (i.e., the policy server so that the PDP can
+-- determine what policies to download to the PEP (i.e., the device).
+
+qosDeviceConfig OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 2 }
+
+qosDevicePibIncarnationTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosDevicePibIncarnationEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "This class contains a single policy instance that identifies
+ the current incarnation of the PIB and the PDP that installed
+ this incarnation. The instance of this class is reported to
+ the PDP at client connect time so that the PDP can (attempt
+ to) ascertain the current state of the PIB."
+ ::= { qosDeviceConfig 1 }
+
+qosDevicePibIncarnationEntry OBJECT-TYPE
+ SYNTAX QosDevicePibIncarnationEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The single policy instance of this class identifies the
+ current incarnation of the PIB and the PDP that installed
+ this incarnation."
+ INDEX { qosDeviceIncarnationId }
+ ::= { qosDevicePibIncarnationTable 1 }
+
+QosDevicePibIncarnationEntry ::= SEQUENCE {
+ qosDeviceIncarnationId PolicyInstanceId,
+ qosDevicePdpName DisplayString,
+ qosDevicePibIncarnation OCTET STRING,
+ qosDevicePibTtl Unsigned32
+ }
+
+qosDeviceIncarnationId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosDevicePibIncarnationEntry 1 }
+
+qosDevicePdpName OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The name of the PDP that installed the current incarnation of
+ the PIB into the device. By default it is the zero length
+ string."
+ ::= { qosDevicePibIncarnationEntry 2 }
+
+qosDevicePibIncarnation OBJECT-TYPE
+ SYNTAX OCTET STRING (SIZE (128))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An octet string to identify the current incarnation. It has
+ meaning to the PDP that installed the PIB and perhaps its
+ standby PDPs. By default the empty string."
+ ::= { qosDevicePibIncarnationEntry 3 }
+
+qosDevicePibTtl OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The number of seconds after a client close or TCP timeout for
+ which the PEP continues to enforce the policy in the PIB.
+ After this interval, the PIB is consired expired and the
+ device no longer enforces the policy installed in the PIB."
+ ::= { qosDevicePibIncarnationEntry 4 }
+
+qosDeviceAttributeTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosDeviceAttributeEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The single instance of this class indicates specific
+ attributes of the device. These include configuration values
+ such as the configured PDP addresses, the maximum message
+ size, and specific device capabilities. The latter include
+ input port-based and output port-based classification and/or
+ policing, support for flow based policing, aggregate based
+ policing, traffic shaping capabilities, etc."
+ ::= { qosDeviceConfig 2 }
+
+qosDeviceAttributeEntry OBJECT-TYPE
+ SYNTAX QosDeviceAttributeEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The single instance of this class indicates specific
+ attributes of the device."
+ INDEX { qosDeviceAttributeId }
+ ::= { qosDeviceAttributeTable 1 }
+
+QosDeviceAttributeEntry ::= SEQUENCE {
+ qosDeviceAttributeId PolicyInstanceId,
+ qosDevicePepDomain DisplayString,
+ qosDevicePrimaryPdp IpAddress,
+ qosDeviceSecondaryPdp IpAddress,
+ qosDeviceMaxMessageSize Unsigned32,
+ qosDeviceCapabilities BITS
+ }
+
+qosDeviceAttributeId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosDeviceAttributeEntry 1 }
+
+qosDevicePepDomain OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The QoS domain that this device belongs to. This is
+ configured locally on the device (perhaps by some management
+ protocol such as SNMP). By default, it is the zero-length
+ string."
+ ::= { qosDeviceAttributeEntry 2 }
+
+qosDevicePrimaryPdp OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The address of the PDP configured to be the primary PDP for
+ the device."
+ ::= { qosDeviceAttributeEntry 3 }
+
+qosDeviceSecondaryPdp OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The address of the PDP configured to be the secondary PDP for
+ the device. An address of zero indicates no secondary is
+ configured."
+ ::= { qosDeviceAttributeEntry 4 }
+
+qosDeviceMaxMessageSize OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The maximum size message that this PEP is capable of
+ receiving in bytes. A value of zero means that the maximum
+ message size is unspecified (but does not mean it is
+ unlimited). A message greater than this maximum results in a
+ MessageTooBig error on a 'no commit' REP."
+ ::= { qosDeviceAttributeEntry 5 }
+
+qosDeviceCapabilities OBJECT-TYPE
+ SYNTAX BITS {
+ unspecified (0),
+
+ -- QoS labels supported
+ layer2Cos (1), ipPrecedence (2), dscp (3)
+ }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An enumeration of device capabilities. Used by the PDP to
+ select policies and configuration to push to the PEP."
+ ::= { qosDeviceAttributeEntry 6 }
+
+qosInterfaceTypeTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosInterfaceTypeEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "This class describes the interface types of the interfaces
+ that exist on the device. It includes the queue type, role
+ combination and capabilities of interfaces. The PEP does not
+ report which specific interfaces have which characteristics."
+ ::= { qosDeviceConfig 3 }
+
+qosInterfaceTypeEntry OBJECT-TYPE
+ SYNTAX QosInterfaceTypeEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class describes a role combination for
+ an interface type of an interface that exists on the device."
+ INDEX { qosInterfaceTypeId }
+ ::= { qosInterfaceTypeTable 1 }
+
+QosInterfaceTypeEntry ::= SEQUENCE {
+ qosInterfaceTypeId PolicyInstanceId,
+ qosInterfaceQueueType QosInterfaceQueueType,
+ qosInterfaceTypeRoles RoleCombination,
+ qosInterfaceTypeCapabilities QosInterfaceTypeCapabilities
+ }
+
+qosInterfaceTypeId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosInterfaceTypeEntry 1 }
+
+qosInterfaceQueueType OBJECT-TYPE
+ SYNTAX QosInterfaceQueueType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The interface type in terms of number of queues and
+ thresholds."
+ ::= { qosInterfaceTypeEntry 2 }
+
+qosInterfaceTypeRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "A combination of roles on at least one interface of type
+ qosInterfaceType."
+ ::= { qosInterfaceTypeEntry 3 }
+
+qosInterfaceTypeCapabilities OBJECT-TYPE
+ SYNTAX QosInterfaceTypeCapabilities
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An enumeration of interface capabilities. Used by the PDP to
+ select policies and configuration to push to the PEP."
+ ::= { qosInterfaceTypeEntry 4 }
+
+--
+-- General Config for the entire domain.
+--
+
+-- Table of DiffServ codepoint mappings
+-- Maps DSCP to marked-down DSCP, IP precedence and CoS
+
+qosDomainConfig OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 3 }
+
+qosDiffServMappingTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosDiffServMappingEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Maps each DSCP to a marked-down DSCP. Also maps each DSCP to
+ an IP precedence and QosLayer2Cos. When configured for the
+ first time, all 64 entries of the table must be
+ specified. Thereafter, instances may be modified (with a
+ delete and install in a single decision) but not deleted
+ unless all instances are deleted."
+ ::= { qosDomainConfig 1 }
+
+qosDiffServMappingEntry OBJECT-TYPE
+ SYNTAX QosDiffServMappingEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class represents mappings from a DSCP."
+ INDEX { qosDscp }
+ ::= { qosDiffServMappingTable 1 }
+
+QosDiffServMappingEntry ::= SEQUENCE {
+ qosDscp Dscp,
+ qosMarkedDscp Dscp,
+ qosL2Cos QosLayer2Cos
+ }
+
+qosDscp OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A DSCP for which this entry contains mappings."
+ ::= { qosDiffServMappingEntry 1 }
+
+qosMarkedDscp OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The DSCP to use instead of the qosDscp when the packet is out
+ of profile and hence marked as such."
+ ::= { qosDiffServMappingEntry 2 }
+
+qosL2Cos OBJECT-TYPE
+ SYNTAX QosLayer2Cos
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The L2 CoS value to use when mapping this DSCP to layer 2
+ CoS."
+ ::= { qosDiffServMappingEntry 3 }
+
+-- Table of Layer 2 CoS to DSCP mappings
+--
+
+qosCosToDscpTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosCosToDscpEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Maps each of eight CoS values to a DSCP. When configured for
+ the first time, all 8 entries of the table must be
+ specified. Thereafter, instances may be modified (with a
+ delete and install in a single decision) but not deleted
+ unless all instances are deleted."
+ ::= { qosDomainConfig 2 }
+
+qosCosToDscpEntry OBJECT-TYPE
+ SYNTAX QosCosToDscpEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class maps a CoS value to a DSCP."
+ INDEX { qosCosToDscpCos }
+ ::= { qosCosToDscpTable 1 }
+
+QosCosToDscpEntry ::= SEQUENCE {
+ qosCosToDscpCos QosLayer2Cos,
+ qosCosToDscpDscp Dscp
+ }
+
+qosCosToDscpCos OBJECT-TYPE
+ SYNTAX QosLayer2Cos
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The L2 CoS value that is being mapped."
+ ::= { qosCosToDscpEntry 1 }
+
+qosCosToDscpDscp OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The DSCP value to use when mapping the L2 CoS to a DSCP."
+ ::= { qosCosToDscpEntry 2 }
+
+--
+-- The Unmatched Policy Table
+--
+
+-- This group specifies the policy to apply to an interface for a
+-- given role combination where no other policy matches. More
+-- specifically, the unmatched policy is what is applied to non-IP
+-- packets for which there is no MAC classification, or what is
+-- applied to IP packets that do not match any ACE in any ACL applied
+-- to the interface.
+
+qosUnmatchedPolicy OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 4 }
+
+qosUnmatchedPolicyTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosUnmatchedPolicyEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A policy class that specifies what QoS to apply to a packet
+ that does not match any other policy configured for this role
+ combination for a particular direction of traffic."
+ ::= { qosUnmatchedPolicy 1 }
+
+qosUnmatchedPolicyEntry OBJECT-TYPE
+ SYNTAX QosUnmatchedPolicyEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies the unmatched policy
+ for a particular role combination for incoming or outgoing
+ traffic."
+ INDEX { qosUnmatchedPolicyId }
+ ::= { qosUnmatchedPolicyTable 1 }
+
+QosUnmatchedPolicyEntry ::= SEQUENCE {
+ qosUnmatchedPolicyId PolicyInstanceId,
+ qosUnmatchedPolicyRole RoleCombination,
+ qosUnmatchedPolicyDirection INTEGER,
+ qosUnmatchedPolicyDscp Dscp,
+ qosUnmatchedPolicyDscpTrusted TruthValue,
+ qosUnmatchPolMicroFlowPolicerId PolicyInstanceId,
+ qosUnmatchedPolicyAggregateId PolicyInstanceId
+ }
+
+qosUnmatchedPolicyId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosUnmatchedPolicyEntry 1 }
+
+qosUnmatchedPolicyRole OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Role combination for which this instance applies."
+ ::= { qosUnmatchedPolicyEntry 2 }
+
+qosUnmatchedPolicyDirection OBJECT-TYPE
+ SYNTAX INTEGER { in(0), out(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The direction of packet flow at the interface in question to
+ which this instance applies."
+ ::= { qosUnmatchedPolicyEntry 3 }
+
+qosUnmatchedPolicyDscp OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The DSCP to classify the unmatched packet with. This must be
+ specified even if qosUnmatchedPolicyDscpTrusted is true."
+ ::= { qosUnmatchedPolicyEntry 4 }
+
+qosUnmatchedPolicyDscpTrusted OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "If this attribute is true, then the Dscp associated with the
+ packet is trusted, i.e., it is assumed to have already been
+ set. In this case, the Dscp is not rewritten with
+ qosUnmatchedPolicyDscp (qosUnmatchedPolicyDscp is ignored)
+ unless this is a non-IP packet and arrives untagged. The
+ packet is still policed as part of its micro flow and its
+ aggregate flow.
+
+ When a trusted action is applied to an input interface, the
+ Dscp (for an IP packet) or CoS (for a non-IP packet)
+ associated with the packet is the one contained in the packet.
+ When a trusted action is applied to an output interface, the
+ Dscp associated with the packet is the one that is the result
+ of the input classification and policing."
+ ::= { qosUnmatchedPolicyEntry 5 }
+
+qosUnmatchPolMicroFlowPolicerId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An index identifying the instance of policer to apply to
+ unmatched packets. It must correspond to the integer index of
+ an instance of class qosPolicerTable or be zero. If zero, the
+ microflow is not policed."
+ ::= { qosUnmatchedPolicyEntry 6 }
+
+qosUnmatchedPolicyAggregateId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An index identifying the aggregate that the packet belongs
+ to. It must correspond to the integer index of an instance of
+ class qosAggregateTable or be zero. If zero, the microflow
+ does not belong to any aggregate and is not policed as part of
+ any aggregate."
+ ::= { qosUnmatchedPolicyEntry 7 }
+
+--
+-- The Policer Group
+--
+
+-- This group specifies policer parameters that can then be used by
+-- other groups such as the IP ACL Actions, or the unmatched policy.
+-- This group also defines aggregates that flows can then be assigned
+-- to.
+
+qosPolicer OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 5 }
+
+-- The Policer Definition Table
+--
+
+qosPolicerTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosPolicerEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class specifying policing parameters for both microflows
+ and aggregate flows. This table is designed for policing
+ according to a token bucket scheme where an average rate and
+ burst size is specified."
+ ::= { qosPolicer 1 }
+
+qosPolicerEntry OBJECT-TYPE
+ SYNTAX QosPolicerEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies a set of policing
+ parameters."
+ INDEX { qosPolicerId }
+ ::= { qosPolicerTable 1 }
+
+QosPolicerEntry ::= SEQUENCE {
+ qosPolicerId PolicyInstanceId,
+ qosPolicerRate Unsigned64,
+ qosPolicerNormalBurst Unsigned32,
+ qosPolicerExcessBurst Unsigned32,
+ qosPolicerAction INTEGER
+ }
+
+qosPolicerId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosPolicerEntry 1 }
+
+qosPolicerRate OBJECT-TYPE
+ SYNTAX Unsigned64
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The token rate. It is specified in units of bit/s. A rate of
+ zero means that all packets will be out of profile. If the
+ qosPolicerAction is set to drop then this effectively
+ denies any service to packets policed by this policer."
+ ::= { qosPolicerEntry 2 }
+
+qosPolicerNormalBurst OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The normal size of a burst in terms of bits."
+ ::= { qosPolicerEntry 3 }
+
+qosPolicerExcessBurst OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The excess size of a burst in terms of bits."
+ ::= { qosPolicerEntry 4 }
+
+qosPolicerAction OBJECT-TYPE
+ SYNTAX INTEGER { drop(0), mark(1), shape(2) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An indication of how to handle out of profile packets. When
+ the shape action is chosen then traffic is shaped to the rate
+ specified by qosPolicerRate."
+ ::= { qosPolicerEntry 5 }
+
+-- The Aggregate Table
+--
+
+qosAggregateTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosAggregateEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Instances of this class identify aggregate flows and the
+ policer to apply to each."
+ ::= { qosPolicer 2 }
+
+qosAggregateEntry OBJECT-TYPE
+ SYNTAX QosAggregateEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies the policer to apply to
+ an aggregate flow."
+ INDEX { qosAggregateId }
+ ::= { qosAggregateTable 1 }
+
+QosAggregateEntry ::= SEQUENCE {
+ qosAggregateId PolicyInstanceId,
+ qosAggregatePolicerId PolicyInstanceId
+ }
+
+qosAggregateId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosAggregateEntry 1 }
+
+qosAggregatePolicerId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An index identifying the instance of policer to apply to the
+ aggregate. It must correspond to the integer index of an
+ instance of class qosPolicerTable."
+ ::= { qosAggregateEntry 2 }
+
+--
+-- MAC DA Classification Group
+--
+
+-- This group determines the CoS to assign to a MAC frame on the
+-- basis of the destination MAC address. There is no provision for
+-- policing or rate limiting at layer 2.
+
+qosMacQos OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 6 }
+
+qosMacClassificationTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosMacClassificationEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class of MAC/Vlan tuples and their associated CoS values."
+ ::= { qosMacQos 1 }
+
+qosMacClassificationEntry OBJECT-TYPE
+ SYNTAX QosMacClassificationEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies the mapping of a VLAN
+ and a MAC address to a CoS value."
+ INDEX { qosMacClassificationId }
+ ::= { qosMacClassificationTable 1 }
+
+QosMacClassificationEntry ::= SEQUENCE {
+ qosMacClassificationId PolicyInstanceId,
+ qosDstMacVlan INTEGER,
+ qosDstMacAddress MacAddress,
+ qosDstMacCos QosLayer2Cos
+ }
+
+qosMacClassificationId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosMacClassificationEntry 1 }
+
+qosDstMacVlan OBJECT-TYPE
+ SYNTAX INTEGER (1..4095)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The VLAN of the destination MAC address of the L2 frame."
+ ::= { qosMacClassificationEntry 2 }
+
+qosDstMacAddress OBJECT-TYPE
+ SYNTAX MacAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The destination MAC address of the L2 frame."
+ ::= { qosMacClassificationEntry 3 }
+
+qosDstMacCos OBJECT-TYPE
+ SYNTAX QosLayer2Cos
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The CoS to assign the packet with the associated MAC/VLAN
+ tuple. Note that this CoS is overridden by the policies to
+ classify the frame at layer 3 if there are any."
+ ::= { qosMacClassificationEntry 4 }
+
+--
+-- The IP Classification and Policing Group
+--
+
+qosIpQos OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 7 }
+
+-- The ACE Table
+--
+
+qosIpAceTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIpAceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "ACE definitions."
+ ::= { qosIpQos 1 }
+
+qosIpAceEntry OBJECT-TYPE
+ SYNTAX QosIpAceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies an ACE."
+ INDEX { qosIpAceId }
+ ::= { qosIpAceTable 1 }
+
+QosIpAceEntry ::= SEQUENCE {
+ qosIpAceId PolicyInstanceId,
+ qosIpAceDstAddr IpAddress,
+ qosIpAceDstAddrMask IpAddress,
+ qosIpAceSrcAddr IpAddress,
+ qosIpAceSrcAddrMask IpAddress,
+ qosIpAceDscpMin Dscp,
+ qosIpAceDscpMax Dscp,
+ qosIpAceProtocol INTEGER,
+ qosIpAceDstL4PortMin INTEGER,
+ qosIpAceDstL4PortMax INTEGER,
+ qosIpAceSrcL4PortMin INTEGER,
+ qosIpAceSrcL4PortMax INTEGER,
+ qosIpAcePermit TruthValue
+ }
+
+qosIpAceId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIpAceEntry 1 }
+
+qosIpAceDstAddr OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The IP address to match against the packet's destination IP
+ address."
+ ::= { qosIpAceEntry 2 }
+
+qosIpAceDstAddrMask OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "A mask for the matching of the destination IP address."
+ ::= { qosIpAceEntry 3 }
+
+qosIpAceSrcAddr OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The IP address to match against the packet's source IP
+ address."
+ ::= { qosIpAceEntry 4 }
+
+qosIpAceSrcAddrMask OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "A mask for the matching of the source IP address."
+ ::= { qosIpAceEntry 5 }
+
+qosIpAceDscpMin OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The minimum value that the DSCP in the packet can have and
+ match this ACE."
+ ::= { qosIpAceEntry 6 }
+
+qosIpAceDscpMax OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The maximum value that the DSCP in the packet can have and
+ match this ACE."
+ ::= { qosIpAceEntry 7 }
+
+qosIpAceProtocol OBJECT-TYPE
+ SYNTAX INTEGER (0..255)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The IP protocol to match against the packet's protocol.
+ A value of zero means match all."
+ ::= { qosIpAceEntry 8 }
+
+qosIpAceDstL4PortMin OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The minimum value that the packet's layer 4 dest port number
+ can have and match this ACE."
+ ::= { qosIpAceEntry 9 }
+
+qosIpAceDstL4PortMax OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The maximum value that the packet's layer 4 dest port number
+ can have and match this ACE."
+ ::= { qosIpAceEntry 10 }
+
+qosIpAceSrcL4PortMin OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The minimum value that the packet's layer 4 source port
+ number can have and match this ACE."
+ ::= { qosIpAceEntry 11 }
+
+qosIpAceSrcL4PortMax OBJECT-TYPE
+ SYNTAX INTEGER (0..65535)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The maximum value that the packet's layer 4 source port
+ number can have and match this ACE."
+ ::= { qosIpAceEntry 12 }
+
+qosIpAcePermit OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "If the packet matches this ACE and the value of this attribute
+ is true, then the matching process terminates and the QoS
+ associated with this ACE (indirectly through the ACL) is
+ applied to the packet. If the value of this attribute is false,
+ then no more ACEs in this ACL are compared to this packet and
+ matching continues with the first ACE of the next ACL."
+ ::= { qosIpAceEntry 13 }
+
+-- The ACL Definition Table
+--
+
+qosIpAclDefinitionTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIpAclDefinitionEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class that defines a set of ACLs each being an ordered list
+ of ACEs."
+ ::= { qosIpQos 2 }
+
+qosIpAclDefinitionEntry OBJECT-TYPE
+ SYNTAX QosIpAclDefinitionEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies an ACE in an ACL and its
+ order with respect to other ACEs in the same ACL."
+ INDEX { qosIpAclDefinitionId }
+ ::= { qosIpAclDefinitionTable 1 }
+
+QosIpAclDefinitionEntry ::= SEQUENCE {
+ qosIpAclDefinitionId PolicyInstanceId,
+ qosIpAclId PolicyInstanceId,
+ qosIpAceOrder Unsigned32,
+ qosIpAclDefAceId PolicyInstanceId
+ }
+
+qosIpAclDefinitionId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIpAclDefinitionEntry 1 }
+
+qosIpAclId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An index for this ACL. There will be one instance of
+ policy class qosIpAclDefinition with this integer index for
+ each ACE in the ACL per role combination."
+ ::= { qosIpAclDefinitionEntry 2 }
+
+qosIpAceOrder OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An integer that determines the position of this ACE in the ACL.
+ An ACE with a given order is positioned in the access contol
+ list before one with a higher order."
+ ::= { qosIpAclDefinitionEntry 3 }
+
+qosIpAclDefAceId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "This attribute specifies the ACE in the qosIpAceTable that is
+ in the ACL specified by qosIpAclId at the position specified
+ by qosIpAceOrder."
+ ::= { qosIpAclDefinitionEntry 4 }
+
+-- The ACL Action Table
+--
+
+qosIpAclActionTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIpAclActionEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class that applies a set of ACLs to interfaces specifying,
+ for each interface the order of the ACL with respect to other
+ ACLs applied to the same interface and, for each ACL the
+ action to take for a packet that matches a permit ACE in that
+ ACL. Interfaces are specified abstractly in terms of
+ interface role combinations."
+ ::= { qosIpQos 3 }
+
+qosIpAclActionEntry OBJECT-TYPE
+ SYNTAX QosIpAclActionEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class applies an ACL to traffic in a
+ particular direction on an interface with a particular role
+ combination, and specifies the action for packets which match
+ the ACL."
+ INDEX { qosIpAclActionId }
+ ::= { qosIpAclActionTable 1 }
+
+QosIpAclActionEntry ::= SEQUENCE {
+ qosIpAclActionId PolicyInstanceId,
+ qosIpAclActAclId PolicyInstanceId,
+ qosIpAclInterfaceRoles RoleCombination,
+ qosIpAclInterfaceDirection INTEGER,
+ qosIpAclOrder Unsigned32,
+ qosIpAclDscp Dscp,
+ qosIpAclDscpTrusted TruthValue,
+ qosIpAclMicroFlowPolicerId PolicyInstanceId,
+ qosIpAclAggregateId PolicyInstanceId
+ }
+
+qosIpAclActionId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIpAclActionEntry 1 }
+
+qosIpAclActAclId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The ACL associated with this action."
+ ::= { qosIpAclActionEntry 2 }
+
+qosIpAclInterfaceRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The interfaces to which this ACL applies specified in terms
+ of a set of roles."
+ ::= { qosIpAclActionEntry 3 }
+
+qosIpAclInterfaceDirection OBJECT-TYPE
+ SYNTAX INTEGER { in(0), out(1) }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The direction of packet flow at the interface in question to
+ which this ACL applies."
+ ::= { qosIpAclActionEntry 4 }
+
+qosIpAclOrder OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An integer that determines the order of this ACL in the list
+ of ACLs applied to interfaces of the specified role
+ combination. An ACL with a given order is positioned in the
+ list before one with a higher order."
+ ::= { qosIpAclActionEntry 5 }
+
+qosIpAclDscp OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The DSCP to classify the packet with in the event that the
+ packet matches an ACE in this ACL and the ACE is a permit."
+ ::= { qosIpAclActionEntry 6 }
+
+qosIpAclDscpTrusted OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "If this attribute is true, then the Dscp associated with
+ the packet is trusted, i.e., it is assumed to have already
+ been set. In this case, the Dscp is not rewritten with
+ qosIpAclDscp (qosIpAclDscp is ignored). The packet is still
+ policed as part of its micro flow and its aggregate flow.
+
+ When a trusted action is applied to an input interface, the
+ Dscp associated with the packet is the one contained in the
+ packet. When a trusted action is applied to an output
+ interface, the Dscp associated with the packet is the one that
+ is the result of the input classification and policing."
+ ::= { qosIpAclActionEntry 7 }
+
+qosIpAclMicroFlowPolicerId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An index identifying the instance of policer to apply to the
+ microflow. It must correspond to the integer index of an
+ instance of class qosPolicerTableor be zero. If zero, the
+ microflow is not policed."
+ ::= { qosIpAclActionEntry 8 }
+
+qosIpAclAggregateId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An index identifying the aggregate that the packet belongs
+ to. It must correspond to the integer index of an instance of
+ class qosAggregateTable or be zero. If zero, the microflow
+ does not belong to any aggregate and is not policed as part of
+ any aggregate."
+ ::= { qosIpAclActionEntry 9 }
+
+--
+-- QoS Interface Group
+--
+
+-- This group specifies the configuration of the various interface
+-- types including the setting of thresholds, queueing parameters,
+-- mapping of DSCPs to queues and thresholds, etc.
+
+qosIfParameters OBJECT IDENTIFIER ::= { ciscoQosPIBMIB 8 }
+
+-- Table of scheduling discipline preferences
+--
+
+qosIfSchedulingPreferencesTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIfSchedulingPreferenceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "This class specifies the scheduling preference an interface
+ chooses if it supports multiple scheduling types. Higher
+ values are preferred over lower values."
+ ::= { qosIfParameters 1 }
+
+qosIfSchedulingPreferenceEntry OBJECT-TYPE
+ SYNTAX QosIfSchedulingPreferenceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies a scheduling preference
+ for a queue-type on an interface with a particular role
+ combination."
+ INDEX { qosIfSchedulingPreferenceId }
+ ::= { qosIfSchedulingPreferencesTable 1 }
+
+QosIfSchedulingPreferenceEntry ::= SEQUENCE {
+ qosIfSchedulingPreferenceId PolicyInstanceId,
+ qosIfSchedulingRoles RoleCombination,
+ qosIfSchedulingPreference INTEGER,
+ qosIfSchedulingDiscipline INTEGER,
+ qosIfSchedulingQueueType QosInterfaceQueueType
+ }
+
+qosIfSchedulingPreferenceId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIfSchedulingPreferenceEntry 1 }
+
+qosIfSchedulingRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The combination of roles the interface must have for this
+ policy instance to apply to that interface."
+ ::= { qosIfSchedulingPreferenceEntry 2 }
+
+qosIfSchedulingPreference OBJECT-TYPE
+ SYNTAX INTEGER (1..16)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The preference to use this scheduling discipline and queue
+ type. A higher value means a higher preference. If two
+ disciplines have the same preference the choice is a local
+ decision."
+ ::= { qosIfSchedulingPreferenceEntry 3 }
+
+qosIfSchedulingDiscipline OBJECT-TYPE
+ SYNTAX INTEGER {
+ weightedFairQueueing (1),
+ weightedRoundRobin (2),
+ customQueueing (3),
+ priorityQueueing (4),
+ classBasedWFQ (5),
+ fifo (6),
+ pqWrr (7),
+ pqCbwfq (8)
+ }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An enumerate type for all the known scheduling disciplines."
+ ::= { qosIfSchedulingPreferenceEntry 4 }
+
+qosIfSchedulingQueueType OBJECT-TYPE
+ SYNTAX QosInterfaceQueueType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The queue type of this preference."
+ ::= { qosIfSchedulingPreferenceEntry 5 }
+
+-- Table of drop mechanism preferences
+--
+
+qosIfDropPreferenceTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIfDropPreferenceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "This class specifies the preference of the drop mechanism an
+ interface chooses if it supports multiple drop mechanisms.
+ Higher values are preferred over lower values."
+ ::= { qosIfParameters 2 }
+
+qosIfDropPreferenceEntry OBJECT-TYPE
+ SYNTAX QosIfDropPreferenceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies a drop preference for
+ a drop mechanism on an interface with a particular role
+ combination."
+ INDEX { qosIfDropPreferenceId }
+ ::= { qosIfDropPreferenceTable 1 }
+
+QosIfDropPreferenceEntry ::= SEQUENCE {
+ qosIfDropPreferenceId PolicyInstanceId,
+ qosIfDropRoles RoleCombination,
+ qosIfDropPreference INTEGER,
+ qosIfDropDiscipline INTEGER
+ }
+
+qosIfDropPreferenceId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIfDropPreferenceEntry 1 }
+
+qosIfDropRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The combination of roles the interface must have for this
+ policy instance to apply to that interface."
+ ::= { qosIfDropPreferenceEntry 2 }
+
+qosIfDropPreference OBJECT-TYPE
+ SYNTAX INTEGER (1..16)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The preference to use this drop mechanism. A higher value
+ means a higher preference. If two mechanisms have the same
+ preference the choice is a local decision."
+ ::= { qosIfDropPreferenceEntry 3 }
+
+qosIfDropDiscipline OBJECT-TYPE
+ SYNTAX INTEGER {
+ qosIfDropWRED (1),
+ qosIfDropTailDrop (2)
+ }
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "An enumerate type for all the known drop mechanisms."
+ ::= { qosIfDropPreferenceEntry 4 }
+
+-- The Assignment of DSCPs to queues and thresholds for each interface
+-- type.
+--
+
+qosIfDscpAssignmentTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIfDscpAssignmentEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The assignment of each DSCP to a queue and threshold for each
+ interface queue type."
+ ::= { qosIfParameters 3 }
+
+qosIfDscpAssignmentEntry OBJECT-TYPE
+ SYNTAX QosIfDscpAssignmentEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies the queue and threshold
+ set for a packet with a particular DSCP on an interface of
+ a particular type with a particular role combination."
+ INDEX { qosIfDscpAssignmentId }
+ ::= { qosIfDscpAssignmentTable 1 }
+
+QosIfDscpAssignmentEntry ::= SEQUENCE {
+ qosIfDscpAssignmentId PolicyInstanceId,
+ qosIfDscpRoles RoleCombination,
+ qosIfQueueType QosInterfaceQueueType,
+ qosIfDscp Dscp,
+ qosIfQueue INTEGER,
+ qosIfThresholdSet INTEGER
+ }
+
+qosIfDscpAssignmentId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIfDscpAssignmentEntry 1 }
+
+qosIfDscpRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The role combination the interface must be configured with."
+ ::= { qosIfDscpAssignmentEntry 2 }
+
+qosIfQueueType OBJECT-TYPE
+ SYNTAX QosInterfaceQueueType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The interface queue type to which this row applies."
+ ::= { qosIfDscpAssignmentEntry 3 }
+
+qosIfDscp OBJECT-TYPE
+ SYNTAX Dscp
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The DSCP to which this row applies."
+ ::= { qosIfDscpAssignmentEntry 4 }
+
+qosIfQueue OBJECT-TYPE
+ SYNTAX INTEGER (1..64)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The queue to which the DSCP applies for the given interface
+ type."
+ ::= { qosIfDscpAssignmentEntry 5 }
+
+qosIfThresholdSet OBJECT-TYPE
+ SYNTAX INTEGER (1..8)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The threshold set of the specified queue to which the DSCP
+ applies for the given interface type."
+ ::= { qosIfDscpAssignmentEntry 6 }
+
+-- The configuration of RED thresholds
+--
+
+qosIfRedTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIfRedEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class of lower and upper values for each threshold set in a
+ queue supporting WRED. If the size of the queue for a given
+ threshold is below the lower value then packets assigned to
+ that threshold are always accepted into the queue. If the
+ size of the queue is above upper value then packets are always
+ dropped. If the size of the queue is between the lower and
+ the upper then packets are randomly dropped."
+ ::= { qosIfParameters 4 }
+
+qosIfRedEntry OBJECT-TYPE
+ SYNTAX QosIfRedEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies threshold limits for a
+ particular RED threshold of a given threshold set on an
+ interface and with a particular role combination."
+ INDEX { qosIfRedId }
+ ::= { qosIfRedTable 1 }
+
+QosIfRedEntry ::= SEQUENCE {
+ qosIfRedId PolicyInstanceId,
+ qosIfRedRoles RoleCombination,
+ qosIfRedNumThresholdSets ThresholdSetRange,
+ qosIfRedThresholdSet INTEGER,
+ qosIfRedThresholdSetLower Percent,
+ qosIfRedThresholdSetUpper Percent
+ }
+
+qosIfRedId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIfRedEntry 1 }
+
+qosIfRedRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The role combination the interface must be configured with."
+ ::= { qosIfRedEntry 2 }
+
+qosIfRedNumThresholdSets OBJECT-TYPE
+ SYNTAX ThresholdSetRange
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The values in this entry apply only to queues with the number
+ of thresholds specified by this attribute."
+ ::= { qosIfRedEntry 3 }
+
+qosIfRedThresholdSet OBJECT-TYPE
+ SYNTAX INTEGER (1..8)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The threshold set to which the lower and upper values apply.
+ It must be in the range 1 through qosIfRedNumThresholdSets.
+ There must be exactly one PRI for each value in this range."
+ ::= { qosIfRedEntry 4 }
+
+qosIfRedThresholdSetLower OBJECT-TYPE
+ SYNTAX Percent
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The threshold value below which no packets are dropped."
+ ::= { qosIfRedEntry 5 }
+
+qosIfRedThresholdSetUpper OBJECT-TYPE
+ SYNTAX Percent
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The threshold value above which all packets are dropped."
+ ::= { qosIfRedEntry 6 }
+
+-- The configuration of tail drop thresholds
+--
+
+qosIfTailDropTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIfTailDropEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class for threshold sets in a queue supporting tail drop.
+ If the size of the queue for a given threshold set is at or
+ below the specified value then packets assigned to that
+ threshold set are always accepted into the queue. If the size
+ of the queue is above the specified value then packets are
+ always dropped."
+ ::= { qosIfParameters 5 }
+
+qosIfTailDropEntry OBJECT-TYPE
+ SYNTAX QosIfTailDropEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies the queue depth for a
+ particular tail-drop threshold set on an interface with a
+ particular role combination."
+ INDEX { qosIfTailDropId }
+ ::= { qosIfTailDropTable 1 }
+
+QosIfTailDropEntry ::= SEQUENCE {
+ qosIfTailDropId PolicyInstanceId,
+ qosIfTailDropRoles RoleCombination,
+ qosIfTailDropNumThresholdSets ThresholdSetRange,
+ qosIfTailDropThresholdSet INTEGER,
+ qosIfTailDropThresholdSetValue Percent
+ }
+
+qosIfTailDropId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIfTailDropEntry 1 }
+
+qosIfTailDropRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The role combination the interface must be configured with."
+ ::= { qosIfTailDropEntry 2 }
+
+qosIfTailDropNumThresholdSets OBJECT-TYPE
+ SYNTAX ThresholdSetRange
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The value in this entry applies only to queues with the
+ number of thresholds specified by this attribute."
+ ::= { qosIfTailDropEntry 3 }
+
+qosIfTailDropThresholdSet OBJECT-TYPE
+ SYNTAX INTEGER (1..8)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The threshold set to which the threshold value applies"
+ ::= { qosIfTailDropEntry 4 }
+
+qosIfTailDropThresholdSetValue OBJECT-TYPE
+ SYNTAX Percent
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The threshold value above which packets are dropped."
+ ::= { qosIfTailDropEntry 5 }
+
+-- Weights for interfaces that support WRR, WFQ, CBWFQ, etc.
+--
+
+qosIfWeightsTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF QosIfWeightsEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "A class of scheduling weights for each queue of an interface
+ that supports weighted round robin scheduling or a mix of
+ priority queueing and weighted round robin. For a queue with
+ N priority queues, the N highest queue numbers are the
+ priority queues with the highest queue number having the
+ highest priority. WRR is applied to the non-priority queues."
+ ::= { qosIfParameters 6 }
+
+qosIfWeightsEntry OBJECT-TYPE
+ SYNTAX QosIfWeightsEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An instance of this class specifies the scheduling weight for
+ a particular queue of an interface with a particular number
+ of queues and with a particular role combination."
+ INDEX { qosIfWeightsId }
+ ::= { qosIfWeightsTable 1 }
+
+QosIfWeightsEntry ::= SEQUENCE {
+ qosIfWeightsId PolicyInstanceId,
+ qosIfWeightsRoles RoleCombination,
+ qosIfWeightsNumQueues QueueRange,
+ qosIfWeightsQueue INTEGER,
+ qosIfWeightsDrainSize Unsigned32,
+ qosIfWeightsQueueSize Unsigned32
+ }
+
+qosIfWeightsId OBJECT-TYPE
+ SYNTAX PolicyInstanceId
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An integer index to identify the instance of the policy class."
+ ::= { qosIfWeightsEntry 1 }
+
+qosIfWeightsRoles OBJECT-TYPE
+ SYNTAX RoleCombination
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The role combination the interface must be configured with."
+ ::= { qosIfWeightsEntry 2 }
+
+qosIfWeightsNumQueues OBJECT-TYPE
+ SYNTAX QueueRange
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The value of the weight in this instance applies only to
+ interfaces with the number of queues specified by this
+ attribute."
+ ::= { qosIfWeightsEntry 3 }
+
+qosIfWeightsQueue OBJECT-TYPE
+ SYNTAX INTEGER (1..64)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The queue to which the weight applies."
+ ::= { qosIfWeightsEntry 4 }
+
+qosIfWeightsDrainSize OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The maximum number of bytes that may be drained from the
+ queue in one cycle. The percentage of the bandwith allocated
+ to this queue can be calculated from this attribute and the
+ sum of the drain sizes of all the non-priority queues of the
+ interface."
+ ::= { qosIfWeightsEntry 5 }
+
+qosIfWeightsQueueSize OBJECT-TYPE
+ SYNTAX Unsigned32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The size of the queue in bytes. Some devices set queue size
+ in terms of packets. These devices must calculate the queue
+ size in packets by assuming an average packet size suitable
+ for the particular interface.
+
+ Some devices have a fixed size buffer to be shared among all
+ queues. These devices must allocate a fraction of the
+ total buffer space to this queue calculated as the the ratio
+ of the queue size to the sum of the queue sizes for the
+ interface."
+ ::= { qosIfWeightsEntry 6 }
+
+qosPIBCompliances OBJECT IDENTIFIER ::= { qosPIBConformance 1 }
+qosPIBGroups OBJECT IDENTIFIER ::= { qosPIBConformance 2 }
+
+-- Compliance
+
+qosPIBCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION
+ "The compliance statement for the QOS Policy Derived MIB."
+ MODULE
+ MANDATORY-GROUPS {
+ qosDevicePibIncarnationTableGroup,
+ qosDeviceAttributeTableGroup,
+ qosInterfaceTypeTableGroup
+ }
+ ::= { qosPIBCompliances 1 }
+
+qosDevicePibIncarnationTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosDevicePdpName,
+ qosDevicePibIncarnation,
+ qosDevicePibTtl
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 1 }
+
+qosDeviceAttributeTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosDevicePepDomain,
+ qosDevicePrimaryPdp,
+ qosDeviceSecondaryPdp,
+ qosDeviceMaxMessageSize,
+ qosDeviceCapabilities
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 2 }
+
+qosInterfaceTypeTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosInterfaceQueueType,
+ qosInterfaceTypeRoles,
+ qosInterfaceTypeCapabilities
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 3 }
+
+qosDiffServMappingTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosMarkedDscp,
+ qosL2Cos
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 4 }
+
+qosCosToDscpTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosCosToDscpDscp
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 5 }
+
+qosUnmatchedPolicyTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosUnmatchedPolicyRole,
+ qosUnmatchedPolicyDirection,
+ qosUnmatchedPolicyDscp,
+ qosUnmatchedPolicyDscpTrusted,
+ qosUnmatchPolMicroFlowPolicerId,
+ qosUnmatchedPolicyAggregateId
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 6 }
+
+qosPolicerTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosPolicerRate,
+ qosPolicerNormalBurst,
+ qosPolicerExcessBurst,
+ qosPolicerAction
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 7 }
+
+qosAggregateTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosAggregatePolicerId
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 8 }
+
+qosMacClassificationTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosDstMacVlan,
+ qosDstMacAddress,
+ qosDstMacCos
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 9 }
+
+qosIpAceTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIpAceDstAddr,
+ qosIpAceDstAddrMask,
+ qosIpAceSrcAddr,
+ qosIpAceSrcAddrMask,
+ qosIpAceDscpMin,
+ qosIpAceDscpMax,
+ qosIpAceProtocol,
+ qosIpAceDstL4PortMin,
+ qosIpAceDstL4PortMax,
+ qosIpAceSrcL4PortMin,
+ qosIpAceSrcL4PortMax,
+ qosIpAcePermit
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 10 }
+
+qosIpAclDefinitionTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIpAclId,
+ qosIpAceOrder,
+ qosIpAclDefAceId
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 11 }
+
+qosIpAclActionTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIpAclActAclId,
+ qosIpAclInterfaceRoles,
+ qosIpAclInterfaceDirection,
+ qosIpAclOrder,
+ qosIpAclDscp,
+ qosIpAclDscpTrusted,
+ qosIpAclMicroFlowPolicerId,
+ qosIpAclAggregateId
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 12 }
+
+qosIfSchedulingPreferencesTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIfSchedulingRoles,
+ qosIfSchedulingPreference,
+ qosIfSchedulingDiscipline,
+ qosIfSchedulingQueueType
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 13 }
+
+qosIfDropPreferenceTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIfDropRoles,
+ qosIfDropPreference,
+ qosIfDropDiscipline
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 14 }
+
+qosIfDscpAssignmentTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIfDscpRoles,
+ qosIfQueueType,
+ qosIfDscp,
+ qosIfQueue,
+ qosIfThresholdSet
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 15 }
+
+qosIfRedTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIfRedRoles,
+ qosIfRedNumThresholdSets,
+ qosIfRedThresholdSet,
+ qosIfRedThresholdSetLower,
+ qosIfRedThresholdSetUpper
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 16 }
+
+qosIfTailDropTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIfTailDropRoles,
+ qosIfTailDropNumThresholdSets,
+ qosIfTailDropThresholdSet,
+ qosIfTailDropThresholdSetValue
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 17 }
+
+qosIfWeightsTableGroup OBJECT-GROUP
+ OBJECTS {
+ qosIfWeightsRoles,
+ qosIfWeightsNumQueues,
+ qosIfWeightsQueue,
+ qosIfWeightsDrainSize,
+ qosIfWeightsQueueSize
+ }
+ STATUS current
+ DESCRIPTION
+ ""
+ ::= { qosPIBGroups 18 }
+
+END
+
+
+
diff --git a/poll-device.php b/poll-device.php
index 1dbcd6760..f5b495377 100755
--- a/poll-device.php
+++ b/poll-device.php
@@ -246,6 +246,8 @@ while ($device = mysql_fetch_array($device_query)) {
$insert_uptime_attrib = mysql_query("INSERT INTO devices_attribs (`device_id`, `attrib_type`, `attrib_value`) VALUES ('" . $device['device_id'] . "', 'uptime', '$uptime')");
}
+ mysql_query("UPDATE `devices` SET `last_polled` = NOW() WHERE `device_id` = '". $device['device_id'] ."'");
+
} ## End if snmpable
diff --git a/test-discovery.php b/test-discovery.php
index 61b3585e2..a29f7d8b7 100755
--- a/test-discovery.php
+++ b/test-discovery.php
@@ -39,7 +39,7 @@ if ($argv[2] == "--type" && $argv[3]) {
$devices_polled = 0;
-$device_query = mysql_query("SELECT * FROM `devices` WHERE status = '1' $where ORDER BY device_id DESC");
+$device_query = mysql_query("SELECT * FROM `devices` WHERE status = '1' $where ORDER BY device_id ASC");
while ($device = mysql_fetch_array($device_query)) {
echo("\n" . $device['hostname'] ."\n");
diff --git a/update-interface.php b/update-interface.php
index 600d80d4e..92ab7531c 100755
--- a/update-interface.php
+++ b/update-interface.php
@@ -32,7 +32,7 @@ while ($interface = mysql_fetch_array($interface_query)) {
if($device['os'] == "IOS") {
- $snmp_cmdb = $config['snmpget'] . " -m +CISCO-VLAN-MEMBERSHIP-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'];
+ $snmp_cmdb = $config['snmpget'] . " -m +CISCO-VLAN-MEMBERSHIP-MIB:CISCO-VTP-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'];
$snmp_cmdb .= " .1.3.6.1.4.1.9.2.2.1.1.1." . $interface['ifIndex'];
$snmp_cmdb .= " .1.3.6.1.4.1.9.9.68.1.2.2.1.2." . $interface['ifIndex'];
$snmp_cmdb .= " .1.3.6.1.4.1.9.9.46.1.6.1.1.16." . $interface['ifIndex'];
@@ -43,7 +43,7 @@ while ($interface = mysql_fetch_array($interface_query)) {
$snmp_outputb = str_replace("\"", "", $snmp_outputb);
list($this['ifHardType'], $this['ifVlan'], $this['ifTrunk']) = explode("\n", $snmp_outputb);
- if($this['ifTrunk'] == "notApplicable") { unset($this['ifTrunk']); }
+ if($this['ifTrunk'] == "notApplicable" || $this['ifTrunk'] == "6") { unset($this['ifTrunk']); }
if($this['ifVlan'] == "") { unset($this['ifVlan']); }
if ( $interface['ifTrunk'] != $this['ifTrunk'] ) {