diff --git a/html/graph.php b/html/graph.php index 2dd22d8ab..9f5f72006 100644 --- a/html/graph.php +++ b/html/graph.php @@ -26,6 +26,9 @@ if($_GET['debug']) { } elseif($_GET['if']) { $device_id = getifhost($_GET['if']); $ifIndex = getifindexbyid($_GET['if']); + } elseif($_GET['port']) { + $device_id = getifhost($_GET['port']); + $ifIndex = getifindexbyid($_GET['port']); } elseif($_GET['peer']) { $device_id = getpeerhost($_GET['peer']); } diff --git a/html/includes/print-interface.inc b/html/includes/print-interface.inc index 621875111..1be30d859 100644 --- a/html/includes/print-interface.inc +++ b/html/includes/print-interface.inc @@ -166,7 +166,7 @@ echo(""); $br = "
"; } - unset($int_links, $int_links_v6, $int_links_v4, $int_links_phys, $br); +# unset($int_links, $int_links_v6, $int_links_v4, $int_links_phys, $br); } @@ -178,9 +178,26 @@ echo(""); P.cpwVcID = '".$pseudowire['cpwVcID']."' AND P.interface_id = I.interface_id")); $pw_peer_int = ifNameDescr($pw_peer_int); - echo(" " . generateiflink($pw_peer_int, makeshortif($pw_peer_int['label'])) ." on ". generatedevicelink($pw_peer_dev, shorthost($pw_peer_dev['hostname'])) . ""); + echo("$br " . generateiflink($pw_peer_int, makeshortif($pw_peer_int['label'])) ." on ". generatedevicelink($pw_peer_dev, shorthost($pw_peer_dev['hostname'])) . ""); + $br = "
"; } + $members = mysql_query("SELECT * FROM `interfaces` WHERE `pagpGroupIfIndex` = '".$interface['ifIndex']."' and `device_id` = '".$device['device_id']."'"); + while($member = mysql_fetch_array($members)) { + echo("$br " . generateiflink($member) . " (PAgP)"); + $br = "
"; + } + + if($interface['pagpGroupIfIndex'] && $interface['pagpGroupIfIndex'] != $interface['ifIndex']) { + $parent = mysql_fetch_array(mysql_query("SELECT * FROM `interfaces` WHERE `ifIndex` = '".$interface['pagpGroupIfIndex']."' and `device_id` = '".$device['device_id']."'")); + echo("$br " . generateiflink($parent) . " (PAgP)"); + $br = "
"; + } + + + unset($int_links, $int_links_v6, $int_links_v4, $int_links_phys, $br); + + echo(""); diff --git a/html/pages/device/interface.inc.php b/html/pages/device/interface.inc.php index a09873b60..0219c3dc9 100644 --- a/html/pages/device/interface.inc.php +++ b/html/pages/device/interface.inc.php @@ -42,6 +42,10 @@ $interface = mysql_fetch_array($interface_query); $broke = yes; } + if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `pagpGroupIfIndex` = '".$interface['ifIndex']."' and `device_id` = '".$device['device_id']."'"),0)) { + $pagp = " | PAgP"; + } + echo("
"); echo(" @@ -56,7 +60,9 @@ echo("
Graphs | -ARP Table"); +ARP Table$pagp"); + + if(mysql_result(mysql_query("SELECT count(*) FROM mac_accounting WHERE interface_id = '".$interface['interface_id']."'"),0)){ diff --git a/includes/functions.php b/includes/functions.php index 68bf81bf2..06effcceb 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -236,11 +236,11 @@ function interface_rates ($rrd_file) // Returns the last in/out value in RRD return $rate; } -function interface_errors ($rrd_file) // Returns the last in/out errors value in RRD +function interface_errors ($rrd_file, $period = '-1d') // Returns the last in/out errors value in RRD { global $config; #$rrdfile = $config['rrd_dir'] . "/" . $interface['hostname'] . "/" . $interface['ifIndex'] . ".rrd"; - $cmd = $config['rrdtool']." fetch -s -1d -e -300s $rrd_file AVERAGE | grep : | cut -d\" \" -f 4,5"; + $cmd = $config['rrdtool']." fetch -s $period -e -300s $rrd_file AVERAGE | grep : | cut -d\" \" -f 4,5"; $data = trim(shell_exec($cmd)); foreach( explode("\n", $data) as $entry) { list($in, $out) = explode(" ", $entry); diff --git a/includes/static-config.php b/includes/static-config.php index e2c16ad36..6bda7188e 100644 --- a/includes/static-config.php +++ b/includes/static-config.php @@ -64,4 +64,28 @@ $week = time() - (7 * 24 * 60 * 60); $month = time() - (31 * 24 * 60 * 60); $year = time() - (365 * 24 * 60 * 60); + +### Update Database between 0.6.0 and 0.6.1 (slight slowdown) + +$exists = false; +$columns = mysql_query("SHOW columns FROM `interfaces`"); +while($c = mysql_fetch_assoc($columns)){ + if($c['Field'] == "pagpOperationMode"){ + $pagp = true; + break; + } +} +if(!$pagp) { + mysql_query("ALTER TABLE `interfaces` ADD `pagpOperationMode` VARCHAR( 32 ) NULL , +ADD `pagpPortState` VARCHAR( 16 ) NULL , +ADD `pagpPartnerDeviceId` VARCHAR( 48 ) NULL , +ADD `pagpPartnerLearnMethod` VARCHAR( 16 ) NULL , +ADD `pagpPartnerIfIndex` INT NULL , +ADD `pagpPartnerGroupIfIndex` INT NULL , +ADD `pagpPartnerDeviceName` VARCHAR( 128 ) NULL , +ADD `pagpEthcOperationMode` VARCHAR( 16 ) NULL , +ADD `pagpDeviceId` VARCHAR( 48 ) NULL , +ADD `pagpGroupIfIndex` INT NULL"); +} + ?> diff --git a/mibs/CISCO-PAGP-MIB.my b/mibs/CISCO-PAGP-MIB.my new file mode 100644 index 000000000..3c0aac33f --- /dev/null +++ b/mibs/CISCO-PAGP-MIB.my @@ -0,0 +1,1005 @@ + +CISCO-PAGP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Counter32, + Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + MacAddress, + TimeStamp, + DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF + ciscoMgmt + FROM CISCO-SMI + InterfaceIndexOrZero + FROM CISCO-TC + ifIndex + FROM IF-MIB + ; + +ciscoPagpMIB MODULE-IDENTITY + LAST-UPDATED "200212130000Z" + 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-etherchan@cisco.com + cs-lan-switch-snmp@cisco.com" + + DESCRIPTION + "The MIB module for configuration of Fast Etherchannel + and the operation of the Port Aggregation Protocol (PAgP). + These features allow two or more physical interfaces to + be aggregated together to form a single agport. This + agport behaves like a single interface with improved + bandwidth and/or availability over each of its component + physical interfaces. + + You can monitor interfaces, agports, and related statistics + through the ifStackTable and ifTable entries." + + REVISION "200212130000Z" + DESCRIPTION "Added a new value vlanIpPort(4) to + pagpDistributionProtocol." + + REVISION "200201020000Z" + DESCRIPTION "Added port(3) to pagpDistributionProtocol." + + REVISION "9903040000Z" + DESCRIPTION "Added two PagpDistribution objects." + + REVISION "9804090000Z" + DESCRIPTION "Initial version of this MIB module." + + ::= { ciscoMgmt 98 } + +ciscoPagpMIBObjects + OBJECT IDENTIFIER ::= { ciscoPagpMIB 1 } + +pagpGroupCapabilityConfiguration + OBJECT IDENTIFIER ::= { ciscoPagpMIBObjects 1 } +pagpProtocol + OBJECT IDENTIFIER ::= { ciscoPagpMIBObjects 2 } + +-- Textual Conventions + +PagpGroupCapability ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The group-capability value of an interface. Indicates the + ability of the interface to aggregate together with other + interfaces to form aggregate links, or agports. + + The value of PagpGroupCapability has no meaning except by + comparison (equal or not equal) to other PagpGroupCapability + values for different interfaces (ifIndex values) having the + same device (pagpDeviceId). If two different interfaces on the + same device have the same PagpGroupCapability, then they are + capable of being aggregated into the same agport. If they + have different PagpGroupCapability values, then they cannot + be aggregated together. + + The assignment of PagpGroupCapability values to the variables + which use them can be made either by the network administrator + or by the managed system, depending on the variable. One + easily-used and understood means of assigning + PagpGroupCapability values is to use, for each interface's + PagpGroupCapability, the lowest ifIndex (in numerical value) + of all of the intefaces with which this interface can + aggregate. The use of this technique is not required. + Therefore, when examining a variable using the + PagpGroupCapability, the user must not assume that the values + have any meaning, other than by comparison for equality with + other interfaces' values on the same device. + + Note also that a single managed system may utilize multiple + pagpDeviceId values. PagpGroupCapability values may be + compared only among those interfaces with the same + pagpDeviceId values." + SYNTAX Integer32 + +PagpEthcOperationMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The group-capability configuration operation mode of Fast + Etherchannel on this interface: + + off(1) No aggregation of interfaces is allowed. + + manual(2) Aggregation is under control of the + pagpGroupCapabilityConfiguration + section; no PAgP protocol packets are sent, + and any received are ignored. + + pagpOn(3) Aggregation is under control of the PAgP + protocol. PAgP packets are sent on the + interface and those received are acted upon. + + It is anticipated that further values of this textual convention + may be defined as additional aggregation protocols are defined." + SYNTAX INTEGER { off(1), manual(2), pagpOn(3) } + +PagpPortPriority ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The priority of this interface for use as the active port of + an aggregation operating in hot-standby mode. The highest + numerical value indicates the most-desirable interface." + SYNTAX INTEGER (0..255) + +PagpOperationMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The group-capability configuration operation mode of the PAgP + protocol on this interface: + + desirable(1) aggregation is under control of the PAgP + protocol. PAgP packets are sent on the + interface and those received are acted upon. + If no data packets are received on the + interface, then the interface is never attached + to an agport and cannot be used for data. + + desirableSilent(2) + aggregation is under control of the PAgP + protocol. PAgP packets are sent on the + interface and those received are acted upon. + If no data packets are received on the + interface, then after some timeout period, the + interface is attached, by itself, to an agport + and can thus be used for data transmission. + + automatic(3) aggregation is under control of the PAgP + protocol. PAgP packets are not sent on the + interface until at least one PAgP packet is + received which indicates that the sender is + operating in desirable or desirableSilent mode. + If no data packets are received on the + interface, then the interface is never attached + to an agport and cannot be used for data. + + automaticSilent(4) + aggregation is under control of the PAgP + protocol. PAgP packets are not sent on the + interface until at least one PAgP packet is + received which indicates that the sender is + operating in desirable or desirableSilent mode. + If no data packets are received on the + interface, then after some timeout period, the + interface is attached, by itself, to an agport + and can thus be used for data transmission. + + The value of PagpOperationMode takes effect only when the + value of pagpEthcOperationMode is pagpOn(3). If + pagpEthcOperationMode has any other value, the operation of + the PAgP protocol is disabled." + SYNTAX INTEGER { desirable(1), desirableSilent(2), + automatic(3), automaticSilent(4) } + +PagpLearnMethod ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the ability of this device to determine the input + interface of an incoming data packet received on an aggregated + interface. This serves as a request to the sending device for +the + use or avoidance of different means of assigning packets to + the member interfaces of an aggregation. Three values are +defined: + + physPort(1) This device claims to be unable to ignore the + physical interface on which the packet is + received. + + agPort(2) This device claims to be able to ignore the + physical interface on which the packet is + received. + + undefined(3) The learn method is unknown. This value is + not allowed in some variables." + SYNTAX INTEGER { physPort(1), agPort(2), undefined(3) } + +-- MIB Objects + +-- Port Aggregation Protocol and Fast Etherchannel operation variables + +-- Per-Interface EtherChannel Variables + +pagpEtherChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF PagpEtherChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pagpEtherChannelTable specifies, per physical interface, + the Fast Etherchannel operational mode (off, manual, or + protocol-controlled) and the capability of the interface to form + aggregations. Interfaces that do not support Fast Etherchannel + or PAgP do not have an entry in this table, nor do the + agports, themselves." + ::= { pagpGroupCapabilityConfiguration 1 } + +pagpEtherChannelEntry OBJECT-TYPE + SYNTAX PagpEtherChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry describes the permitted interface aggregation. + Entries are created by the managed system for each interface + which supports Fast Etherchannel." + INDEX { ifIndex } + ::= { pagpEtherChannelTable 1 } + +PagpEtherChannelEntry ::= SEQUENCE { + pagpEthcOperationMode PagpEthcOperationMode, + pagpDeviceId MacAddress, + pagpPhysGroupCapability PagpGroupCapability, + pagpOperGroupCapability PagpGroupCapability, + pagpAdminGroupCapability PagpGroupCapability, + pagpPortPriority PagpPortPriority, + pagpLearnMethod PagpLearnMethod, + pagpGroupIfIndex InterfaceIndexOrZero, + pagpDistributionProtocol INTEGER, + pagpDistributionAddress INTEGER +} + +pagpEthcOperationMode OBJECT-TYPE + SYNTAX PagpEthcOperationMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The managed device will refuse a request to set + pagpEthcOperationMode to the pagpOn(3) state if the device does + not implement the PAgP protocol. The managed device will refuse + to set pagpEthcOperationMode to manual(2) or pagpOn(3) if the + values in the interface's pagpAdminGroupCapability variable is + inconsistent with other interfaces' pagpAdminGroupCapability + values." + ::= { pagpEtherChannelEntry 1 } + +pagpDeviceId OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Uniquely identifies a device which implements Fast +Etherchannel. + The combination of pagpDeviceId and ifIndex must be unique over + all interfaces in a network. pagpDeviceId typically identifies + a device such as a bridge, router, or file server, but may be + used to identify a smaller unit such as a single multi-interface + circuit card." + ::= { pagpEtherChannelEntry 2 } + +pagpPhysGroupCapability OBJECT-TYPE + SYNTAX PagpGroupCapability + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The values in pagpPhysGroupCapability indicate the aggregation + capability of the underlying hardware. + + The speed, configuration, and status condition of the interface, + e.g. ISL protocol on/off, ifOperStatus On/Off, +full-/half-duplex, + etc., does not affect the state of pagpPhysGroupCapability. + + Any number of interfaces with the same value of + pagpPhysGroupCapability can be aggregated together manually." + ::= { pagpEtherChannelEntry 3 } + +pagpOperGroupCapability OBJECT-TYPE + SYNTAX PagpGroupCapability + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable informs the system administrator examining the +Fast + Etherchannel MIB of the capabilities of the current state of the + interface's hardware to form agports. + + The pagpOperGroupCapability values are adjusted automatically by + the managed system to reflect configuration changes, such as +port + speed or duplex mode, which can affect the ability of an +interface + to join agports. + + pagpOperGroupCapability reflects the ability to form + aggregations; it does not specify whether the interface is + or is not currently a member of such an aggregation. + + pagpOperGroupCapability values are chosen so that no two +interfaces + may be aggregated unless both pagpPhysGroupCapability and + pagpAdminGroupCapability permit the aggregation, as well as the + current configuration of the interfaces. +pagpOperGroupCapability + may change dynamically, as a result of the operation of +automatic + configuration protocols such as PAgP, in order to prevent +illegal + aggregations. + + When the PAgP protocol is enabled, then pagpOperGroupCapability + is the value of the group capability being transmitted on this + interface in PAgP packets." + ::= { pagpEtherChannelEntry 4 } + +pagpAdminGroupCapability OBJECT-TYPE + SYNTAX PagpGroupCapability + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "pagpAdminGroupCapability is used by the network administrator +to + control the aggregation of interfaces into agports. The default + value of pagpAdminGroupCapability is equal to the value of + pagpPhysGroupCapability on that same interface. + + A pagpAdminGroupCapability may be set to restrict which +interfaces + may be aggregated. Any attempt to set an + pagpAdminGroupCapability value that permits two interfaces to + be aggregated together that are prohibited from being aggregated + by the pagpPhysGroupCapability values will be refused. + + A given device may place consistency requirements on + pagpAdminGroupCapability values that span multiple interfaces. + For example, one may be changing interfaces 1-4 from group + capabilities 1, 1, 1, 1 to group capabilities 1, 1, 3, 3. The + capability vector 1, 1, 3, 1 may be illegal. The managed device + will refuse a request to set a value in an interface's + pagpAdminGroupCapability variable if: 1) that new value would + result in an illegal combination of values; and 2) the interface + being set does not have its pagpEthcOperationMode variable set +to + off(1). + + The pagpEthcOperationMode variable may be used to avoid illegal + combinations of pagpAdminGroupCapability values. As long as a + given interface's pagpEthcOperationMode is in the off state, any + value may be set in that interface's pagpAdminGroupCapability + variable. In the above example, the third interface could be + disabled, the 3 could be written to the third and fourth + interfaces, and the third interfaces re-enabled. + + The operating manuals of the managed device must be consulted to + determine the legality of a given combination of + pagpAdminGroupCapability values." + ::= { pagpEtherChannelEntry 5 } + +pagpPortPriority OBJECT-TYPE + SYNTAX PagpPortPriority + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The priority of this interface relative to other interfaces + when determining which interface is to be used in Hot + Standby mode. + + Among all interfaces aggregated together with a single agport, + the one with the highest numerical value of pagpPortPriority is + selected for use. Default value is 128." + ::= { pagpEtherChannelEntry 6 } + +pagpLearnMethod OBJECT-TYPE + SYNTAX PagpLearnMethod + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This interface's learning method value. Specifies whether this + device is able to learn the location of a source MAC address +based + on the agport on which it was received, agPort(2), or on the + interface on which it was received, physPort(1). This value is + relevant primarily to IEEE 802.1D transparent bridges. If a +device + does not associate recieved source MAC addresses with the +interface + on which it arrived, it should use the value agPort(2). + + The managed device will refuse an attempt to set the value of + pagpLearnMethod to undefined(3). + + A particular device may support either physPort, agPort, or +both." + ::= { pagpEtherChannelEntry 7 } + +pagpGroupIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pagpGroupIfIndex is 0, then the inteface is not aggregated + to an agport, and is unavailable for normal data reception and + transmission. + + If pagpGroupIfIndex equals the interface's own ifIndex, the + interface is aggregated to itself, and behaves as a single + interface (as if there were no Fast Etherchannel or PAgP). + + If pagpGroupIfIndex has any other value, then it must contain +the + ifIndex of an agport, and the interface is aggregated to that + agport. + + The ifType of an agport is propVirtual(53)." + ::= { pagpEtherChannelEntry 8 } + +pagpDistributionProtocol OBJECT-TYPE + SYNTAX INTEGER { + ip(1), -- ip address + mac(2), -- mac address + port(3), -- port number + vlanIpPort(4) -- vlan number, ip address + -- and port number + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "pagpDistributionProtocol controls the load balancing + algorithms used on this interface's agport to distribute + outgoing data frames among its component interfaces, such + as IP address. Configuring pagpDistributionProtocol on this + interface may result in having the same change on the + other interfaces due to hardware architecture." + ::= { pagpEtherChannelEntry 9 } + +pagpDistributionAddress OBJECT-TYPE + SYNTAX INTEGER { + source(1), -- source address + destination(2), -- destination address + both(3) -- source and destination address + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "pagpDistributionAddress controls the type of distribution + on the configured pagpDistributionProtocol used on this + interface's agport to distribute outgoing data frames among its + component interfaces. For example if the pagpDistributionProtocol + is configured as 'ip(1)' and the pagpDistributionAddress is + configured as 'both(3)', then every frame with a given source and destination IP value pairs will be sent on the same interface. + Configuring pagpDistributionAddress on this interface may + result in having the same change on the other interfaces due to + hardware architecture." + ::= { pagpEtherChannelEntry 10 } + +-- Per-interface PAgP Protocol Control Variables + +pagpProtocolConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PagpProtocolConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of per-interface Port Aggregation Protocol variables. + Physical interfaces that support Fast Etherchannel and PAgP + protocol have an entry in this table. If the value of + pagpEthcOperationMode for the corresponding interface is off(1) +or + manual(2), then the the interface does not have any entries in + this table." + ::= { pagpProtocol 1 } + +pagpProtocolConfigEntry OBJECT-TYPE + SYNTAX PagpProtocolConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry describes the operational state of the PAgP protocol +on + a particular physical interface. Entries in this table are for + interfaces that support both Fast Etherchannel and PAgP +protocol. + The agport itself is not represented in this table." + INDEX { ifIndex } + ::= { pagpProtocolConfigTable 1 } + +PagpProtocolConfigEntry ::= SEQUENCE { + pagpOperationMode PagpOperationMode, + pagpPortState INTEGER, + pagpLastStateChange TimeStamp, + pagpHelloFrequency INTEGER, + pagpDistributionAlgorithm DisplayString, + pagpPartnerCount INTEGER, + pagpPartnerDeviceId MacAddress, + pagpPartnerLearnMethod PagpLearnMethod, + pagpPartnerPortPriority PagpPortPriority, + pagpPartnerIfIndex InterfaceIndexOrZero, + pagpPartnerGroupCapability PagpGroupCapability, + pagpPartnerGroupIfIndex InterfaceIndexOrZero, + pagpPartnerDeviceName DisplayString, + pagpPartnerPortName DisplayString, + pagpPartnerAgportMACAddress MacAddress +} + +pagpOperationMode OBJECT-TYPE + SYNTAX PagpOperationMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the operational mode of the PAgP protocol on this + interface." + ::= { pagpProtocolConfigEntry 1 } + +pagpPortState OBJECT-TYPE + SYNTAX INTEGER { + portDown(1), + portUp(2), + dataReceived(3), + upData(4), + pagpReceived(5), + biDirectional(6), + upPagp(7), + upMult(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the PAgP state machine on this interface. Values: + + portDown(1) - interface's ifOperStatus is not Up; + + portUp(2) - interface's ifOperStatus is Up, no packets + yet received; + + dataReceived(3) - data packets, but no PAgP packets, have been + received; + + upData(4) - interface is aggregated, but no PAgP packets + have been received; + + pagpReceived(5) - one or more PAgP packets have been received; + + biDirectional(6) - interface has passed PAgP packets in both + directions; + + upPagp(7) - interface is aggregated by means of PAgP; + + upMult(8) - interface is aggregated to an agport, but + connects to more than one external device." + ::= { pagpProtocolConfigEntry 2 } + +pagpLastStateChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Value of sysUpTime the last time that pagpPortState changed." + ::= { pagpProtocolConfigEntry 3 } + +pagpHelloFrequency OBJECT-TYPE + SYNTAX INTEGER { fast(1), slow(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pagpHelloFrequency is slow(2), this device uses a 105 second + timer on this interface to time out receipt of PAgP packet. If + fast(1), this device uses a 3.5 second timer. PAgP uses fast(1) + by default. This value is set to slow(2) by action of the PAgP + protocol." + ::= { pagpProtocolConfigEntry 4 } + +pagpDistributionAlgorithm OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "pagpDistributionAlgorithm describes, in human terms, the method + used on this interface's agport to distribute outgoing data +frames + among its component interfaces. 'Source MAC address', 'Source +and + Destination MAC addresses', or 'IP flow: Source, Destination, + protocol type' might be typical values for + pagpDistributionAlgorithm. If the interface is not aggregated + with an agport (pagpGroupIfIndex contains either 0 or the + interface's own ifIndex), pagpDistributionAlgorithm may contain +a + DisplayString of length 0. + + See the managed device's operation manual to determine the exact + meaning of the information supplied in this variable. A device + may implement more than one algorithm; selecting among those + algorithms is not possible within this MIB. + + The maximum length of this DisplayString is 255 octets." + ::= { pagpProtocolConfigEntry 5 } + +pagpPartnerCount OBJECT-TYPE + SYNTAX INTEGER { none(1), one(2), many(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of other devices known to be transmitting PAgP +packets + to this device on this physical interface. + + If pagpPartnerCount contains none(1), then the values of + the remainder of the variables in this section are as defined + by each variable for this case. + + If pagpPartnerCount contains one(2), then the values of the + remainder of the variables in this section are valid. + + If pagpPartnerCount contains many(3), then the values of + the remainder of the variables in this section reflect the + last PAgP packet received. The values in this section are, + in this case, unreliable, as they may change with the receipt + of each new PAgP packet on this interface." + ::= { pagpProtocolConfigEntry 6 } + +pagpPartnerDeviceId OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "MAC Address of the partner, obtained from + the PAgP packet last received on this interface. Contains + all 0 if pagpPartnerCount contains none(1)." + ::= { pagpProtocolConfigEntry 7 } + +pagpPartnerLearnMethod OBJECT-TYPE + SYNTAX PagpLearnMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner's pagpLearnMethod value, obtained from + the PAgP packet last received on this interface. + undefined(3) if pagpPartnerCount contains none(1)." + ::= { pagpProtocolConfigEntry 8 } + +pagpPartnerPortPriority OBJECT-TYPE + SYNTAX PagpPortPriority + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner's pagpPortPriority, obtained from the + PAgP packet last received on this interface. 0 if + pagpPartnerCount contains none(1)." + ::= { pagpProtocolConfigEntry 9 } + +pagpPartnerIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner's ifIndex value, obtained from the + PAgP packet last received on this interface. 0 if + pagpPartnerCount contains none(1). + + Use CISCO-CDP-MIB cdpCacheTable to resolve the partner's IP + Address and get ifTable information for this ifIndex." + ::= { pagpProtocolConfigEntry 10 } + +pagpPartnerGroupCapability OBJECT-TYPE + SYNTAX PagpGroupCapability + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner's pagpOperGroupCapability obtained +from + the PAgP packet last received on this interface. 0 if + pagpPartnerCount contains none(1)" + ::= { pagpProtocolConfigEntry 11 } + +pagpPartnerGroupIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner's pagpGroupIfIndex obtained from the + PAgP packet last received on this interface. 0 if + pagpPartnerCount contains none(1)." + ::= { pagpProtocolConfigEntry 12 } + +pagpPartnerDeviceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DisplayString obtained from the PAgP packet last received +on + this interface. 0-length string if pagpPartnerCount contains + none(1), or if no device name has been received. + + The value transmitted in a PAgP information packet should be the + sysName value of the device sending the packet. + + The maximum size of this DisplayString is 255 octets." + ::= { pagpProtocolConfigEntry 13 } + +pagpPartnerPortName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DisplayString obtained from the PAgP packet last received +on + this interface. 0-length string if pagpPartnerCount contains + none(1), or if no port name has been received. + + The value transmitted in a PAgP packet should be the ifName + value of the interface on the device sending the packet. + + The maximum size of this DisplayString is 255 octets." + ::= { pagpProtocolConfigEntry 14 } + +pagpPartnerAgportMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MacAddress obtained from the PAgP packet last received on + this interface. All 0 if pagpPartnerCount contains none(1) or +if + no agport MacAddress has been received in a PAgP packet. + + If this value is not all 0, then the device sending the TLV is + promising to use this MAC address, and only this MAC address, in + all frames it sends on the agport." + ::= { pagpProtocolConfigEntry 15 } + + + +-- per-interface Port Aggregation Protocol operation statistics + +pagpProtocolStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PagpProtocolStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of per-interface Port Aggregation Protocol + statistics. The entries in this table are + present only on an interface that is capable both of +implementing + Fast Etherchannel, and can be controlled by the PAgP protocol. + The agport itself is not represented in this table." + ::= { pagpProtocol 2 } + +pagpProtocolStatsEntry OBJECT-TYPE + SYNTAX PagpProtocolStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry describes the accumulated statistics of the PAgP + protocol operation on the aggregated interface." + INDEX { ifIndex } + ::= { pagpProtocolStatsTable 1 } + +PagpProtocolStatsEntry ::= SEQUENCE { + pagpInPackets Counter32, + pagpOutPackets Counter32, + pagpInFlushes Counter32, + pagpReturnedFlushes Counter32, + pagpOutFlushes Counter32, + pagpInErrors Counter32 +} + +pagpInPackets OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PAgP information packets received on this interface." + ::= { pagpProtocolStatsEntry 3 } + +pagpOutPackets OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PAgP information packets transmitted on this +interface." + ::= { pagpProtocolStatsEntry 4 } + +pagpInFlushes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PAgP flush packets received and echoed on this + interface not matching any pagpDeviceId belonging to the managed + device. This counts PAgP flush packets originated by another + device, and indicates that the other device 1) implements the +PAgP + flush feature, and 2) uses that feature to prevent mis-ordering + data frames within an ordered stream." + ::= { pagpProtocolStatsEntry 5 } + +pagpReturnedFlushes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PAgP flush packets received on this interface + matching some pagpDeviceId belonging to this device. This +counts + PAgP flush packets which were originated by the managed device +and + returned to it by another device, and indicates that 1) the + managed device implements the PAgP flush protocol; and 2) the + other device correctly returns PAgP flush protocol packets." + ::= { pagpProtocolStatsEntry 6 } + +pagpOutFlushes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PAgP flush packets generated on this interface. Does + not count flush packets counted in pagpInFlushes and returned to + the sender. If pagpOutFlushes is counting and +pagpReturnedFlushes + is not, the other device may not be returning PAgP flush +packets." + ::= { pagpProtocolStatsEntry 7 } + +pagpInErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packet received on this interface which were +identified + by the encapsulation as being PAgP packets (of any type, e.g. + information or flush), but which were not valid packets because + of length, version, number of TLVs, or an illegal value in an + enumerated field." + ::= { pagpProtocolStatsEntry 8 } + +-- Notifications +-- (none) + +-- Conformance information + +ciscoPagpMIBConformance + OBJECT IDENTIFIER ::= { ciscoPagpMIB 3 } + +ciscoPagpMIBCompliances + OBJECT IDENTIFIER ::= { ciscoPagpMIBConformance 1 } + +ciscoPagpMIBGroups + OBJECT IDENTIFIER ::= { ciscoPagpMIBConformance 2 } + +-- Conformance + +ciscoPagpMIBComplianceV1R1 MODULE-COMPLIANCE + + STATUS obsolete + DESCRIPTION + "Conformance statement for the Fast Ethernet and Port + Aggregation Protocol MIB." + + MODULE -- this module + MANDATORY-GROUPS { ciscoPagpEthcGroupV1R1} + + GROUP ciscoPagpPagpGroupV1R1 + DESCRIPTION + "This group is mandatory for all interfaces which + implement the Port Aggregation Protocol (PAgP), and which + the value pagpOn(3) in the pagpEthcOperationMode variable." + + OBJECT pagpEthcOperationMode + SYNTAX INTEGER { off(1), manual(2) } + DESCRIPTION + "Interfaces which do not implement the Port Aggregation + Protocol (PAgP) do not require the value pagpOn(3)." + ::= { ciscoPagpMIBCompliances 1 } + +ciscoPagpMIBComplianceV2R2 MODULE-COMPLIANCE + + STATUS current + DESCRIPTION + "Conformance statement for the Fast Ethernet and Port + Aggregation Protocol MIB." + + MODULE -- this module + MANDATORY-GROUPS { ciscoPagpEthcGroupV2R2} + + GROUP ciscoPagpPagpGroupV1R1 + DESCRIPTION + "This group is mandatory for all interfaces which + implement the Port Aggregation Protocol (PAgP), and which + the value pagpOn(3) in the pagpEthcOperationMode variable." + + OBJECT pagpEthcOperationMode + SYNTAX INTEGER { off(1), manual(2) } + DESCRIPTION + "Interfaces which do not implement the Port Aggregation + Protocol (PAgP) do not require the value pagpOn(3)." + ::= { ciscoPagpMIBCompliances 2 } + +-- Units of conformance + +ciscoPagpEthcGroupV1R1 OBJECT-GROUP + OBJECTS { + pagpEthcOperationMode, + pagpDeviceId, + pagpPhysGroupCapability, + pagpOperGroupCapability, + pagpAdminGroupCapability, + pagpPortPriority, + pagpLearnMethod, + pagpGroupIfIndex + } + STATUS obsolete + DESCRIPTION + "The collection of objects which are used + to configure and monitor the Fast Etherchannel + operation and interface group-capability." + ::= { ciscoPagpMIBGroups 1 } + +ciscoPagpPagpGroupV1R1 OBJECT-GROUP + OBJECTS { + pagpOperationMode, + pagpPortState, + pagpLastStateChange, + pagpHelloFrequency, + pagpDistributionAlgorithm, + pagpPartnerCount, + pagpPartnerDeviceId, + pagpPartnerLearnMethod, + pagpPartnerPortPriority, + pagpPartnerIfIndex, + pagpPartnerGroupCapability, + pagpPartnerGroupIfIndex, + pagpPartnerDeviceName, + pagpPartnerPortName, + pagpPartnerAgportMACAddress, + pagpInPackets, + pagpOutPackets, + pagpInFlushes, + pagpReturnedFlushes, + pagpOutFlushes, + pagpInErrors + } + STATUS current + DESCRIPTION + "The collection of objects which are used + to configure and monitor the Port Aggregation Protocol + (PAgP) for the automatic negotiation and configuration of + Fast Etherchannel." + ::= { ciscoPagpMIBGroups 2 } + +ciscoPagpEthcGroupV2R2 OBJECT-GROUP + OBJECTS { + pagpEthcOperationMode, + pagpDeviceId, + pagpPhysGroupCapability, + pagpOperGroupCapability, + pagpAdminGroupCapability, + pagpPortPriority, + pagpLearnMethod, + pagpGroupIfIndex, + pagpDistributionProtocol, + pagpDistributionAddress + } + STATUS current + DESCRIPTION + "The collection of objects which are used + to configure and monitor the Fast Etherchannel + operation and interface group-capability." + ::= { ciscoPagpMIBGroups 3 } +END + + diff --git a/mibs/OLD-CISCO-INTERFACES-MIB.my b/mibs/OLD-CISCO-INTERFACES-MIB.my new file mode 100644 index 000000000..249795964 --- /dev/null +++ b/mibs/OLD-CISCO-INTERFACES-MIB.my @@ -0,0 +1,1405 @@ +-- ***************************************************************** +-- OLD-CISCO-INTERFACES-MIB.my: Cisco Interfaces MIB file +-- +-- May 1994, Jeffrey T. Johnson +-- +-- Copyright (c) 1994,1997 by cisco Systems, Inc. +-- All rights reserved. +-- +-- ***************************************************************** +-- + + OLD-CISCO-INTERFACES-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + DisplayString, ifIndex + FROM RFC1213-MIB + local + FROM CISCO-SMI; + + linterfaces OBJECT IDENTIFIER ::= { local 2 } + + + -- Local Interface Group + + -- This group is present in all products. + + + -- Local Interface Table + + -- This group provides additional objects to the table + -- defined by RFC1156. + + lifTable OBJECT-TYPE + SYNTAX SEQUENCE OF LifEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of interface entries." + ::= { linterfaces 1 } + + lifEntry OBJECT-TYPE + SYNTAX LifEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of additional objects in the + cisco interface." + INDEX { ifIndex } + ::= { lifTable 1 } + + LifEntry ::= + SEQUENCE { + locIfHardType + DisplayString, + locIfLineProt + INTEGER, + locIfLastIn + INTEGER, + locIfLastOut + INTEGER, + locIfLastOutHang + INTEGER, + locIfInBitsSec + INTEGER, + locIfInPktsSec + INTEGER, + locIfOutBitsSec + INTEGER, + locIfOutPktsSec + INTEGER, + locIfInRunts + INTEGER, + locIfInGiants + INTEGER, + locIfInCRC + INTEGER, + locIfInFrame + INTEGER, + locIfInOverrun + INTEGER, + locIfInIgnored + INTEGER, + locIfInAbort + INTEGER, + locIfResets + INTEGER, + locIfRestarts + INTEGER, + locIfKeep + INTEGER, + locIfReason + DisplayString, + locIfCarTrans + INTEGER, + locIfReliab + INTEGER, + locIfDelay + INTEGER, + locIfLoad + INTEGER, + locIfCollisions + INTEGER, + locIfInputQueueDrops + INTEGER, + locIfOutputQueueDrops + INTEGER, + locIfDescr + DisplayString, + locIfSlowInPkts + Counter, + locIfSlowOutPkts + Counter, + locIfSlowInOctets + Counter, + locIfSlowOutOctets + Counter, + locIfFastInPkts + Counter, + locIfFastOutPkts + Counter, + locIfFastInOctets + Counter, + locIfFastOutOctets + Counter, + locIfotherInPkts + Counter, + locIfotherOutPkts + Counter, + locIfotherInOctets + Counter, + locIfotherOutOctets + Counter, + locIfipInPkts + Counter, + locIfipOutPkts + Counter, + locIfipInOctets + Counter, + locIfipOutOctets + Counter, + locIfdecnetInPkts + Counter, + locIfdecnetOutPkts + Counter, + locIfdecnetInOctets + Counter, + locIfdecnetOutOctets + Counter, + locIfxnsInPkts + Counter, + locIfxnsOutPkts + Counter, + locIfxnsInOctets + Counter, + locIfxnsOutOctets + Counter, + locIfclnsInPkts + Counter, + locIfclnsOutPkts + Counter, + locIfclnsInOctets + Counter, + locIfclnsOutOctets + Counter, + locIfappletalkInPkts + Counter, + locIfappletalkOutPkts + Counter, + locIfappletalkInOctets + Counter, + locIfappletalkOutOctets + Counter, + locIfnovellInPkts + Counter, + locIfnovellOutPkts + Counter, + locIfnovellInOctets + Counter, + locIfnovellOutOctets + Counter, + locIfapolloInPkts + Counter, + locIfapolloOutPkts + Counter, + locIfapolloInOctets + Counter, + locIfapolloOutOctets + Counter, + locIfvinesInPkts + Counter, + locIfvinesOutPkts + Counter, + locIfvinesInOctets + Counter, + locIfvinesOutOctets + Counter, + locIfbridgedInPkts + Counter, + locIfbridgedOutPkts + Counter, + locIfbridgedInOctets + Counter, + locIfbridgedOutOctets + Counter, + locIfsrbInPkts + Counter, + locIfsrbOutPkts + Counter, + locIfsrbInOctets + Counter, + locIfsrbOutOctets + Counter, + locIfchaosInPkts + Counter, + locIfchaosOutPkts + Counter, + locIfchaosInOctets + Counter, + locIfchaosOutOctets + Counter, + locIfpupInPkts + Counter, + locIfpupOutPkts + Counter, + locIfpupInOctets + Counter, + locIfpupOutOctets + Counter, + locIfmopInPkts + Counter, + locIfmopOutPkts + Counter, + locIfmopInOctets + Counter, + locIfmopOutOctets + Counter, + locIflanmanInPkts + Counter, + locIflanmanOutPkts + Counter, + locIflanmanInOctets + Counter, + locIflanmanOutOctets + Counter, + locIfstunInPkts + Counter, + locIfstunOutPkts + Counter, + locIfstunInOctets + Counter, + locIfstunOutOctets + Counter, + locIfspanInPkts + Counter, + locIfspanOutPkts + Counter, + locIfspanInOctets + Counter, + locIfspanOutOctets + Counter, + locIfarpInPkts + Counter, + locIfarpOutPkts + Counter, + locIfarpInOctets + Counter, + locIfarpOutOctets + Counter, + locIfprobeInPkts + Counter, + locIfprobeOutPkts + Counter, + locIfprobeInOctets + Counter, + locIfprobeOutOctets + Counter, + locIfDribbleInputs + Counter + } + + + -- The following section describes the components of the + -- table. + + locIfHardType OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Returns the type of interface." + ::= { lifEntry 1 } + + locIfLineProt OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Boolean whether interface line protocol is + up or not." + ::= { lifEntry 2 } + + locIfLastIn OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Elapsed time in milliseconds since last line + protocol input packet was received." + ::= { lifEntry 3 } + + locIfLastOut OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Elapsed time in milliseconds since last line + protocol output packet was transmitted." + ::= { lifEntry 4 } + + locIfLastOutHang OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Elapsed time in milliseconds since last line + protocol output packet could not be + successfully transmitted." + ::= { lifEntry 5 } + + locIfInBitsSec OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Five minute exponentially-decayed moving + average of input bits per second." + ::= { lifEntry 6 } + + locIfInPktsSec OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Five minute exponentially-decayed moving + average of input packets per second." + ::= { lifEntry 7 } + + locIfOutBitsSec OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Five minute exponentially-decayed moving + average of output bits per second." + ::= { lifEntry 8 } + + locIfOutPktsSec OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Five minute exponentially-decayed moving + average of output packets per second." + ::= { lifEntry 9 } + + locIfInRunts OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of packets input which were smaller + then the allowable physical media permitted." + ::= { lifEntry 10 } + + locIfInGiants OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of input packets which were larger + then the physical media permitted." + ::= { lifEntry 11 } + + locIfInCRC OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of input packets which had cyclic + redundancy checksum errors." + ::= { lifEntry 12 } + + locIfInFrame OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of input packet which were + misaligned." + ::= { lifEntry 13 } + + locIfInOverrun OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Count of input which arrived too quickly for + the to hardware receive." + ::= { lifEntry 14 } + + locIfInIgnored OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of input packets which were simply + ignored by this interface." + ::= { lifEntry 15 } + + locIfInAbort OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of input packets which were aborted." + ::= { lifEntry 16 } + + locIfResets OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of times the interface internally + reset." + ::= { lifEntry 17 } + + locIfRestarts OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of times interface needed to be + completely restarted." + ::= { lifEntry 18 } + + locIfKeep OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Boolean whether keepalives are enabled on + this interface." + ::= { lifEntry 19 } + + locIfReason OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Reason for interface last status change." + ::= { lifEntry 20 } + + locIfCarTrans OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of times interface saw the carrier + signal transition." + ::= { lifEntry 21 } + + locIfReliab OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The reliability of the interface. Used by + IGRP." + ::= { lifEntry 22 } + + locIfDelay OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The amount of delay in microseconds of the + interface. Used by IGRP." + ::= { lifEntry 23 } + + locIfLoad OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The loading factor of the interface. Used by + IGRP." + ::= { lifEntry 24 } + + locIfCollisions OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of output collisions detected on + this interface." + ::= { lifEntry 25 } + + locIfInputQueueDrops OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets dropped because the + input queue was full." + ::= { lifEntry 26 } + + locIfOutputQueueDrops OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets dropped because the + output queue was full." + ::= { lifEntry 27 } + + locIfDescr OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "User configurable interface description." + ::= { lifEntry 28 } + + locIfSlowInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Packet count for Inbound traffic routed with + slow switching" + ::= { lifEntry 30 } + + locIfSlowOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Packet count for Outbound traffic routed + with slow switching" + ::= { lifEntry 31 } + + locIfSlowInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Octet count for Inbound traffic routed with + slow switching" + ::= { lifEntry 32 } + + locIfSlowOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Octet count for Outbound traffic routed with + slow switching" + ::= { lifEntry 33 } + + locIfFastInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Packet count for Inbound traffic routed with + fast switching" + ::= { lifEntry 34 } + + locIfFastOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Packet count for Outbound traffic routed + with fast switching" + ::= { lifEntry 35 } + + locIfFastInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Octet count for Inbound traffic routed with + fast switching" + ::= { lifEntry 36 } + + locIfFastOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Octet count for Outbound traffic routed with + fast switching" + ::= { lifEntry 37 } + + locIfotherInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Other protocol input packet count" + ::= { lifEntry 38 } + + locIfotherOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Other protocol output packet count" + ::= { lifEntry 39 } + + locIfotherInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Other protocol input octet count" + ::= { lifEntry 40 } + + locIfotherOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Other protocol output octet count" + ::= { lifEntry 41 } + + locIfipInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "ip protocol input packet count" + ::= { lifEntry 42 } + + locIfipOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "ip protocol output packet count" + ::= { lifEntry 43 } + + locIfipInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "ip protocol input octet count" + ::= { lifEntry 44 } + + locIfipOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "ip protocol output octet count" + ::= { lifEntry 45 } + + locIfdecnetInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Decnet protocol input packet count" + ::= { lifEntry 46 } + + locIfdecnetOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Decnet protocol output packet count" + ::= { lifEntry 47 } + + locIfdecnetInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Decnet protocol input byte count" + ::= { lifEntry 48 } + + locIfdecnetOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Decnet protocol output byte count" + ::= { lifEntry 49 } + + locIfxnsInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "XNS protocol input packet count" + ::= { lifEntry 50 } + + locIfxnsOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "XNS protocol output packet count" + ::= { lifEntry 51 } + + locIfxnsInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "XNS protocol input byte count" + ::= { lifEntry 52 } + + locIfxnsOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "XNS protocol output byte count" + ::= { lifEntry 53 } + + locIfclnsInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "CLNS protocol input packet count" + ::= { lifEntry 54 } + + locIfclnsOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "CLNS protocol output packet count" + ::= { lifEntry 55 } + + locIfclnsInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "CLNS protocol input byte count" + ::= { lifEntry 56 } + + locIfclnsOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "CLNS protocol output byte count" + ::= { lifEntry 57 } + + locIfappletalkInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Appletalk protocol input packet count" + ::= { lifEntry 58 } + + locIfappletalkOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Appletalk protocol output packet count" + ::= { lifEntry 59 } + + locIfappletalkInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Appletalk protocol input octet count" + ::= { lifEntry 60 } + + locIfappletalkOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Appletalk protocol output octet count" + ::= { lifEntry 61 } + + locIfnovellInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Novell protocol input packet count" + ::= { lifEntry 62 } + + locIfnovellOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Novell protocol output packet count" + ::= { lifEntry 63 } + + locIfnovellInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Novell protocol input octet count" + ::= { lifEntry 64 } + + locIfnovellOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Novell protocol output octet count" + ::= { lifEntry 65 } + + locIfapolloInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Apollo protocol input packet count" + ::= { lifEntry 66 } + + locIfapolloOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Apollo protocol output packet count" + ::= { lifEntry 67 } + + locIfapolloInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Apollo protocol input octet count" + ::= { lifEntry 68 } + + locIfapolloOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Apollo protocol output octet count" + ::= { lifEntry 69 } + + locIfvinesInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Vines protocol input packet count" + ::= { lifEntry 70 } + + locIfvinesOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Vines protocol output packet count" + ::= { lifEntry 71 } + + locIfvinesInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Vines protocol input octet count" + ::= { lifEntry 72 } + + locIfvinesOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Vines protocol output octet count" + ::= { lifEntry 73 } + + locIfbridgedInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Bridged protocol input packet count" + ::= { lifEntry 74 } + + locIfbridgedOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Bridged protocol output packet count" + ::= { lifEntry 75 } + + locIfbridgedInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Bridged protocol input octet count" + ::= { lifEntry 76 } + + locIfbridgedOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Bridged protocol output octet count" + ::= { lifEntry 77 } + + locIfsrbInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "SRB protocol input packet count" + ::= { lifEntry 78 } + + locIfsrbOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "SRB protocol output packet count" + ::= { lifEntry 79 } + + locIfsrbInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "SRB protocol input octet count" + ::= { lifEntry 80 } + + locIfsrbOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "SRB protocol output octet count" + ::= { lifEntry 81 } + + locIfchaosInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Choas protocol input packet count" + ::= { lifEntry 82 } + + locIfchaosOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Choas protocol output packet count" + ::= { lifEntry 83 } + + locIfchaosInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Choas protocol input octet count" + ::= { lifEntry 84 } + + locIfchaosOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Choas protocol output octet count" + ::= { lifEntry 85 } + + locIfpupInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PUP protocol input packet count" + ::= { lifEntry 86 } + + locIfpupOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PUP protocol output packet count" + ::= { lifEntry 87 } + + locIfpupInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PUP protocol input octet count" + ::= { lifEntry 88 } + + locIfpupOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PUP protocol output octet count" + ::= { lifEntry 89 } + + locIfmopInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "MOP protocol input packet count" + ::= { lifEntry 90 } + + locIfmopOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "MOP protocol output packet count" + ::= { lifEntry 91 } + + locIfmopInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "MOP protocol input octet count" + ::= { lifEntry 92 } + + locIfmopOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "MOP protocol output octet count" + ::= { lifEntry 93 } + + locIflanmanInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "LanMan protocol input packet count" + ::= { lifEntry 94 } + + locIflanmanOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "LanMan protocol output packet count" + ::= { lifEntry 95 } + + locIflanmanInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "LanMan protocol input octet count" + ::= { lifEntry 96 } + + locIflanmanOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "LanMan protocol output octet count" + ::= { lifEntry 97 } + + locIfstunInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "STUN protocol input packet count" + ::= { lifEntry 98 } + + locIfstunOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "STUN protocol output packet count" + ::= { lifEntry 99 } + + locIfstunInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "STUN protocol input octet count" + ::= { lifEntry 100 } + + locIfstunOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "STUN protocol output octet count" + ::= { lifEntry 101 } + + locIfspanInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Spanning tree input protocol packet count" + ::= { lifEntry 102 } + + locIfspanOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Spanning tree output protocol packet count" + ::= { lifEntry 103 } + + locIfspanInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Spanning tree input octet packet count" + ::= { lifEntry 104 } + + locIfspanOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Spanning tree output octet packet count" + ::= { lifEntry 105 } + + locIfarpInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Arp protocol input packet count" + ::= { lifEntry 106 } + + locIfarpOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Arp protocol output packet count" + ::= { lifEntry 107 } + + locIfarpInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Arp protocol input octet count" + ::= { lifEntry 108 } + + locIfarpOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Arp protocol output octet count" + ::= { lifEntry 109 } + + locIfprobeInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Probe protocol input packet count" + ::= { lifEntry 110 } + + locIfprobeOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Probe protocol output packet count" + ::= { lifEntry 111 } + + locIfprobeInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Probe protocol input octet count" + ::= { lifEntry 112 } + + locIfprobeOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Probe protocol output octet count" + ::= { lifEntry 113 } + + locIfDribbleInputs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets received with the + dribble condition present" + ::= { lifEntry 114 } + + -- End of table + + + + -- Local FSIP card Table, also used for 4T, HSSI, Mx serial + + -- This group provides additional objects to the table + -- defined by RFC1156. + + lFSIPTable OBJECT-TYPE + SYNTAX SEQUENCE OF LFSIPEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of card entries for 4T, HSSI, + Mx serial or FSIP." + ::= { linterfaces 2 } + + lFSIPEntry OBJECT-TYPE + SYNTAX LFSIPEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of objects specific to 4T, + HSSI, Mx serial or FSIP." + INDEX { locIfFSIPIndex } + ::= { lFSIPTable 1 } + + LFSIPEntry ::= + SEQUENCE { + locIfFSIPIndex + INTEGER, + locIfFSIPtype + INTEGER, + locIfFSIPrts + INTEGER, + locIfFSIPcts + INTEGER, + locIfFSIPdtr + INTEGER, + locIfFSIPdcd + INTEGER, + locIfFSIPdsr + INTEGER, + locIfFSIPrxClockrate + INTEGER, + locIfFSIPrxClockrateHi + INTEGER, + locIfFSIPportType + INTEGER + } + + + -- The following section describes the components of the + -- table. + + locIfFSIPIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Interface index of this card corresponding + to its ifIndex" + ::= { lFSIPEntry 1 } + + locIfFSIPtype OBJECT-TYPE + SYNTAX INTEGER { + notAvailable(1), + dte(2), + dce(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Is this FSIP line DCE or DTE" + ::= { lFSIPEntry 2 } + + locIfFSIPrts OBJECT-TYPE + SYNTAX INTEGER { + notAvailable(1), + up(2), + down(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Is the RTS signal up or down" + ::= { lFSIPEntry 3 } + + locIfFSIPcts OBJECT-TYPE + SYNTAX INTEGER { + notAvailable(1), + up(2), + down(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Is the CTS signal up or down" + ::= { lFSIPEntry 4 } + + locIfFSIPdtr OBJECT-TYPE + SYNTAX INTEGER { + notAvailable(1), + up(2), + down(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Is the DTR signal up or down" + ::= { lFSIPEntry 5 } + + locIfFSIPdcd OBJECT-TYPE + SYNTAX INTEGER { + notAvailable(1), + up(2), + down(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Is the DCD signal up or down" + ::= { lFSIPEntry 6 } + + locIfFSIPdsr OBJECT-TYPE + SYNTAX INTEGER { + notAvailable(1), + up(2), + down(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Is the DSR signal up or down" + ::= { lFSIPEntry 7 } + + locIfFSIPrxClockrate OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Received clock rate" + ::= { lFSIPEntry 8 } + + locIfFSIPrxClockrateHi OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Use when received clock rate + is greater than 2^32 (gigabits)." + ::= { lFSIPEntry 9 } + + -- PortType is modeled after rs232PortType + -- in RS-232-MIB.my + + locIfFSIPportType OBJECT-TYPE + SYNTAX INTEGER { + noCable(1), + rs232(2), + rs422(3), + rs423(4), + v35(5), + x21(6), + rs449(7), + rs530(8), + hssi(9) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Cable Type of 4T, HSSI, Mx serial or FSIP" + ::= { lFSIPEntry 10 } + + -- End of table + + +END diff --git a/new-poller.php b/new-poller.php index b08747a2b..ab02a8274 100755 --- a/new-poller.php +++ b/new-poller.php @@ -13,6 +13,7 @@ function snmp_array($oid, $device, $array, $mib = 0) { $cmd .= $oid; $data = trim(shell_exec($cmd)); $device_id = $device['device_id']; + echo("Caching: $oid\n"); foreach(explode("\n", $data) as $entry) { list ($this_oid, $this_value) = split("=", $entry); list ($this_oid, $this_index) = explode(".", $this_oid); @@ -26,26 +27,72 @@ function snmp_array($oid, $device, $array, $mib = 0) { return $array; } - $i = 0; $device_query = mysql_query("SELECT * FROM `devices` WHERE `ignore` = '0' AND `disabled` = '0' AND `status` = '1' $where ORDER BY device_id DESC"); while ($device = mysql_fetch_array($device_query)) { - echo($device['hostname'] . "\n"); + echo("-> " . $device['hostname'] . "\n"); $i++; - $data_oids = array('ifName','ifDescr','ifAlias', 'ifAdminStatus', 'ifOperStatus', 'ifMtu', 'ifSpeed', 'ifHCSpeed', 'ifType', 'ifPhysAddress'); + + // Build SNMP Cache Array + $data_oids = array('ifName','ifDescr','ifAlias', 'ifAdminStatus', 'ifOperStatus', 'ifMtu', 'ifSpeed', 'ifHighSpeed', 'ifType', 'ifPhysAddress'); $stat_oids = array('ifHCInOctets', 'ifHCOutOctets', 'ifInErrors', 'ifOutErrors', 'ifInUcastPkts', 'ifOutUcastPkts', 'ifInNUcastPkts', 'ifOutNUcastPkts'); - $cisco_oids = array('locIfHardType', 'vmVlan', 'vlanTrunkPortEncapsulationOperType'); + $etherlike_oids = array('dot3StatsAlignmentErrors', 'dot3StatsFCSErrors', 'dot3StatsSingleCollisionFrames', 'dot3StatsMultipleCollisionFrames', 'dot3StatsSQETestErrors', 'dot3StatsDeferredTransmissions', 'dot3StatsLateCollisions', 'dot3StatsExcessiveCollisions', 'dot3StatsInternalMacTransmitErrors', 'dot3StatsCarrierSenseErrors', 'dot3StatsFrameTooLongs', 'dot3StatsInternalMacReceiveErrors', 'dot3StatsSymbolErrors', 'dot3StatsDuplexStatus'); + $cisco_oids = array('locIfHardType', 'vmVlan', 'vlanTrunkPortEncapsulationOperType', 'vlanTrunkPortNativeVlan', 'locIfInRunts', 'locIfInGiants', 'locIfInCRC', 'locIfInFrame', 'locIfInOverrun', 'locIfInIgnored', 'locIfInAbort', 'locIfCollisions', 'locIfInputQueueDrops', 'locIfOutputQueueDrops'); + $pagp_oids = array('pagpOperationMode', 'pagpPortState', 'pagpPartnerDeviceId', 'pagpPartnerLearnMethod', 'pagpPartnerIfIndex', 'pagpPartnerGroupIfIndex', 'pagpPartnerDeviceName', 'pagpEthcOperationMode', 'pagpDeviceId', 'pagpGroupIfIndex'); foreach ($data_oids as $oid) { - $array = snmp_array($oid, $device, $array); +# $array = snmp_array($oid, $device, $array); } foreach ($stat_oids as $oid) { - $array = snmp_array($oid, $device, $array); +# $array = snmp_array($oid, $device, $array); + } + foreach ($etherlike_oids as $oid) { +# $array = snmp_array($oid, $device, $array, "EtherLike-MIB"); } foreach ($cisco_oids as $oid) { - $array = snmp_array($oid, $device, $array, "CISCO-SMI:CISCO-VLAN-MEMBERSHIP-MIB:CISCO-VTP-MIB"); +# $array = snmp_array($oid, $device, $array, "CISCO-SMI:CISCO-VLAN-MEMBERSHIP-MIB:CISCO-VTP-MIB:OLD-CISCO-INTERFACES-MIB"); + } + foreach ($pagp_oids as $oid) { + $array = snmp_array($oid, $device, $array, "CISCO-PAGP-MIB"); + } + // End Building SNMP Cache Array + + // New interface detection + ///// TO DO + // End New interface detection + + // Loop interfaces in the DB and update where necessary + + $port_query = mysql_query("SELECT * FROM `interfaces` WHERE `device_id` = '".$device['device_id']."'"); + while ($port = mysql_fetch_array($port_query)) { + echo(" --> " . $port['ifDescr'] . " "); + if($array[$device[device_id]][$port[ifIndex]]) { // Check to make sure Port data is cached. + $this_port = $array[$device[device_id]][$port[ifIndex]]; + if($this_port['pagpOperationMode']) { // Check if this port has PAgP enabled. + echo($this_port['pagpOperationMode'] ." -> " . $port['pagpOperationMode'] . " "); + unset($separator); unset($update); + foreach ($pagp_oids as $oid) { // Loop the OIDs + if ( $this_port[$oid] != $port[$oid] ) { // If data has changed, build a query + $update .= $separator . "`$oid` = '".$this_port[$oid]."'"; + $separator = ", "; + } + } + if ($update) { + $update_query = "UPDATE `interfaces` SET "; + $update_query .= $update; + $update_query .= " WHERE `interface_id` = '" . $port['interface_id'] . "'"; + @mysql_query($update_query); + echo("PAgP "); + unset($separator); unset($update_query); unset($update); + } + } + } else { + echo("Port Deleted?"); // Port missing from SNMP cache? + } + echo("\n"); } - print_r($array); + unset($array); + echo("\n"); } echo("$i devices polled");