From d10c1c26d2298cf1d61aecbbaaa2b5891914745a Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Mon, 13 Apr 2009 19:16:22 +0000 Subject: [PATCH] many fixes to ip address polling and displaying git-svn-id: http://www.observium.org/svn/observer/trunk@403 61d68cd4-352d-0410-923a-c4978735b2b8 --- cron.sh | 2 +- discover-cdp.php | 4 +- discovery.php | 8 +- html/graph.php | 9 +- html/includes/print-interface.inc | 83 +- html/pages/device/overview.inc.php | 3 - includes/discovery/bgp-peers.php | 1 + includes/discovery/ipv4-addresses.php | 42 + includes/discovery/ipv6-addresses.php | 46 +- includes/graphing.php | 28 + includes/polling/cisco-processors.inc.php | 6 +- mibs/CISCO-MEMORY-POOL-MIB.my | 318 ++++ mibs/CISCO-QOS-PIB-MIB.my | 2022 +++++++++++++++++++++ poll-device.php | 2 + test-discovery.php | 2 +- update-interface.php | 4 +- 16 files changed, 2485 insertions(+), 95 deletions(-) create mode 100755 includes/discovery/ipv4-addresses.php create mode 100644 mibs/CISCO-MEMORY-POOL-MIB.my create mode 100644 mibs/CISCO-QOS-PIB-MIB.my 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  Same Subnet" . 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'] ) {