diff --git a/html/includes/graphs/mac_acc_bits.inc.php b/html/includes/graphs/mac_acc_bits.inc.php new file mode 100644 index 000000000..b0561a52d --- /dev/null +++ b/html/includes/graphs/mac_acc_bits.inc.php @@ -0,0 +1,13 @@ + diff --git a/html/includes/graphs/multi_bits_separate.inc.php b/html/includes/graphs/multi_bits_separate.inc.php new file mode 100644 index 000000000..e21fd5f2f --- /dev/null +++ b/html/includes/graphs/multi_bits_separate.inc.php @@ -0,0 +1,76 @@ + diff --git a/html/includes/graphs/pagp_bits.inc.php b/html/includes/graphs/pagp_bits.inc.php new file mode 100644 index 000000000..048925964 --- /dev/null +++ b/html/includes/graphs/pagp_bits.inc.php @@ -0,0 +1,22 @@ + diff --git a/html/pages/device/overview.inc.php b/html/pages/device/overview.inc.php index 173ba89ba..0612e49a6 100644 --- a/html/pages/device/overview.inc.php +++ b/html/pages/device/overview.inc.php @@ -71,6 +71,8 @@ if(mysql_result(mysql_query("SELECT count(*) from cempMemPool WHERE device_id = $mempool['descr_fixed'] = str_replace("Routing Processor", "RP", $mempool['descr_fixed']); $mempool['descr_fixed'] = str_replace("Switching Processor", "SP", $mempool['descr_fixed']); $mempool['descr_fixed'] = str_replace("Processor", "Proc", $mempool['descr_fixed']); + $mempool['descr_fixed'] = str_replace("Sub-Module", "Mod", $mempool['descr_fixed']); + $mempool['descr_fixed'] = str_replace("DFC Card", "DFC", $mempool['descr_fixed']); $proc_url = "?page=device/".$device['device_id']."/sensors/mempools/"; diff --git a/includes/polling/interfaces.inc.php b/includes/polling/interfaces.inc.php index 72967ca53..cee6eb951 100644 --- a/includes/polling/interfaces.inc.php +++ b/includes/polling/interfaces.inc.php @@ -98,7 +98,7 @@ while ($interface = mysql_fetch_array($interface_query)) { } if ( $interface['ifAlias'] != $ifAlias && $ifAlias != "" ) { - $update .= $seperator . "`ifAlias` = '$ifAlias'"; + $update .= $seperator . "`ifAlias` = '".mysql_real_escape_string($ifAlias)."'"; $seperator = ", "; mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $interface['device_id'] . "', '" . $interface['interface_id'] . "', NOW(), 'ifAlias -> $ifAlias')"); } @@ -118,7 +118,7 @@ while ($interface = mysql_fetch_array($interface_query)) { $update_query = "UPDATE `interfaces` SET "; $update_query .= $update; $update_query .= " WHERE `interface_id` = '" . $interface['interface_id'] . "'"; -# echo("Updating : " . $device['hostname'] . " $ifDescr\nSQL :$update_query\n\n"); + echo("Updating : " . $device['hostname'] . " $ifDescr\nSQL :$update_query\n\n"); $update_result = mysql_query($update_query); } else { # echo("Not Updating : " . $device['hostname'] ." $ifDescr ( " . $interface['ifDescr'] . " )\n\n"); diff --git a/includes/static-config.php b/includes/static-config.php index 6bda7188e..f102adc04 100644 --- a/includes/static-config.php +++ b/includes/static-config.php @@ -71,11 +71,16 @@ $exists = false; $columns = mysql_query("SHOW columns FROM `interfaces`"); while($c = mysql_fetch_assoc($columns)){ if($c['Field'] == "pagpOperationMode"){ - $pagp = true; - break; + $db_pagp = true; + } + if($c['Field'] == "portName"){ + $db_portName = true; + } + if($c['Field'] == "ifHighSpeed"){ + $db_ifHighSpeed = true; } } -if(!$pagp) { +if(!$db_pagp) { mysql_query("ALTER TABLE `interfaces` ADD `pagpOperationMode` VARCHAR( 32 ) NULL , ADD `pagpPortState` VARCHAR( 16 ) NULL , ADD `pagpPartnerDeviceId` VARCHAR( 48 ) NULL , @@ -85,7 +90,10 @@ ADD `pagpPartnerGroupIfIndex` INT NULL , ADD `pagpPartnerDeviceName` VARCHAR( 128 ) NULL , ADD `pagpEthcOperationMode` VARCHAR( 16 ) NULL , ADD `pagpDeviceId` VARCHAR( 48 ) NULL , -ADD `pagpGroupIfIndex` INT NULL"); -} +ADD `pagpGroupIfIndex` INT NULL"); } + +if(!$db_portName) { mysql_query("ALTER TABLE `interfaces` ADD `portName` VARCHAR( 128 ) NULL DEFAULT NULL AFTER `ifName`"); } +if(!$db_ifHighSpeed) { mysql_query("ALTER TABLE `interfaces` ADD `ifHighSpeed` INT ( 11 ) NULL DEFAULT NULL AFTER `ifSpeed`"); } + ?> diff --git a/mibs/CISCO-LAG-MIB.my b/mibs/CISCO-LAG-MIB.my new file mode 100644 index 000000000..36ae3f768 --- /dev/null +++ b/mibs/CISCO-LAG-MIB.my @@ -0,0 +1,623 @@ +-- ***************************************************************** +-- CISCO-LAG-MIB.my: Cisco LAG MIB +-- +-- October 2001, Liwei Lue +-- +-- Copyright (c) 2001-2003, 2004, 2006, 2008 by cisco Systems, Inc. +-- All rights reserved. +-- +-- ***************************************************************** + +CISCO-LAG-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ciscoMgmt + FROM CISCO-SMI + dot3adAggPortEntry, + dot3adAggPortListEntry + FROM IEEE8023-LAG-MIB + ifIndex + FROM IF-MIB; + + +ciscoLagMIB MODULE-IDENTITY + LAST-UPDATED "200801080000Z" + 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 + "Cisco Link Aggregation module for managing IEEE Std + 802.3ad. + + This MIB provides Link Aggregation information that are + either excluded by IEEE Std 802.3ad (IEEE8023-LAG-MIB) + or specific to Cisco products." + REVISION "200801080000Z" + DESCRIPTION + "Modified the description of clagAggPortListPorts." + REVISION "200606210000Z" + DESCRIPTION + "Added clagAggMaxAggregatorsGroup and modified the + description of clagAggPortListPorts." + REVISION "200406110000Z" + DESCRIPTION + "Added clagAggPortListTable." + REVISION "200212130000Z" + DESCRIPTION + "Added a new value vlanIpPort(4) in TEXTUAL-CONVENTION + ClagDistributionProtocol. + Added a new object clagAggDistributionMplsProtocol." + REVISION "200201020000Z" + DESCRIPTION + "Modified Description of clagAggDistributionProtocol." + REVISION "200110230000Z" + DESCRIPTION + "Initial version of this MIB module. + Support Distribution configuration for LACP, Aggregation + protocol control, and Administrative status for LACP." + ::= { ciscoMgmt 225 } + + +clagMIBObjects OBJECT IDENTIFIER + ::= { ciscoLagMIB 1 } + + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +ClagDistributionProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated type for all the supported load balancing + algorithms used on the LACP interface to distribute + outgoing data frames among its component interaces, such + as IP address. + + ip(1) IP address + mac(2) MAC address + port(3) port number + vlanIpPort(4) vlan number, IP address and + port number" + SYNTAX INTEGER { + ip(1), + mac(2), + port(3), + vlanIpPort(4) + } + +ClagDistributionAddressMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated type for all the supported load + balancing address modes to distribute traffic + across multiple links. The address mode can be + source, destination, or both used on this LACP + interface to distribute outgoing data frames among + its component interfaces. + + source(1) Source address. + destination(2) Destination address. + both(3) both, Source and Destination." + SYNTAX INTEGER { + source(1), + destination(2), + both(3) + } + +ClagDistributionMplsProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated type for all the supported load balancing + algorithms used on the LACP interface to distribute + outgoing MPLS (Multi-Protocol Label Switching) data + frames among its component interfaces, such as + MPLS label. + + label(1) MPLS label + labelIp(2) MPLS label or IP address" + SYNTAX INTEGER { + label(1), + labelIp(2) + } + +ClagAggregationProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated type for all the supported aggregation + protocols. + + lacp(1) Link Aggregation Control Protocol(LACP), + IEEE 802.3ad + pagp(2) Port Aggregation Protocol" + SYNTAX INTEGER { + lacp(1), + pagp(2) + } + +ClagPortAdminStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated type for all the LACP administrative states on + a particular aggregation port. + + off(1) No LACP involved on the aggregation port. + + on(2) The aggregation port always join link + aggregation whithout any LACP protocol + involved. + + active(3) Active LACP indicates the port's preference + to participate in the protocol regardless of + Partner's control value. + + passive(4) Passive indicates the port's preference for + not transmitting LACP PDU unless its Partner's + control value is Active LACP." + SYNTAX INTEGER { + off(1), + on(2), + active(3), + passive(4) + } +-- ------------------------------------------------------------- +-- +-- ------------------------------------------------------------- +-- groups in the LAG MIB +-- ------------------------------------------------------------- + +clagGlobalConfigObjects OBJECT IDENTIFIER + ::= { clagMIBObjects 1 } + +clagAgg OBJECT IDENTIFIER + ::= { clagMIBObjects 2 } + +clagAggPort OBJECT IDENTIFIER + ::= { clagMIBObjects 3 } + +clagAggPortList OBJECT IDENTIFIER + ::= { clagMIBObjects 4 } + + +-- ------------------------------------------------------------- +-- +-- ------------------------------------------------------------- +-- The Aggregation Global Configuration +-- ------------------------------------------------------------- + +clagAggDistributionProtocol OBJECT-TYPE + SYNTAX ClagDistributionProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the load balancing algorithms + used on this LACP interface to distribute outgoing data + frames among its component interfaces." + ::= { clagGlobalConfigObjects 1 } + +clagAggDistributionAddressMode OBJECT-TYPE + SYNTAX ClagDistributionAddressMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The load balancing address mode for the device." + ::= { clagGlobalConfigObjects 2 } + +clagAggDistributionMplsProtocol OBJECT-TYPE + SYNTAX ClagDistributionMplsProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the load balancing algorithms + used on this LACP interface to distribute outgoing MPLS + data frames among its component interfaces. + + This object is only instantiated on platforms which + support aggregation load balancing for MPLS packets." + ::= { clagGlobalConfigObjects 3 } + +clagAggMaxAggregators OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the maximum number of aggregators + supported by the device." + ::= { clagGlobalConfigObjects 4 } +-- ------------------------------------------------------------- +-- The Aggregation Protocol Table +-- ------------------------------------------------------------- + +clagAggProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClagAggProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains protocol information about every + interface which supports link aggregation." + ::= { clagAgg 1 } + +clagAggProtocolEntry OBJECT-TYPE + SYNTAX ClagAggProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing aggregation protocol type for a + particular interface. An entry is created in this + table when its associated ifEntry is created and that + interface supports link aggregation. The entry of this + table is deleted when the associated ifEntry is removed." + INDEX { ifIndex } + ::= { clagAggProtocolTable 1 } + +ClagAggProtocolEntry ::= SEQUENCE { + clagAggProtocolType ClagAggregationProtocol +} + +clagAggProtocolType OBJECT-TYPE + SYNTAX ClagAggregationProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The aggregation protocol type for the interface. + + On some platforms, aggregation protocol may be assigned per + group. The group can be a collection of the ports which belong + to a module or system. If the aggregation protocol is assigned + to any of the ports in such group then the aggregation protocol + will apply to all ports in the same group. + + On some platforms, aggregation protocol type can be assigned + per aggregator. If multiple ports belong to a aggregator, + the aggregation protocol assigned to any of the ports in such + aggregator will apply to all ports in the same." + ::= { clagAggProtocolEntry 1 } + + +-- ------------------------------------------------------------- +-- The Aggregation Port Configuration Table +-- ------------------------------------------------------------- + +clagAggPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClagAggPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every + aggregation port that is associated with this system. + This table contains additional objects for the + dot3adAggPortTable." + REFERENCE "IEEE 802.3 Subclause 30.7.2" + ::= { clagAggPort 1 } + +clagAggPortEntry OBJECT-TYPE + SYNTAX ClagAggPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing additional management information + applicable to a particular aggregation port." + AUGMENTS { dot3adAggPortEntry } + + ::= { clagAggPortTable 1 } + +ClagAggPortEntry ::= SEQUENCE { + clagAggPortAdminStatus ClagPortAdminStatus +} + +clagAggPortAdminStatus OBJECT-TYPE + SYNTAX ClagPortAdminStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status of the LACP protocol on this + aggregation port." + ::= { clagAggPortEntry 1 } + + +-- ------------------------------------------------------------- +-- The Port List Table +-- ------------------------------------------------------------- + +clagAggPortListTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClagAggPortListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table augments the dot3adAggPortListTable and + provides the complete list of ports associated with + each Aggregator." + REFERENCE "IEEE 802.3 Subclause 30.7.1.1.30" + ::= { clagAggPortList 1 } + +clagAggPortListEntry OBJECT-TYPE + SYNTAX ClagAggPortListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of the ports associated with a given Aggregator." + AUGMENTS { dot3adAggPortListEntry } + + ::= { clagAggPortListTable 1 } + +ClagAggPortListEntry ::= SEQUENCE { + clagAggPortListPorts OCTET STRING +} + +clagAggPortListPorts OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a list of ports currently associated + with this Aggregator in the format of + '[number_of_ports][cieIfDot1dBaseMappingPort1][...] + [cieIfDot1dBaseMappingPortn]' + + where + [number_of_ports] is of size 2 octet and indicates + the number of ports contains in this object. It + also indicates the number of cieIfDot1dBaseMappingPort field + following this field. + + [cieIfDot1dBaseMappingPort'n'] is the value of + cieIfDot1dBaseMappingPort of the 'n' port associated with this + Aggregation and has size of 2 octets where n is up to + [number_of_ports]." + REFERENCE "IEEE 802.3 Subclause 30.7.1.1.30" + ::= { clagAggPortListEntry 1 } + + +-- ------------------------------------------------------------- +-- +-- ------------------------------------------------------------- +-- Notifications +-- ------------------------------------------------------------- + +clagMIBNotifications OBJECT IDENTIFIER + ::= { ciscoLagMIB 2 } + +-- no notifications defined +-- +-- ------------------------------------------------------------- +-- Conformance +-- ------------------------------------------------------------- + +clagMIBConformance OBJECT IDENTIFIER + ::= { ciscoLagMIB 3 } + +clagMIBCompliances OBJECT IDENTIFIER + ::= { clagMIBConformance 1 } + +clagMIBGroups OBJECT IDENTIFIER + ::= { clagMIBConformance 2 } + + +-- ------------------------------------------------------------- +-- +-- ------------------------------------------------------------- +-- Compliance +-- ------------------------------------------------------------- + +clagMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for entities which implement + the Cisco Link Aggregation MIB" + MODULE -- this module + MANDATORY-GROUPS { + clagAggProtocolGroup, + clagAggPortGroup + } + + GROUP clagAggDistributionGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing." + + OBJECT clagAggProtocolType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT clagAggPortAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { clagMIBCompliances 1 } + +clagMIBCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for entities which implement + the Cisco Link Aggregation MIB" + MODULE -- this module + MANDATORY-GROUPS { + clagAggProtocolGroup, + clagAggPortGroup + } + + GROUP clagAggDistributionGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing." + + GROUP clagAggDistributionMplsGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing for MPLS + packets." + + OBJECT clagAggProtocolType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT clagAggPortAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { clagMIBCompliances 2 } + +clagMIBCompliance3 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for entities which implement + the Cisco Link Aggregation MIB" + MODULE -- this module + MANDATORY-GROUPS { + clagAggProtocolGroup, + clagAggPortGroup + } + + GROUP clagAggDistributionGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing." + + GROUP clagAggDistributionMplsGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing for MPLS + packets." + + GROUP clagAggPortListGroup + DESCRIPTION + "This group is mandatory for the devices which + supports dot1dBasePort value greater than 2048." + + OBJECT clagAggProtocolType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT clagAggPortAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { clagMIBCompliances 3 } + +clagMIBCompliance4 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the Cisco Link Aggregation MIB" + MODULE -- this module + MANDATORY-GROUPS { + clagAggProtocolGroup, + clagAggPortGroup + } + + GROUP clagAggDistributionGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing." + + GROUP clagAggDistributionMplsGroup + DESCRIPTION + "This group is mandatory for the devices which + supported aggregation load balancing for MPLS + packets." + + GROUP clagAggPortListGroup + DESCRIPTION + "This group is mandatory for the devices which + supports dot1dBasePort value greater than 2048." + + GROUP clagAggMaxAggregatorsGroup + DESCRIPTION + "This group is mandatory for the devices which + provides the information about the maximum number + of aggregators supported by the device." + + OBJECT clagAggProtocolType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT clagAggPortAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { clagMIBCompliances 4 } + +-- ------------------------------------------------------------- +-- Units of Conformance +-- ------------------------------------------------------------- + +clagAggProtocolGroup OBJECT-GROUP + OBJECTS { clagAggProtocolType } + STATUS current + DESCRIPTION + "The object that provide aggregation protocol type of an + interface. These are additional to the IEEE Std 802.3ad + MIB." + ::= { clagMIBGroups 1 } + +clagAggPortGroup OBJECT-GROUP + OBJECTS { clagAggPortAdminStatus } + STATUS current + DESCRIPTION + "A collection of objects that provide admin status + about an aggregation port. These are additional to the + IEEE Std 802.3ad MIB." + ::= { clagMIBGroups 2 } + +clagAggDistributionGroup OBJECT-GROUP + OBJECTS { + clagAggDistributionProtocol, + clagAggDistributionAddressMode + } + STATUS current + DESCRIPTION + "A collection of objects that provide the load balancing + information for an aggregator. These are additional to + the IEEE Std 802.3ad MIB." + ::= { clagMIBGroups 3 } + +clagAggDistributionMplsGroup OBJECT-GROUP + OBJECTS { clagAggDistributionMplsProtocol } + STATUS current + DESCRIPTION + "A collection of objects that provide the load balancing + information for an aggregator for MPLS packets. + These are additional to the IEEE Std 802.3ad MIB." + ::= { clagMIBGroups 4 } + +clagAggPortListGroup OBJECT-GROUP + OBJECTS { clagAggPortListPorts } + STATUS current + DESCRIPTION + "A collection of object that provides information about + ports in an aggregation." + ::= { clagMIBGroups 5 } + +clagAggMaxAggregatorsGroup OBJECT-GROUP + OBJECTS { clagAggMaxAggregators } + STATUS current + DESCRIPTION + "A collection of object that provides information about + the maximum number of aggregators supported by the + device." + ::= { clagMIBGroups 6 } + +END diff --git a/mibs/IEEE8023-LAG-MIB.my b/mibs/IEEE8023-LAG-MIB.my new file mode 100644 index 000000000..f029f6d67 --- /dev/null +++ b/mibs/IEEE8023-LAG-MIB.my @@ -0,0 +1,1400 @@ +IEEE8023-LAG-MIB DEFINITIONS ::= BEGIN + + +-- ------------------------------------------------------------- +-- IEEE 802.3ad MIB +-- ------------------------------------------------------------- + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, TimeTicks + FROM SNMPv2-SMI + DisplayString, MacAddress, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InterfaceIndex + FROM IF-MIB + PortList + FROM Q-BRIDGE-MIB + ; + + +lagMIB MODULE-IDENTITY + LAST-UPDATED "200006270000Z" + ORGANIZATION "IEEE 802.3 Working Group" + CONTACT-INFO + " stds-802-3-trunking@majordomo.ieee.org" + DESCRIPTION + "The Link Aggregation module for managing IEEE Std + 802.3ad." + ::= { iso(1) member-body(2) us(840) ieee802dot3(10006) + snmpmibs(300) 43 } + + +lagMIBObjects OBJECT IDENTIFIER ::= { lagMIB 1 } + + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + + +LacpKey ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Actor or Partner Key value." + SYNTAX INTEGER (0..65535) + + +LacpState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Actor and Partner State values from the LACPDU." + SYNTAX BITS { + lacpActivity(0), + lacpTimeout(1), + aggregation(2), + synchronization(3), + collecting(4), + distributing(5), + defaulted(6), + expired(7) + } + + +ChurnState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The state of the Churn Detection machine." + SYNTAX INTEGER { + noChurn(1), + churn(2), + churnMonitor(3) + } + + +-- ------------------------------------------------------------- + + +-- ------------------------------------------------------------- +-- groups in the LAG MIB +-- ------------------------------------------------------------- + + +dot3adAgg OBJECT IDENTIFIER ::= { lagMIBObjects 1 } +dot3adAggPort OBJECT IDENTIFIER ::= { lagMIBObjects 2 } + + +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- The Tables Last Changed Object +-- ------------------------------------------------------------- + +dot3adTablesLastChanged OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the time of the most recent + change to the dot3adAggTable, dot3adAggPortListTable, or + dot3adAggPortTable." +::= { lagMIBObjects 3 } + +-- ------------------------------------------------------------- +-- The Aggregator Configuration Table +-- ------------------------------------------------------------- + + +dot3adAggTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3adAggEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every + Aggregator that is associated with this System." + REFERENCE + "IEEE 802.3 Subclause 30.7.1" + ::= { dot3adAgg 1 } + + +dot3adAggEntry OBJECT-TYPE + SYNTAX Dot3adAggEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of the Aggregator parameters. This is indexed + by the ifIndex of the Aggregator." + INDEX { dot3adAggIndex } + ::= { dot3adAggTable 1 } + + +Dot3adAggEntry ::= + SEQUENCE { + dot3adAggIndex + InterfaceIndex, + dot3adAggMACAddress + MacAddress, + dot3adAggActorSystemPriority + INTEGER, + dot3adAggActorSystemID + MacAddress, + dot3adAggAggregateOrIndividual + TruthValue, + dot3adAggActorAdminKey + LacpKey, + dot3adAggActorOperKey + LacpKey, + dot3adAggPartnerSystemID + MacAddress, + dot3adAggPartnerSystemPriority + INTEGER, + dot3adAggPartnerOperKey + LacpKey, + dot3adAggCollectorMaxDelay + INTEGER + } + + +dot3adAggIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier allocated to this Aggregator by + the local System. This attribute identifies an + Aggregator instance among the subordinate managed + objects of the containing object. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.1" + ::= { dot3adAggEntry 1 } + + +dot3adAggMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 6-octet read-only value carrying the individual + MAC address assigned to the Aggregator." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.9" + ::= { dot3adAggEntry 2 } + + +dot3adAggActorSystemPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 2-octet read-write value indicating the priority + value associated with the Actor's System ID." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.5" + ::= { dot3adAggEntry 3 } + + +dot3adAggActorSystemID OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 6-octet read-write MAC address value used as a unique + identifier for the System that contains this Aggregator. + NOTE-From the perspective of the Link Aggregation + mechanisms described in Clause 43, only a single + combination of Actor's System ID and System Priority are + considered, and no distinction is made between the + values of these parameters for an Aggregator and the + port(s) that are associated with it; i.e., the protocol + is described in terms of the operation of aggregation + within a single System. However, the managed objects + provided for the Aggregator and the port both allow + management of these parameters. The result of this is to + permit a single piece of equipment to be configured by + management to contain more than one System from the + point of view of the operation of Link Aggregation. This + may be of particular use in the configuration of + equipment that has limited aggregation capability (see + 43.6)." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.4" + ::= { dot3adAggEntry 4 } + + +dot3adAggAggregateOrIndividual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A read-only Boolean value indicating whether the + Aggregator represents an Aggregate (`TRUE') or + an Individual link (`FALSE')." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.6" + ::= { dot3adAggEntry 5 } + + +dot3adAggActorAdminKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current administrative value of the Key for the + Aggregator. The administrative Key value may differ from + the operational Key value for the reasons discussed in + 43.6.2. This is a 16-bit, read-write value. The meaning + of particular Key values is of local significance." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.7" + ::= { dot3adAggEntry 6 } + + +dot3adAggActorOperKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational value of the Key for the + Aggregator. The administrative Key value may differ from + the operational Key value for the reasons discussed in + 43.6.2. This is a 16-bit read-only value. The meaning + of particular Key values is of local significance." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.8" + ::= { dot3adAggEntry 7 } + + +dot3adAggPartnerSystemID OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 6-octet read-only MAC address value consisting of the + unique identifier for the current protocol Partner of + this Aggregator. A value of zero indicates that there is + no known Partner. If the aggregation is manually + configured, this System ID value will be a value + assigned by the local System." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.10" + ::= { dot3adAggEntry 8 } + + +dot3adAggPartnerSystemPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 2-octet read-only value that indicates the priority + value associated with the Partner's System ID. If the + aggregation is manually configured, this System Priority + value will be a value assigned by the local System." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.11" + ::= { dot3adAggEntry 9 } + + +dot3adAggPartnerOperKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational value of the Key for the + Aggregator's current protocol Partner. This is a 16-bit + read-only value. If the aggregation is manually + configured, this Key value will be a value assigned by + the local System." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.12" + ::= { dot3adAggEntry 10 } + + +dot3adAggCollectorMaxDelay OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this 16-bit read-write attribute defines + the maximum delay, in tens of microseconds, that may be + imposed by the Frame Collector between receiving a frame + from an Aggregator Parser, and either delivering the + frame to its MAC Client or discarding the frame (see + 43.2.3.1.1)." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.32" + ::= { dot3adAggEntry 11 } + + +-- ------------------------------------------------------------- +-- The Aggregation Port List Table +-- ------------------------------------------------------------- + + +dot3adAggPortListTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3adAggPortListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains a list of all the ports + associated with each Aggregator." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.30" + ::= { dot3adAgg 2 } + + +dot3adAggPortListEntry OBJECT-TYPE + SYNTAX Dot3adAggPortListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of the ports associated with a given Aggregator. + This is indexed by the ifIndex of the Aggregator." + INDEX { dot3adAggIndex } + ::= { dot3adAggPortListTable 1 } + + +Dot3adAggPortListEntry ::= + SEQUENCE { + dot3adAggPortListPorts + PortList + } + + +dot3adAggPortListPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports currently associated with + this Aggregator. Each bit set in this list represents + an Actor Port member of this Link Aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.1.1.30" + ::= { dot3adAggPortListEntry 1 } + + +-- ------------------------------------------------------------- +-- The Aggregation Port Table +-- ------------------------------------------------------------- + + +dot3adAggPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3adAggPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains Link Aggregation Control + configuration information about every + Aggregation Port associated with this device. + A row appears in this table for each physical port." + REFERENCE + "IEEE 802.3 Subclause 30.7.2" + ::= { dot3adAggPort 1 } + + +dot3adAggPortEntry OBJECT-TYPE + SYNTAX Dot3adAggPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Link Aggregation Control configuration + parameters for each Aggregation Port on this device." + INDEX { dot3adAggPortIndex } + ::= { dot3adAggPortTable 1 } + + +Dot3adAggPortEntry ::= + SEQUENCE { + dot3adAggPortIndex + InterfaceIndex, + dot3adAggPortActorSystemPriority + INTEGER, + dot3adAggPortActorSystemID + MacAddress, + dot3adAggPortActorAdminKey + LacpKey, + dot3adAggPortActorOperKey + LacpKey, + dot3adAggPortPartnerAdminSystemPriority + INTEGER, + dot3adAggPortPartnerOperSystemPriority + INTEGER, + dot3adAggPortPartnerAdminSystemID + MacAddress, + dot3adAggPortPartnerOperSystemID + MacAddress, + dot3adAggPortPartnerAdminKey + LacpKey, + dot3adAggPortPartnerOperKey + LacpKey, + dot3adAggPortSelectedAggID + InterfaceIndex, + dot3adAggPortAttachedAggID + InterfaceIndex, + dot3adAggPortActorPort + INTEGER, + dot3adAggPortActorPortPriority + INTEGER, + dot3adAggPortPartnerAdminPort + INTEGER, + dot3adAggPortPartnerOperPort + INTEGER, + dot3adAggPortPartnerAdminPortPriority + INTEGER, + dot3adAggPortPartnerOperPortPriority + INTEGER, + dot3adAggPortActorAdminState + LacpState, + dot3adAggPortActorOperState + LacpState, + dot3adAggPortPartnerAdminState + LacpState, + dot3adAggPortPartnerOperState + LacpState, + dot3adAggPortAggregateOrIndividual + TruthValue + } + + +dot3adAggPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the port" + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.1" + ::= { dot3adAggPortEntry 1 } + + +dot3adAggPortActorSystemPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 2-octet read-write value used to define the priority + value associated with the Actor's System ID." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.2" + ::= { dot3adAggPortEntry 2 } + + +dot3adAggPortActorSystemID OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 6-octet read-only MAC address value that defines the + value of the System ID for the System that contains this + Aggregation Port." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.3" + ::= { dot3adAggPortEntry 3 } + + +dot3adAggPortActorAdminKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current administrative value of the Key for the + Aggregation Port. This is a 16-bit read-write value. + The meaning of particular Key values is of local + significance." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.4" + ::= { dot3adAggPortEntry 4 } + + +dot3adAggPortActorOperKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current operational value of the Key for the + Aggregation Port. This is a 16-bit read-only value. + The meaning of particular Key values is of local + significance." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.5" + ::= { dot3adAggPortEntry 5 } + + +dot3adAggPortPartnerAdminSystemPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 2-octet read-write value used to define the + administrative value of priority associated with the + Partner's System ID. The assigned value is used, along + with the value of aAggPortPartnerAdminSystemID, + aAggPortPartnerAdminKey, aAggPortPartnerAdminPort, and + aAggPortPartnerAdminPortPriority, in order to achieve + manually configured aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.6" + ::= { dot3adAggPortEntry 6 } + + +dot3adAggPortPartnerOperSystemPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 2-octet read-only value indicating the operational + value of priority associated with the Partner's System + ID. The value of this attribute may contain the manually + configured value carried in + aAggPortPartnerAdminSystemPriority if there is no + protocol Partner." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.7" + ::= { dot3adAggPortEntry 7 } + + +dot3adAggPortPartnerAdminSystemID OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 6-octet read-write MACAddress value representing the + administrative value of the Aggregation Port's protocol + Partner's System ID. The assigned value is used, along + with the value of aAggPortPartnerAdminSystemPriority, + aAggPortPartnerAdminKey, aAggPortPartnerAdminPort, and + aAggPortPartnerAdminPortPriority, in order to achieve + manually configured aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.8" + ::= { dot3adAggPortEntry 8 } + + +dot3adAggPortPartnerOperSystemID OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 6-octet read-only MACAddress value representing the + current value of the Aggregation Port's protocol + Partner's System ID. A value of zero indicates that + there is no known protocol Partner. The value of this + attribute may contain the manually configured value + carried in aAggPortPartnerAdminSystemID if there is no + protocol Partner." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.9" + ::= { dot3adAggPortEntry 9 } + + +dot3adAggPortPartnerAdminKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current administrative value of the Key for the + protocol Partner. This is a 16-bit read-write value. + The assigned value is used, along with the value of + aAggPortPartnerAdminSystemPriority, + aAggPortPartnerAdminSystemID, aAggPortPartnerAdminPort, + and aAggPortPartnerAdminPortPriority, in order to + achieve manually configured aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.10" + ::= { dot3adAggPortEntry 10 } + + +dot3adAggPortPartnerOperKey OBJECT-TYPE + SYNTAX LacpKey + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational value of the Key for the + protocol Partner. The value of this attribute may + contain the manually configured value carried in + aAggPortPartnerAdminKey if there is no protocol Partner. + This is a 16-bit read-only value." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.11" + ::= { dot3adAggPortEntry 11 } + + +dot3adAggPortSelectedAggID OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identifier value of the Aggregator that this + Aggregation Port has currently selected. Zero indicates + that the Aggregation Port has not selected an + Aggregator, either because it is in the process of + detaching from an Aggregator or because there is no + suitable Aggregator available for it to select. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.12" + ::= { dot3adAggPortEntry 12 } + + +dot3adAggPortAttachedAggID OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identifier value of the Aggregator that this + Aggregation Port is currently attached to. Zero + indicates that the Aggregation Port is not currently + attached to an Aggregator. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.13" + ::= { dot3adAggPortEntry 13 } + + +dot3adAggPortActorPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number locally assigned to the Aggregation + Port. The port number is communicated in LACPDUs as the + Actor_Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.14" + ::= { dot3adAggPortEntry 14 } + + +dot3adAggPortActorPortPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The priority value assigned to this Aggregation Port. + This 16-bit value is read-write." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.15" + ::= { dot3adAggPortEntry 15 } + + +dot3adAggPortPartnerAdminPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current administrative value of the port number for + the protocol Partner. This is a 16-bit read-write value. + The assigned value is used, along with the value of + aAggPortPartnerAdminSystemPriority, + aAggPortPartnerAdminSystemID, aAggPortPartnerAdminKey, + and aAggPortPartnerAdminPortPriority, in order to + achieve manually configured aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.16" + ::= { dot3adAggPortEntry 16 } + + +dot3adAggPortPartnerOperPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational port number assigned to this + Aggregation Port by the Aggregation Port's protocol + Partner. The value of this attribute may contain the + manually configured value carried in + aAggPortPartnerAdminPort if there is no protocol + Partner. This 16-bit value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.17" + ::= { dot3adAggPortEntry 17 } + + +dot3adAggPortPartnerAdminPortPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current administrative value of the port priority + for the protocol Partner. This is a 16-bit read-write + value. The assigned value is used, along with the value + of aAggPortPartnerAdminSystemPriority, + aAggPortPartnerAdminSystemID, aAggPortPartnerAdminKey, + and aAggPortPartnerAdminPort, in order to achieve + manually configured aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.18" + ::= { dot3adAggPortEntry 18 } + + +dot3adAggPortPartnerOperPortPriority OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The priority value assigned to this Aggregation Port by + the Partner. The value of this attribute may contain the + manually configured value carried in + aAggPortPartnerAdminPortPriority if there is no protocol + Partner. This 16-bit value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.19" + ::= { dot3adAggPortEntry 19 } + + +dot3adAggPortActorAdminState OBJECT-TYPE + SYNTAX LacpState + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A string of 8 bits, corresponding to the administrative + values of Actor_State (43.4.2) as transmitted by the + Actor in LACPDUs. The first bit corresponds to bit 0 of + Actor_State (LACP_Activity), + the second bit corresponds to bit 1 (LACP_Timeout), + the third bit corresponds to bit 2 (Aggregation), + the fourth bit corresponds to bit 3 (Synchronization), + the fifth bit corresponds to bit 4 (Collecting), + the sixth bit corresponds to bit 5 (Distributing), + the seventh bit corresponds to bit 6 (Defaulted), + and the eighth bit corresponds to bit 7 (Expired). + These values allow administrative control over the + values of LACP_Activity, LACP_Timeout and Aggregation. + This attribute value is read-write." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.20" + ::= { dot3adAggPortEntry 20 } + + +dot3adAggPortActorOperState OBJECT-TYPE + SYNTAX LacpState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string of 8 bits, corresponding to the current + operational values of Actor_State as transmitted by the + Actor in LACPDUs. The bit allocations are as defined in + 30.7.2.1.20. This attribute value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.21" + ::= { dot3adAggPortEntry 21 } + + +dot3adAggPortPartnerAdminState OBJECT-TYPE + SYNTAX LacpState + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A string of 8 bits, corresponding to the current + administrative value of Actor_State for the protocol + Partner. The bit allocations are as defined in + 30.7.2.1.20. This attribute value is read-write. The + assigned value is used in order to achieve manually + configured aggregation." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.22" + ::= { dot3adAggPortEntry 22 } + + +dot3adAggPortPartnerOperState OBJECT-TYPE + SYNTAX LacpState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string of 8 bits, corresponding to the current values + of Actor_State in the most recently received LACPDU + transmitted by the protocol Partner. The bit allocations + are as defined in 30.7.2.1.20. In the absence of an + active protocol Partner, this value may reflect the + manually configured value aAggPortPartnerAdminState. + This attribute value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.23" + ::= { dot3adAggPortEntry 23 } + + +dot3adAggPortAggregateOrIndividual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A read-only Boolean value indicating whether the + Aggregation Port is able to Aggregate (`TRUE') or is + only able to operate as an Individual link (`FALSE')." + REFERENCE + "IEEE 802.3 Subclause 30.7.2.1.24" + ::= { dot3adAggPortEntry 24 } + + +-- ------------------------------------------------------------- +-- LACP Statistics Table +-- ------------------------------------------------------------- + + +dot3adAggPortStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3adAggPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains Link Aggregation information + about every port that is associated with this device. + A row appears in this table for each physical port." + REFERENCE + "IEEE 802.3 Subclause 30.7.3" + ::= { dot3adAggPort 2 } + + +dot3adAggPortStatsEntry OBJECT-TYPE + SYNTAX Dot3adAggPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Link Aggregation Control Protocol statistics + for each port on this device." + INDEX { dot3adAggPortIndex } + ::= { dot3adAggPortStatsTable 1 } + + +Dot3adAggPortStatsEntry ::= + SEQUENCE { + dot3adAggPortStatsLACPDUsRx + Counter32, + dot3adAggPortStatsMarkerPDUsRx + Counter32, + dot3adAggPortStatsMarkerResponsePDUsRx + Counter32, + dot3adAggPortStatsUnknownRx + Counter32, + dot3adAggPortStatsIllegalRx + Counter32, + dot3adAggPortStatsLACPDUsTx + Counter32, + dot3adAggPortStatsMarkerPDUsTx + Counter32, + dot3adAggPortStatsMarkerResponsePDUsTx + Counter32 + } + + +dot3adAggPortStatsLACPDUsRx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid LACPDUs received on this + Aggregation Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.2" + ::= { dot3adAggPortStatsEntry 1 } + + +dot3adAggPortStatsMarkerPDUsRx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid Marker PDUs received on this + Aggregation Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.3" + ::= { dot3adAggPortStatsEntry 2 } + + +dot3adAggPortStatsMarkerResponsePDUsRx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid Marker Response PDUs received on + this Aggregation Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.4" + ::= { dot3adAggPortStatsEntry 3 } + + +dot3adAggPortStatsUnknownRx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received that either: + - carry the Slow Protocols Ethernet Type value (43B.4), + but contain an unknown PDU, or: + - are addressed to the Slow Protocols group MAC + Address (43B.3), but do not carry the Slow Protocols + Ethernet Type. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.5" + ::= { dot3adAggPortStatsEntry 4 } + + +dot3adAggPortStatsIllegalRx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received that carry the Slow + Protocols Ethernet Type value (43B.4), but contain a + badly formed PDU or an illegal value of Protocol Subtype + (43B.4). This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.6" + ::= { dot3adAggPortStatsEntry 5 } + + +dot3adAggPortStatsLACPDUsTx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LACPDUs transmitted on this + Aggregation Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.7" + ::= { dot3adAggPortStatsEntry 6 } + + +dot3adAggPortStatsMarkerPDUsTx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Marker PDUs transmitted on this + Aggregation Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.8" + ::= { dot3adAggPortStatsEntry 7 } + + +dot3adAggPortStatsMarkerResponsePDUsTx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Marker Response PDUs transmitted + on this Aggregation Port. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.3.1.9" + ::= { dot3adAggPortStatsEntry 8 } + + +-- ------------------------------------------------------------- +-- LACP Debug Table +-- ------------------------------------------------------------- +dot3adAggPortDebugTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3adAggPortDebugEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains Link Aggregation debug + information about every port that is associated with + this device. A row appears in this table for each + physical port." + REFERENCE + "IEEE 802.3 Subclause 30.7.4" + ::= { dot3adAggPort 3 } + + +dot3adAggPortDebugEntry OBJECT-TYPE + SYNTAX Dot3adAggPortDebugEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of the debug parameters for a port." + INDEX { dot3adAggPortIndex } + ::= { dot3adAggPortDebugTable 1 } + + +Dot3adAggPortDebugEntry ::= + SEQUENCE { + dot3adAggPortDebugRxState + INTEGER, + dot3adAggPortDebugLastRxTime + TimeTicks, + dot3adAggPortDebugMuxState + INTEGER, + dot3adAggPortDebugMuxReason + DisplayString, + dot3adAggPortDebugActorChurnState + ChurnState, + dot3adAggPortDebugPartnerChurnState + ChurnState, + dot3adAggPortDebugActorChurnCount + Counter32, + dot3adAggPortDebugPartnerChurnCount + Counter32, + dot3adAggPortDebugActorSyncTransitionCount + Counter32, + dot3adAggPortDebugPartnerSyncTransitionCount + Counter32, + dot3adAggPortDebugActorChangeCount + Counter32, + dot3adAggPortDebugPartnerChangeCount + Counter32 + } + + +dot3adAggPortDebugRxState OBJECT-TYPE + SYNTAX INTEGER { + currentRx(1), + expired(2), + defaulted(3), + initialize(4), + lacpDisabled(5), + portDisabled(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute holds the value `currentRx' if the + Receive state machine for the Aggregation Port is in the + CURRENT state, `expired' if the Receive state machine is + in the EXPIRED state, `defaulted' if the Receive state + machine is in the DEFAULTED state, `initialize' if the + Receive state machine is in the INITIALIZE state, + `lacpDisabled' if the Receive state machine is in the + LACP_DISABLED state, or `portDisabled' if the Receive + state machine is in the PORT_DISABLED state. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.2" + ::= { dot3adAggPortDebugEntry 1 } + + +dot3adAggPortDebugLastRxTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of aTimeSinceSystemReset (F.2.1) when + the last LACPDU was received by this Aggregation Port. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.3" + ::= { dot3adAggPortDebugEntry 2 } + + +dot3adAggPortDebugMuxState OBJECT-TYPE + SYNTAX INTEGER { + detached(1), + waiting(2), + attached(3), + collecting(4), + distributing(5), + collectingDistributing(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute holds the value `detached' if the Mux + state machine (43.4.14) for the Aggregation Port is in + the DETACHED state, `waiting' if the Mux state machine + is in the WAITING state, `attached' if the Mux state + machine for the Aggregation Port is in the ATTACHED + state, `collecting' if the Mux state machine for the + Aggregation Port is in the COLLECTING state, + `distributing' if the Mux state machine for the + Aggregation Port is in the DISTRIBUTING state, and + `collectingDistributing' if the Mux state machine for + the Aggregation Port is in the COLLECTING_DISTRIBUTING + state. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.4" + ::= { dot3adAggPortDebugEntry 3 } + + +dot3adAggPortDebugMuxReason OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A human-readable text string indicating the reason + for the most recent change of Mux machine state. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.5" + ::= { dot3adAggPortDebugEntry 4 } + + +dot3adAggPortDebugActorChurnState OBJECT-TYPE + SYNTAX ChurnState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Actor Churn Detection machine + (43.4.17) for the Aggregation Port. A value of `noChurn' + indicates that the state machine is in either the + NO_ACTOR_CHURN or the ACTOR_CHURN_MONITOR state, and + `churn' indicates that the state machine is in the + ACTOR_CHURN state. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.6" + ::= { dot3adAggPortDebugEntry 5 } + + +dot3adAggPortDebugPartnerChurnState OBJECT-TYPE + SYNTAX ChurnState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Partner Churn Detection machine + (43.4.17) for the Aggregation Port. A value of `noChurn' + indicates that the state machine is in either the + NO_PARTNER_CHURN or the PARTNER_CHURN_MONITOR state, and + `churn' indicates that the state machine is in the + PARTNER_CHURN state. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.7" + ::= { dot3adAggPortDebugEntry 6 } + + +dot3adAggPortDebugActorChurnCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of times the Actor Churn state + machine has entered the ACTOR_CHURN state. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.8" + ::= { dot3adAggPortDebugEntry 7 } + + +dot3adAggPortDebugPartnerChurnCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of times the Partner Churn + state machine has entered the PARTNER_CHURN state. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.9" + ::= { dot3adAggPortDebugEntry 8 } + + +dot3adAggPortDebugActorSyncTransitionCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of times the Actor's Mux state + machine (43.4.15) has entered the IN_SYNC state. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.10" + ::= { dot3adAggPortDebugEntry 9 } + + +dot3adAggPortDebugPartnerSyncTransitionCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of times the Partner's Mux + state machine (43.4.15) has entered the IN_SYNC state. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.11" + ::= { dot3adAggPortDebugEntry 10 } + + +dot3adAggPortDebugActorChangeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of times the Actor's perception of + the LAG ID for this Aggregation Port has changed. + This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.12" + ::= { dot3adAggPortDebugEntry 11 } + + +dot3adAggPortDebugPartnerChangeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of times the Partner's perception + of the LAG ID (see 43.3.6.1) for this Aggregation Port + has changed. This value is read-only." + REFERENCE + "IEEE 802.3 Subclause 30.7.4.1.13" + ::= { dot3adAggPortDebugEntry 12 } + +-- ------------------------------------------------------------- +-- IEEE 802.3ad MIB - Conformance Information +-- ------------------------------------------------------------- + +dot3adAggConformance OBJECT IDENTIFIER ::= { lagMIB 2 } + + +dot3adAggGroups OBJECT IDENTIFIER ::= { dot3adAggConformance 1 } + + +dot3adAggCompliances OBJECT IDENTIFIER + ::= { dot3adAggConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +dot3adAggGroup OBJECT-GROUP + OBJECTS { + dot3adAggActorSystemID, + dot3adAggActorSystemPriority, + dot3adAggAggregateOrIndividual, + dot3adAggActorAdminKey, + dot3adAggMACAddress, + dot3adAggActorOperKey, + dot3adAggPartnerSystemID, + dot3adAggPartnerSystemPriority, + dot3adAggPartnerOperKey, + dot3adAggCollectorMaxDelay + } + STATUS current + DESCRIPTION + "A collection of objects providing information about an + aggregation." + ::= { dot3adAggGroups 1 } + + +dot3adAggPortListGroup OBJECT-GROUP + OBJECTS { + dot3adAggPortListPorts + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + every port in an aggregation." + ::= { dot3adAggGroups 2 } + + +dot3adAggPortGroup OBJECT-GROUP + OBJECTS { + dot3adAggPortActorSystemPriority, + dot3adAggPortActorSystemID, + dot3adAggPortActorAdminKey, + dot3adAggPortActorOperKey, + dot3adAggPortPartnerAdminSystemPriority, + dot3adAggPortPartnerOperSystemPriority, + dot3adAggPortPartnerAdminSystemID, + dot3adAggPortPartnerOperSystemID, + dot3adAggPortPartnerAdminKey, + dot3adAggPortPartnerOperKey, + dot3adAggPortSelectedAggID, + dot3adAggPortAttachedAggID, + dot3adAggPortActorPort, + dot3adAggPortActorPortPriority, + dot3adAggPortPartnerAdminPort, + dot3adAggPortPartnerOperPort, + dot3adAggPortPartnerAdminPortPriority, + dot3adAggPortPartnerOperPortPriority, + dot3adAggPortActorAdminState, + dot3adAggPortActorOperState, + dot3adAggPortPartnerAdminState, + dot3adAggPortPartnerOperState, + dot3adAggPortAggregateOrIndividual + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + every port in an aggregation." + ::= { dot3adAggGroups 3 } + + +dot3adAggPortStatsGroup OBJECT-GROUP + OBJECTS { + dot3adAggPortStatsLACPDUsRx, + dot3adAggPortStatsMarkerPDUsRx, + dot3adAggPortStatsMarkerResponsePDUsRx, + dot3adAggPortStatsUnknownRx, + dot3adAggPortStatsIllegalRx, + dot3adAggPortStatsLACPDUsTx, + dot3adAggPortStatsMarkerPDUsTx, + dot3adAggPortStatsMarkerResponsePDUsTx + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + every port in an aggregation." + ::= { dot3adAggGroups 4 } + + +dot3adAggPortDebugGroup OBJECT-GROUP + OBJECTS { + dot3adAggPortDebugRxState, + dot3adAggPortDebugLastRxTime, + dot3adAggPortDebugMuxState, + dot3adAggPortDebugMuxReason, + dot3adAggPortDebugActorChurnState, + dot3adAggPortDebugPartnerChurnState, + dot3adAggPortDebugActorChurnCount, + dot3adAggPortDebugPartnerChurnCount, + dot3adAggPortDebugActorSyncTransitionCount, + dot3adAggPortDebugPartnerSyncTransitionCount, + dot3adAggPortDebugActorChangeCount, + dot3adAggPortDebugPartnerChangeCount + } + STATUS current + DESCRIPTION + "A collection of objects providing debug information + about every aggregated port." + ::= { dot3adAggGroups 5 } + +dot3adTablesLastChangedGroup OBJECT-GROUP + OBJECTS { + dot3adTablesLastChanged + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + time of changes to the configuration of aggregations and + their ports." +::= { dot3adAggGroup 6 } + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + + +dot3adAggCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of + Link Aggregation." + + + MODULE + MANDATORY-GROUPS { + dot3adAggGroup, + dot3adAggPortGroup, + dot3adTablesLastChangedGroup + } + + + GROUP dot3adAggPortListGroup + DESCRIPTION + "This group is optional." + + + GROUP dot3adAggPortStatsGroup + DESCRIPTION + "This group is optional." + + + GROUP dot3adAggPortDebugGroup + DESCRIPTION + "This group is optional." + + + ::= { dot3adAggCompliances 1 } + + +END + diff --git a/mibs/SMON-MIB.mib b/mibs/SMON-MIB.mib new file mode 100644 index 000000000..5677f8f6e --- /dev/null +++ b/mibs/SMON-MIB.mib @@ -0,0 +1,1276 @@ +-- ***************************************************************** +-- SMON-MIB.my +-- Remote Monitoring Extensions for Ethernet Switches +-- from draft-ietf-rmonmib-smon-07.txt +-- +-- April 1999, Andy Bierman +-- +-- Copyright (c) 1998 - 1999 by cisco Systems, Inc. +-- All rights reserved. +-- ***************************************************************** +-- + + SMON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, Counter64 + FROM SNMPv2-SMI + RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + rmon, OwnerString + FROM RMON-MIB + LastCreateTime, DataSource, rmonConformance, probeConfig + FROM RMON2-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + switchRMON MODULE-IDENTITY + LAST-UPDATED "9812160000Z" + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "IETF RMONMIB WG Mailing list: rmonmib@cisco.com + + Rich Waterman + Allot Networks Inc. + Tel: +1-408-559-0253 + Email: rich@allot.com + + Bill Lahaye + Xylan Corp. + Tel: +1-800-995-2612 + Email: lahaye@ctron.com + + Dan Romascanu + Lucent Technologies + Tel: +972-3-645-8414 + Email: dromasca@lucent.com + + Steven Waldbusser + International Network Services + Tel: +1-415-254-4251 + Email: waldbusser@ins.com" + + DESCRIPTION + "The MIB module for managing remote monitoring device + implementations for Switched Networks" + ::= { rmon 22 } + + smonMIBObjects OBJECT IDENTIFIER ::= { switchRMON 1 } + + dataSourceCaps OBJECT IDENTIFIER ::= {smonMIBObjects 1} + smonStats OBJECT IDENTIFIER ::= {smonMIBObjects 2} + portCopyConfig OBJECT IDENTIFIER ::= {smonMIBObjects 3} + smonRegistrationPoints OBJECT IDENTIFIER ::= {smonMIBObjects 4} + + -- Textual Conventions + -- + + SmonDataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated function + is configured to analyze. This Textual Convention + extends the DataSource Textual Convention defined by RMON 2 + to the following data source types: + + - ifIndex. + DataSources of this traditional form are called 'port-based', + but only if ifType. is not equal to 'propVirtual(53)'. + + - smonVlanDataSource. + A dataSource of this form refers to a 'Packet-based VLAN' + and is called a 'VLAN-based' dataSource. is the VLAN + ID as defined by the IEEE 802.1Q standard [19]. The + value is between 1 and 4094 inclusive, and it represents + an 802.1Q VLAN-ID with global scope within a given + bridged domain, as defined by [19]. + + - entPhysicalEntry. + A dataSource of this form refers to a physical entity within + the agent (e.g. entPhysicalClass = backplane(4)) and is called + an 'entity-based' dataSource." + SYNTAX OBJECT IDENTIFIER + + -- The smonCapabilities object describes SMON agent capabilities. + + smonCapabilities OBJECT-TYPE + SYNTAX BITS { + smonVlanStats(0), + smonPrioStats(1), + dataSource(2), + smonUnusedBit(3), + portCopy(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the SMON MIB groups supported + by this agent." + ::= { probeConfig 15 } + + -- dataSourceCaps MIB group - defines SMON data source and port + -- copy capabilities for devices supporting SMON. + + -- A NMS application will check this MIB group and retrieve + -- information about the SMON capabilities of the device before + -- applying SMON control operations to the device. + + + -- dataSourceCapsTable: defines capabilities of RMON data sources + + dataSourceCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DataSourceCapsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes RMON data sources and port copy + capabilities. An NMS MAY use this table to discover the + identity and attributes of the data sources on a given agent + implementation. Similar to the probeCapabilities object, + actual row-creation operations will succeed or fail based on + the resources available and parameter values used in each + row-creation operation. + + Upon restart of the RMON agent, the dataSourceTable, ifTable, + and perhaps entPhysicalTable are initialized for the available + dataSources. + + For each dataSourceCapsEntry representing a VLAN or + entPhysicalEntry the agent MUST create an associated ifEntry + with a ifType value of 'propVirtual(53)'. This ifEntry will be + used as the actual value in RMON control table dataSource + objects. The assigned ifIndex value is copied into the + associated dataSourceCapsIfIndex object. + It is understood that dataSources representing VLANs may not + always be instantiated immediately upon restart, but rather as + VLAN usage is detected by the agent. The agent SHOULD attempt + to create dataSource and interface entries for all dataSources + as soon as possible." + ::= { dataSourceCaps 1 } + + dataSourceCapsEntry OBJECT-TYPE + SYNTAX DataSourceCapsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per data source containing descriptions of data + source and port copy capabilities. This table is populated by + the SMON agent with one entry for each supported data + source." + INDEX { IMPLIED dataSourceCapsObject } + ::= { dataSourceCapsTable 1 } + + DataSourceCapsEntry ::= SEQUENCE { + dataSourceCapsObject + SmonDataSource, + dataSourceRmonCaps + BITS, + dataSourceCopyCaps + BITS, + dataSourceCapsIfIndex + InterfaceIndex + } + + dataSourceCapsObject OBJECT-TYPE + SYNTAX SmonDataSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an object that can be a SMON data source or a + source or a destination for a port copy operation." + ::= { dataSourceCapsEntry 1 } + + dataSourceRmonCaps OBJECT-TYPE + SYNTAX BITS { + countErrFrames(0), + countAllGoodFrames(1), + countAnyRmonTables(2), + babyGiantsCountAsGood(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " General attributes of the specified dataSource. Note that + these are static attributes, which SHOULD NOT be adjusted + because of current resources or configuration. + + - countErrFrames(0) + The agent sets this bit for the dataSource if errored frames + received on this dataSource can actually be monitored by the + agent The agent clears this bit if any errored frames are + not visible to the RMON data collector. + + - countAllGoodFrames(1) + The agent sets this bit for the dataSource if all good + frames received on this dataSource can actually be monitored + by the agent. The agent clears this bit if any good frames + are not visible for RMON collection, e.g., the dataSource is + a non-promiscuous interface or an internal switch interface + which may not receive frames which were switched in hardware + or dropped by the bridge forwarding function. + + - countAnyRmonTables(2) + The agent sets this bit if this dataSource can actually be + used in any of the implemented RMON tables, resources + notwithstanding. The agent clears this bit if this + dataSourceCapsEntry is present simply to identify a + dataSource that may only be used as portCopySource and/or a + portCopyDest, but not the source of an actual RMON data + collection. + + - babyGiantsCountAsGood(3) + The agent sets this bit if it can distinguish, for counting + purposes, between true giant frames and frames that exceed + Ethernet maximum frame size 1518 due to VLAN tagging ('baby + giants'). Specifically, this BIT means that frames up to + 1522 octets are counted as good. + + Agents not capable of detecting 'baby giants' will clear + this bit and will view all frames less than or equal to 1518 + octets as 'good frames' and all frames larger than 1518 + octets as 'bad frames' for the purpose of counting in the + smonVlanIdStats and smonPrioStats tables. + + Agents capable of detecting 'baby giants' SHALL consider + them as 'good frames' for the purpose of counting in the + smonVlanIdStats and smonPrioStats tables." + + ::= { dataSourceCapsEntry 2 } + dataSourceCopyCaps OBJECT-TYPE + SYNTAX BITS { + copySourcePort(0), + copyDestPort(1), + copySrcTxTraffic(2), + copySrcRxTraffic(3), + countDestDropEvents(4), + copyErrFrames(5), + copyUnalteredFrames(6), + copyAllGoodFrames(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PortCopy function capabilities of the specified dataSource. + Note that these are static capabilities, which SHOULD NOT be + adjusted because of current resources or configuration. + + - copySourcePort(0) + The agent sets this bit if this dataSource is capable of + acting as a source of a portCopy operation. The agent clears + this bit otherwise. + + - copyDestPort(1) + The agent sets this bit if this dataSource is capable of + acting as a destination of a portCopy operation. The agent + clears this bit otherwise. + + - copySrcTxTraffic(2) + If the copySourcePort bit is set: + The agent sets this bit if this dataSource is capable of + copying frames transmitted out this portCopy source. The + agent clears this bit otherwise. This function is needed + to support full-duplex ports. + Else: + this bit SHOULD be cleared. + + - copySrcRxTraffic(3) + If the copySourcePort bit is set: + The agent sets this bit if this dataSource is capable of + copying frames received on this portCopy source. The agent + clears this bit otherwise. This function is needed to + support full-duplex ports. + Else: + this bit SHOULD be cleared. + + - countDestDropEvents(4) + If the copyDestPort bit is set: + The agent sets this bit if it is capable of incrementing + portCopyDestDropEvents, when this dataSource is the + target of a portCopy operation and a frame destined to + this dataSource is dropped (for RMON counting purposes). + Else: + this BIT SHOULD be cleared. + + - copyErrFrames(5) + If the copySourcePort bit is set: + The agent sets this bit if it is capable of copying all + errored frames from this portCopy source-port, for + errored frames received on this dataSource. + Else: + this BIT SHOULD be cleared. + + - copyUnalteredFrames(6) + If the copySourcePort bit is set: + The agent sets the copyUnalteredFrames bit If it is + capable of copying all frames from this portCopy + source-port without alteration in any way; + Else: + this bit SHOULD be cleared. + + - copyAllGoodFrames(7) + If the copySourcePort bit is set: + The agent sets this bit for the dataSource if all good + frames received on this dataSource are normally capable + of being copied by the agent. The agent clears this bit + if any good frames are not visible for the RMON portCopy + operation, e.g., the dataSource is a non-promiscuous + interface or an internal switch interface which may not + receive frames which were switched in hardware or + dropped by the bridge forwarding function. + Else: + this bit SHOULD be cleared." + + ::= { dataSourceCapsEntry 3 } + + dataSourceCapsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the ifIndex value of the ifEntry + associated with this smonDataSource. The agent MUST create + 'propVirtual' ifEntries for each dataSourceCapsEntry of type + VLAN or entPhysicalEntry." + ::= { dataSourceCapsEntry 4 } + + -- The SMON Statistics MIB Group + + -- aggregated statistics for IEEE 802.1Q VLAN environments. + + -- VLAN statistics can be gathered by configuring smonVlanIdStats + -- and/or smonPrioStats collections. These functions allow a + -- VLAN-ID or user priority distributions per dataSource, + -- auto-populated by the agent in a manner similar to the RMON + -- hostTable. + + -- Only good frames are counted in the tables described in this + -- section. + + -- VLAN ID Stats + + -- smonVlanStatsControlTable allows configuration of VLAN-ID + -- collections. + + smonVlanStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonVlanStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "Controls the setup of VLAN statistics tables. + + The statistics collected represent a distribution based on + the IEEE 802.1Q VLAN-ID (VID), for each good frame attributed + to the data source for the collection." + ::= { smonStats 1 } + + smonVlanStatsControlEntry OBJECT-TYPE + SYNTAX SmonVlanStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the smonVlanStatsControlTable." + INDEX { smonVlanStatsControlIndex } + ::= { smonVlanStatsControlTable 1 } + + SmonVlanStatsControlEntry ::= SEQUENCE { + smonVlanStatsControlIndex Integer32, + smonVlanStatsControlDataSource DataSource, + smonVlanStatsControlCreateTime LastCreateTime, + smonVlanStatsControlOwner OwnerString, + smonVlanStatsControlStatus RowStatus + } + + smonVlanStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique arbitrary index for this smonVlanStatsControlEntry." + ::= { smonVlanStatsControlEntry 1 } + + smonVlanStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this set of VLAN statistics. + + This object MAY NOT be modified if the associated + smonVlanStatsControlStatus object is equal to active(1)." + ::= { smonVlanStatsControlEntry 2 } + + smonVlanStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This object allows to a management station to + detect deletion and recreation cycles between polls." + ::= { smonVlanStatsControlEntry 3 } + + smonVlanStatsControlOwner OBJECT-TYPE + + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Administratively assigned named of the owner of this entry. + It usually defines the entity that created this entry and is + therefore using the resources assigned to it, though there is + no enforcement mechanism, nor assurance that rows created are + ever used." + ::= { smonVlanStatsControlEntry 4 } + + smonVlanStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MAY NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the smonVlanIdStatsTable SHALL be deleted." + ::= { smonVlanStatsControlEntry 5 } + + -- The VLAN Statistics Table + + smonVlanIdStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonVlanIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the VLAN statistics data. + The statistics collected represent a distribution based + on the IEEE 802.1Q VLAN-ID (VID), for each good frame + attributed to the data source for the collection. + + This function applies the same rules for attributing frames + to VLAN-based collections. RMON VLAN statistics are collected + after the Ingress Rules defined in section 3.13 of the VLAN + Specification [20] are applied. + + It is possible that entries in this table will be + garbage-collected, based on agent resources, and VLAN + configuration. Agents are encouraged to support all 4094 + index values and not garbage collect this table." + ::= { smonStats 2 } + + smonVlanIdStatsEntry OBJECT-TYPE + SYNTAX SmonVlanIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in smonVlanIdStatsTable." + INDEX { smonVlanStatsControlIndex, smonVlanIdStatsId } + ::= { smonVlanIdStatsTable 1 } + + SmonVlanIdStatsEntry ::= SEQUENCE { + smonVlanIdStatsId Integer32, + smonVlanIdStatsTotalPkts Counter32, + smonVlanIdStatsTotalOverflowPkts Counter32, + smonVlanIdStatsTotalHCPkts Counter64, + smonVlanIdStatsTotalOctets Counter32, + smonVlanIdStatsTotalOverflowOctets Counter32, + smonVlanIdStatsTotalHCOctets Counter64, + smonVlanIdStatsNUcastPkts Counter32, + smonVlanIdStatsNUcastOverflowPkts Counter32, + smonVlanIdStatsNUcastHCPkts Counter64, + smonVlanIdStatsNUcastOctets Counter32, + smonVlanIdStatsNUcastOverflowOctets Counter32, + smonVlanIdStatsNUcastHCOctets Counter64, + smonVlanIdStatsCreateTime LastCreateTime + } + + smonVlanIdStatsId OBJECT-TYPE + SYNTAX Integer32 (1..4094) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the VLAN monitored for + this specific statistics collection. + + Tagged packets match the VID for the range between 1 and 4094. + An external RMON probe MAY detect VID=0 on an Inter Switch + Link, in which case the packet belongs to a VLAN determined by + the PVID of the ingress port. The VLAN to which such a packet + belongs can be determined only by a RMON probe internal to the + switch." + REFERENCE + "Draft Standard for Virtual Bridged Local Area Networks, + P802.1Q/D10, chapter 3.13" + ::= { smonVlanIdStatsEntry 1 } + + smonVlanIdStatsTotalPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on this VLAN." + ::= { smonVlanIdStatsEntry 2 } + + smonVlanIdStatsTotalOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsTotalPkts + counter has overflowed." + ::= { smonVlanIdStatsEntry 3 } + + smonVlanIdStatsTotalHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on this VLAN." + ::= { smonVlanIdStatsEntry 4 } + + smonVlanIdStatsTotalOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on this VLAN." + ::= { smonVlanIdStatsEntry 5 } + + smonVlanIdStatsTotalOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsTotalOctets + counter has overflowed." + ::= { smonVlanIdStatsEntry 6 } + + smonVlanIdStatsTotalHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on this VLAN." + ::= { smonVlanIdStatsEntry 7 } + + smonVlanIdStatsNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets counted on this + VLAN." + ::= { smonVlanIdStatsEntry 8 } + + smonVlanIdStatsNUcastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsNUcastPkts + counter has overflowed." + ::= { smonVlanIdStatsEntry 9 } + + smonVlanIdStatsNUcastHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 10 } + + smonVlanIdStatsNUcastOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast octets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 11 } + + smonVlanIdStatsNUcastOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + smonVlanIdStatsNUcastOctets counter has overflowed." + ::= { smonVlanIdStatsEntry 12 } + + smonVlanIdStatsNUcastHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Non-unicast octets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 13 } + + smonVlanIdStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last + activated. This object allows to a management station to + detect deletion and recreation cycles between polls." + ::= { smonVlanIdStatsEntry 14 } + + -- smonPrioStatsControlTable + + smonPrioStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonPrioStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of priority statistics tables. + + The smonPrioStatsControlTable allows configuration of + collections based on the value of the 3-bit user priority + field encoded in the Tag Control Information (TCI) field + according to [19],[20]. + + Note that this table merely reports priority as encoded in + the VLAN headers, not the priority (if any) given to the + frame for the actual switching purposes." + + ::= { smonStats 3 } + + smonPrioStatsControlEntry OBJECT-TYPE + SYNTAX SmonPrioStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the smonPrioStatsControlTable." + INDEX { smonPrioStatsControlIndex } + ::= { smonPrioStatsControlTable 1 } + + + SmonPrioStatsControlEntry ::= SEQUENCE { + smonPrioStatsControlIndex Integer32, + smonPrioStatsControlDataSource DataSource, + smonPrioStatsControlCreateTime LastCreateTime, + smonPrioStatsControlOwner OwnerString, + smonPrioStatsControlStatus RowStatus + } + + smonPrioStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique arbitrary index for this smonPrioStatsControlEntry." + ::= { smonPrioStatsControlEntry 1 } + + smonPrioStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this set of VLAN statistics. + + This object MAY NOT be modified if the associated + smonPrioStatsControlStatus object is equal to active(1)." + ::= { smonPrioStatsControlEntry 2 } + + smonPrioStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was created. + This object allows to a management station to + detect deletion and recreation cycles between polls." + + ::= { smonPrioStatsControlEntry 3 } + + smonPrioStatsControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Administratively assigned named of the owner of this entry. + It usually defines the entity that created this entry and is + therefore using the resources assigned to it, though there is + no enforcement mechanism, nor assurance that rows created are + ever used." + ::= { smonPrioStatsControlEntry 4 } + + smonPrioStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + An entry MAY NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the smonPrioStatsTable SHALL be deleted." + ::= { smonPrioStatsControlEntry 5 } + + -- The Priority Statistics Table + + smonPrioStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonPrioStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the priority statistics. The collections are based + on the value of the 3-bit user priority field encoded in the + Tag Control Information (TCI) field according to [19], [20]. + Note that this table merely reports priority as encoded in + the VLAN headers, not the priority (if any) given to the + frame for the actual switching purposes. + + No garbage collection is designed for this table, as there + always are at most eight rows per statistical set, and the + low memory requirements do not justify the implementation of + such a mechanism." + ::= { smonStats 4 } + + smonPrioStatsEntry OBJECT-TYPE + SYNTAX SmonPrioStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in smonPrioStatsTable." + INDEX { smonPrioStatsControlIndex, smonPrioStatsId } + ::= { smonPrioStatsTable 1 } + + SmonPrioStatsEntry ::= SEQUENCE { + smonPrioStatsId Integer32, + smonPrioStatsPkts Counter32, + smonPrioStatsOverflowPkts Counter32, + smonPrioStatsHCPkts Counter64, + smonPrioStatsOctets Counter32, + smonPrioStatsOverflowOctets Counter32, + smonPrioStatsHCOctets Counter64 + } + + smonPrioStatsId OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the priority level monitored for + this specific statistics collection." + REFERENCE + " Draft Standard for Virtual Bridged Local Area Networks, + P802.1Q/D10, chapter 4.3.2.1" + ::= { smonPrioStatsEntry 1 } + + smonPrioStatsPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on + this priority level." + ::= { smonPrioStatsEntry 2 } + + smonPrioStatsOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonPrioStatsPkts + counter has overflowed." + ::= { smonPrioStatsEntry 3 } + + smonPrioStatsHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on + this priority level." + ::= { smonPrioStatsEntry 4 } + + smonPrioStatsOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on + this priority level." + ::= { smonPrioStatsEntry 5 } + + smonPrioStatsOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonPrioStatsOctets + counter has overflowed." + ::= { smonPrioStatsEntry 6 } + + smonPrioStatsHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on + this priority level." + ::= { smonPrioStatsEntry 7 } + + + portCopyTable OBJECT-TYPE + SYNTAX SEQUENCE OF PortCopyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Port Copy provides the ability to copy all frames from a + specified source to specified destination within a switch. + Source and destinations MUST be ifEntries, as defined by [22]. + One to one, one to many, many to one and many to many source to + destination relationships may be configured. + + Applicable counters on the destination will increment for all + packets transiting the port, be it by normal bridging/switching + or due to packet copy. + Note that this table manages no RMON data collection by itself, + and an agent may possibly implement no RMON objects except + objects related to the port copy operation defined by the + portCopyCompliance conformance macro. That allows for a switch + with no other embedded RMON capability to perform port copy + operations to a destination port at which a different external + RMON probe is connected. + + One to one, many to one and one to many source to destination + relationships may be configured. + + Each row that exists in this table defines such a + relationship. By disabling a row in this table the port copy + relationship no longer exists. + + The number of entries and the types of port copies (1-1, + many-1, 1-many) are implementation specific and could + possibly be dynamic due to changing resource availability. + + In order to configure a source to destination portCopy + relationship, both source and destination interfaces MUST be + present as an ifEntry in the ifTable and their respective + ifAdminStatus and ifOperStatus values MUST be equal to + 'up(1)'. If the value of any of those two objects changes + after the portCopyEntry is activated, portCopyStatus will + transition to 'notReady(3)'. + + The capability of an interface to be source or destination of + a port copy operation is described by the 'copySourcePort(0)' + and 'copyDestPort(1)' bits in dataSourceCopyCaps. Those bits + SHOULD be appropriately set by the agent, in order to allow + for a portCopyEntry to be created. + + Applicable counters on the destination will increment for all + packets transmitted, be it by normal bridging/switching or + due to packet copy." + ::= { portCopyConfig 1 } + + portCopyEntry OBJECT-TYPE + SYNTAX PortCopyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a particular port copy entry." + INDEX { portCopySource, portCopyDest } + ::= { portCopyTable 1 } + + PortCopyEntry ::= SEQUENCE { + portCopySource + InterfaceIndex, + portCopyDest + InterfaceIndex, + portCopyDestDropEvents + Counter32, + portCopyDirection + INTEGER, + portCopyStatus + RowStatus + } + + + portCopySource OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the source which will have all packets + redirected to the destination as defined by portCopyDest." + ::= { portCopyEntry 1 } + + portCopyDest OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the ifIndex destination for the copy operation." + ::= { portCopyEntry 2 } + + portCopyDestDropEvents OBJECT-TYPE + SYNTAX Counter32 + UNITS "events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of events in which port copy packets were + dropped by the switch at the destination port due to lack of + resources. + + Note that this number is not necessarily the number of + packets dropped; it is just the number of times this + condition has been detected. + + A single dropped event counter is maintained for each + portCopyDest. Thus all instances associated with a given + portCopyDest will have the same portCopyDestDropEvents + value." + ::= { portCopyEntry 3 } + + portCopyDirection OBJECT-TYPE + SYNTAX INTEGER { + copyRxOnly(1), + copyTxOnly(2), + copyBoth(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object affects the way traffic is copied from a switch + source port, for the indicated port copy operation. + + + If this object has the value 'copyRxOnly(1)', then only + traffic received on the indicated source port will be copied + to the indicated destination port. + + If this object has the value 'copyTxOnly(2)', then only + traffic transmitted out the indicated source port will be + copied to the indicated destination port. + + If this object has the value 'copyBoth(3)', then all traffic + received or transmitted on the indicated source port will be + copied to the indicated destination port. + + The creation and deletion of instances of this object is + controlled by the portCopyRowStatus object. Note that there + is no guarantee that changes in the value of this object + performed while the associated portCopyRowStatus object is + equal to active will not cause traffic discontinuities in the + packet stream." + DEFVAL { copyBoth } + ::= { portCopyEntry 4 } + + portCopyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the status of the port copy entry. + + In order to configure a source to destination portCopy + relationship, both source and destination interfaces MUST be + present as an ifEntry in the ifTable and their respective + ifAdminStatus and ifOperStatus values MUST be equal to + 'up(1)'. If the value of any of those two objects changes + after the portCopyEntry is activated, portCopyStatus will + transition to 'notReady(3)'. + + The capability of an interface to be source or destination of + a port copy operation is described by the 'copySourcePort(0)' + and 'copyDestPort(1)' bits in dataSourceCopyCaps. Those bits + SHOULD be appropriately set by the agent, in order to allow + for a portCopyEntry to be created." + ::= { portCopyEntry 5 } + + -- smonRegistrationPoints + -- defines a set of OIDs for registration purposes of entities + -- supported by the SMON MIB. + + + smonVlanDataSource + OBJECT IDENTIFIER ::= { smonRegistrationPoints 1} + + -- Defined for use as an SmonDataSource. A single integer parameter + -- is appended to the end of this OID when actually encountered in + -- the dataSourceCapsTable, which represents a positive, non-zero + -- VLAN identifier value. + + -- Conformance Macros + + smonMIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 3} + smonMIBGroups OBJECT IDENTIFIER ::= { rmonConformance 4} + + smonMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for full conformance with the SMON + MIB" + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonVlanStatsGroup, + smonPrioStatsGroup, + portCopyConfigGroup, + smonInformationGroup} + + GROUP smonHcTo100mbGroup + DESCRIPTION + "This group of VLAN statistics counter are mandatory only for + those network interfaces for which the corresponding ifSpeed + can be greater than 10MB/sec and less than or equal to + 100MB/sec." + + GROUP smonHc100mbPlusGroup + DESCRIPTION + "This group of VLAN statistics counters are mandatory only for + those network interfaces for which the corresponding ifSpeed + can be more than 100MB/sec. This group of VLAN statistics is + also mandatory for smonDataSources of type VLAN or + entPhysicalEntry." + + ::= { smonMIBCompliances 1 } + + smonMIBVlanStatsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the SMON MIB + with support for VLAN Statistics. Mandatory for a SMON probe + in environment where IEEE 802.1Q bridging is implemented." + + + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonVlanStatsGroup, + smonInformationGroup} + GROUP hcVlanTo100mbGroup + DESCRIPTION + "This group of VLAN statistics counter are mandatory only + for those network interfaces for which the corresponding + ifSpeed can be up to and including 100MB/sec." + + GROUP hcVlan100mbPlusGroup + DESCRIPTION + "This group of VLAN statistics counters are mandatory only for + those network interfaces for which the corresponding ifSpeed + is greater than 100MB/sec. This group of VLAN statistics is + also mandatory for smonDataSources of type VLAN or + entPhysicalEntry." + + ::= { smonMIBCompliances 2 } + + smonMIBPrioStatsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the SMON MIB + with support for priority level Statistics. Mandatory for a + SMON probe in a environment where IEEE 802.1p + priority-switching is implemented." + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonPrioStatsGroup, + smonInformationGroup} + + GROUP hcPrioTo100mbGroup + DESCRIPTION + "This group of VLAN priority statistics counters are mandatory + only for those network interfaces for which the corresponding + ifSpeed can be up to and including 100MB/sec." + + GROUP hcPrio100mbPlusGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces for which the corresponding ifSpeed is greater + than 100MB/sec. This group of VLAN priority + statistics is also mandatory for smonDataSources of type + VLAN or entPhysicalEntry" + + ::= { smonMIBCompliances 3 } + + + portCopyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the port copy + functionality defined by the SMON MIB" + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + portCopyConfigGroup, + smonInformationGroup} + + ::= { smonMIBCompliances 4} + + dataSourceCapsGroup OBJECT-GROUP + OBJECTS { dataSourceRmonCaps, + dataSourceCopyCaps, + dataSourceCapsIfIndex} + STATUS current + DESCRIPTION + "Defines the objects that describe the capabilities of RMON + data sources." + ::= {smonMIBGroups 1 } + + smonVlanStatsGroup OBJECT-GROUP + OBJECTS { smonVlanStatsControlDataSource, + smonVlanStatsControlCreateTime, + smonVlanStatsControlOwner, + smonVlanStatsControlStatus, + smonVlanIdStatsTotalPkts, + smonVlanIdStatsTotalOctets, + smonVlanIdStatsNUcastPkts, + smonVlanIdStatsCreateTime} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics - per VLAN + Id on interfaces of 10MB or less." + ::= { smonMIBGroups 2 } + + smonPrioStatsGroup OBJECT-GROUP + OBJECTS { smonPrioStatsControlDataSource, + smonPrioStatsControlCreateTime, + smonPrioStatsControlOwner, + smonPrioStatsControlStatus, + smonPrioStatsPkts, + smonPrioStatsOctets} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics - per VLAN + Id on interface." + + + ::= { smonMIBGroups 3 } + + smonHcTo100mbGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity statistics needed to be + kept on interfaces with ifSpeed greater than 10MB/sec and + less than or equal to 100MB/sec." + ::= { smonMIBGroups 4 } + + smonHc100mbPlusGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowPkts, + smonVlanIdStatsTotalHCPkts, + smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonVlanIdStatsNUcastOverflowPkts, + smonVlanIdStatsNUcastHCPkts, + smonPrioStatsOverflowPkts, + smonPrioStatsHCPkts, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity statistics needed to be + kept on interfaces with ifSpeed of more than 100MB/sec. These + statistics MUST also be kept on smonDataSources of type VLAN + or entPhysicalEntry." + ::= { smonMIBGroups 5 } + + hcVlanTo100mbGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN statistics + needed to be kept on interfaces with ifSpeed greater than + 10MB/sec and less than or equal to 100MB/sec." + ::= { smonMIBGroups 6 } + + hcVlan100mbPlusGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowPkts, + smonVlanIdStatsTotalHCPkts, + smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonVlanIdStatsNUcastOverflowPkts, + smonVlanIdStatsNUcastHCPkts} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN statistics + needed to be kept on interfaces with ifSpeed of more than + 100MB/sec. These statistics MUST also be kept on + smonDataSources of type VLAN or entPhysicalEntry." + ::= { smonMIBGroups 7 } + + hcPrioTo100mbGroup OBJECT-GROUP + OBJECTS { smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets } + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN priority + statistics needed to be kept on interfaces with + ifSpeed of greater than 10MB/sec and less than or equal + to 100MB/sec." + ::= { smonMIBGroups 8 } + + hcPrio100mbPlusGroup OBJECT-GROUP + OBJECTS { smonPrioStatsOverflowPkts, + smonPrioStatsHCPkts, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN priority + statistics needed to be kept on interfaces with + ifSpeed of greater than 100MB/sec. These statistics MUST + also be kept on smonDataSources of type VLAN or + entPhysicalEntry." + ::= { smonMIBGroups 9 } + + smonVlanStatsExtGroup OBJECT-GROUP + OBJECTS {smonVlanIdStatsNUcastOctets, + smonVlanIdStatsNUcastOverflowOctets, + smonVlanIdStatsNUcastHCOctets} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics for systems + capable of counting non-unicast octets for a given dataSource + (as described in the dataSourceRmonCaps object)." + ::= { smonMIBGroups 10 } + + smonInformationGroup OBJECT-GROUP + OBJECTS { smonCapabilities } + STATUS current + DESCRIPTION + "An indication of the SMON capabilities supported by this + agent." + ::= { smonMIBGroups 11 } + + portCopyConfigGroup OBJECT-GROUP + OBJECTS { portCopyDestDropEvents, + portCopyDirection, + portCopyStatus + } + STATUS current + DESCRIPTION + "Defines the control objects for copy port operations." + ::= { smonMIBGroups 12 } + + END diff --git a/new-mac.php b/new-mac.php new file mode 100755 index 000000000..26768baf0 --- /dev/null +++ b/new-mac.php @@ -0,0 +1,112 @@ +#!/usr/bin/php + " . $device['hostname'] . "\n"); + $i++; + $cip_oids = array('cipMacHCSwitchedBytes', 'cipMacHCSwitchedPkts'); + foreach ($cip_oids as $oid) { $array = snmp_cache_cip($oid, $device, $array, "CISCO-IP-STAT-MIB"); } + echo("\n"); +} + +$mac_accounting_query = mysql_query("SELECT * FROM `mac_accounting` as A, `interfaces` AS I, `devices` AS D where A.interface_id = I.interface_id AND I.device_id = D.device_id AND D.status = '1'"); +while ($acc = mysql_fetch_array($mac_accounting_query)) { + + $device_id = $acc['device_id']; + $ifIndex = $acc['ifIndex']; + $mac = $acc['mac']; + if($array[$device_id][$ifIndex][$mac]) { + + $b_in = $array[$device_id][$ifIndex][$mac]['cipMacHCSwitchedBytes']['input']; + $b_out = $array[$device_id][$ifIndex][$mac]['cipMacHCSwitchedBytes']['output']; + $p_in = $array[$device_id][$ifIndex][$mac]['cipMacHCSwitchedPkts']['input']; + $p_out = $array[$device_id][$ifIndex][$mac]['cipMacHCSwitchedPkts']['output']; + + #echo($acc['hostname']." ".$acc['ifDescr'] . " $mac -> $b_in:$b_out:$p_in:$p_out "); + + $acc_rrd = $config['rrd_dir'] . "/" . $acc['hostname'] . "/mac-accounting"; + if(!is_dir($acc_rrd)) { mkdir($acc_rrd); echo("Created directory : $acc_rrd\n"); } + $old_rrdfile = $acc_rrd . "/" . $acc['ifIndex'] . "-" . $acc['ip'] . ".rrd"; + $rrdfile = $acc_rrd . "/" . $acc['ifIndex'] . "-" . $acc['mac'] . ".rrd"; + if(is_file($old_rrdfile) && !is_file($rrdfile)) { rename($old_rrdfile, $rrdfile); echo("Moved $old_rrdfile -> $rrdfile \n"); }; + $pkts_rrdfile = $acc_rrd . "/" . $acc['ifIndex'] . "-" . $acc['mac'] . "-pkts.rrd"; + + if(!is_file($pkts_rrdfile)) { + $woo = shell_exec($config['rrdtool'] ." create $pkts_rrdfile \ + DS:IN:COUNTER:600:0:12500000000 \ + DS:OUT:COUNTER:600:0:12500000000 \ + RRA:AVERAGE:0.5:1:600 \ + RRA:AVERAGE:0.5:6:700 \ + RRA:AVERAGE:0.5:24:775 \ + RRA:AVERAGE:0.5:288:797 \ + RRA:MAX:0.5:1:600 \ + RRA:MAX:0.5:6:700 \ + RRA:MAX:0.5:24:775 \ + RRA:MAX:0.5:288:797"); + } + + if(!is_file($rrdfile)) { + $woo = shell_exec($config['rrdtool'] ." create $rrdfile \ + DS:IN:COUNTER:600:0:12500000000 \ + DS:OUT:COUNTER:600:0:12500000000 \ + RRA:AVERAGE:0.5:1:600 \ + RRA:AVERAGE:0.5:6:700 \ + RRA:AVERAGE:0.5:24:775 \ + RRA:AVERAGE:0.5:288:797 \ + RRA:MAX:0.5:1:600 \ + RRA:MAX:0.5:6:700 \ + RRA:MAX:0.5:24:775 \ + RRA:MAX:0.5:288:797"); + } + + $woo = "N:".($b_in+0).":".($b_out+0); + $ret = rrdtool_update("$rrdfile", $woo); + + $woo = "N:".($p_in+0).":".($p_out+0); + $ret = rrdtool_update("$pkts_rrdfile", $woo); + + #echo(" R!\n"); + + } + +} + +echo("$i devices polled"); + +?> diff --git a/new-poller.php b/new-poller.php index ab02a8274..e2a95c3f0 100755 --- a/new-poller.php +++ b/new-poller.php @@ -6,7 +6,7 @@ include("includes/functions.php"); if($argv[1]) { $where = "AND `device_id` = '$argv[1]'"; } -function snmp_array($oid, $device, $array, $mib = 0) { +function snmp_cache($oid, $device, $array, $mib = 0) { global $config; $cmd = $config['snmpbulkwalk'] . " -O Qs -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " "; if($mib) { $cmd .= "-m $mib "; } @@ -23,10 +23,44 @@ function snmp_array($oid, $device, $array, $mib = 0) { if(!strstr($this_value, "No Such Instance currently exists at this OID") && $this_index) { $array[$device_id][$this_index][$this_oid] = $this_value; } + $array[$device_id][$oid] = '1'; } return $array; } +function snmp_cache_portIfIndex ($device, $array) { + global $config; + $cmd = $config['snmpwalk'] . " -CI -m CISCO-STACK-MIB -O q -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " portIfIndex"; + $output = trim(shell_exec($cmd)); + echo("Caching: portIfIndex\n"); + foreach(explode("\n", $output) as $entry){ + $entry = str_replace("CISCO-STACK-MIB::portIfIndex.", "", $entry); + list($slotport, $ifIndex) = explode(" ", $entry); + $array[$device_id][$ifIndex]['portIfIndex'] = $slotport; + $array[$device_id][$slotport]['ifIndex'] = $ifIndex; + } + return $array; +} + +function snmp_cache_portName ($device, $array) { + global $config; + $cmd = $config['snmpwalk'] . " -CI -m CISCO-STACK-MIB -O Qs -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " portName"; + $output = trim(shell_exec($cmd)); + echo("Caching: portName\n"); + foreach(explode("\n", $output) as $entry){ + $entry = str_replace("portName.", "", $entry); + list($slotport, $portName) = explode("=", $entry); + $slotport = trim($slotport); $portName = trim($portName); + if ($array[$device_id][$slotport]['ifIndex']) { + $ifIndex = $array[$device_id][$slotport]['ifIndex']; + $array[$device_id][$slotport]['portName'] = $portName; + $array[$device_id][$ifIndex]['portName'] = $portName; + } + } + 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)) { @@ -34,26 +68,34 @@ while ($device = mysql_fetch_array($device_query)) { $i++; // 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'); - $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); - } - foreach ($stat_oids as $oid) { -# $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:OLD-CISCO-INTERFACES-MIB"); - } - foreach ($pagp_oids as $oid) { - $array = snmp_array($oid, $device, $array, "CISCO-PAGP-MIB"); - } + $data_oids = array('ifName','ifDescr','ifAlias', 'ifAdminStatus', 'ifOperStatus', 'ifMtu', 'ifSpeed', 'ifHighSpeed', 'ifType', 'ifPhysAddress', + 'ifPromiscuousMode','ifConnectorPresent'); + $stat_oids = array('ifHCInOctets', 'ifHCOutOctets', 'ifInErrors', 'ifOutErrors', 'ifInUcastPkts', 'ifOutUcastPkts', 'ifInNUcastPkts', 'ifOutNUcastPkts', + 'ifHCInMulticastPkts', 'ifHCInBroadcastPkts', 'ifHCOutMulticastPkts', 'ifHCOutBroadcastPkts'); + $etherlike_oids = array('dot3StatsAlignmentErrors', 'dot3StatsFCSErrors', 'dot3StatsSingleCollisionFrames', 'dot3StatsMultipleCollisionFrames', + 'dot3StatsSQETestErrors', 'dot3StatsDeferredTransmissions', 'dot3StatsLateCollisions', 'dot3StatsExcessiveCollisions', + 'dot3StatsInternalMacTransmitErrors', 'dot3StatsCarrierSenseErrors', 'dot3StatsFrameTooLongs', 'dot3StatsInternalMacReceiveErrors', + 'dot3StatsSymbolErrors', 'dot3StatsDuplexStatus'); + $cisco_oids = array('locIfHardType', 'locIfInRunts', 'locIfInGiants', 'locIfInCRC', 'locIfInFrame', 'locIfInOverrun', 'locIfInIgnored', 'locIfInAbort', + 'locIfCollisions', 'locIfInputQueueDrops', 'locIfOutputQueueDrops'); + $pagp_oids = array('pagpOperationMode', 'pagpPortState', 'pagpPartnerDeviceId', 'pagpPartnerLearnMethod', 'pagpPartnerIfIndex', 'pagpPartnerGroupIfIndex', + 'pagpPartnerDeviceName', 'pagpEthcOperationMode', 'pagpDeviceId', 'pagpGroupIfIndex'); + + $cip_oids = array('cipMacHCSwitchedBytes', 'cipMacHCSwitchedBytes', 'cipMacHCSwitchedPkts', 'cipMacHCSwitchedPkts'); + + $array = snmp_cache_portIfIndex ($device, $array); + $array = snmp_cache_portName ($device, $array); + foreach ($data_oids as $oid) { $array = snmp_cache($oid, $device, $array, "IF-MIB"); } + #foreach ($cip_oids as $oid) { $array = snmp_cache($oid, $device, $array, "CISCO-IP-STAT-MIB"); } + foreach ($stat_oids as $oid) { $array = snmp_cache($oid, $device, $array, "IF-MIB"); } + foreach ($etherlike_oids as $oid) { $array = snmp_cache($oid, $device, $array, "EtherLike-MIB"); } + foreach ($cisco_oids as $oid) { $array = snmp_cache($oid, $device, $array, "OLD-CISCO-INTERFACES-MIB"); } + foreach ($pagp_oids as $oid) { $array = snmp_cache($oid, $device, $array, "CISCO-PAGP-MIB"); } + + snmp_cache("vmVlan", $device, $array, "CISCO-VLAN-MEMBERSHIP-MIB"); + snmp_cache("vlanTrunkPortEncapsulationOperType", $device, $array, "CISCO-VTP-MIB"); + snmp_cache("vlanTrunkPortNativeVlan", $device, $array, "CISCO-VTP-MIB"); + // End Building SNMP Cache Array // New interface detection @@ -64,38 +106,57 @@ while ($device = mysql_fetch_array($device_query)) { $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'] . " "); + + /// Update IF-MIB + foreach ($data_oids as $oid) { + if ( $port[$oid] != $this_port[$oid]) { + $update .= $separator . "`$oid` = '".$this_port[$oid]."'"; + $separator = ", "; + mysql_query("INSERT INTO eventlog (`host`, `interface`, `datetime`, `message`) VALUES ('" . $port['device_id'] . "', '" . $port['interface_id'] . "', NOW(), '".$oid . ": ".$port[$oid]." -> " . $this_port[$oid]."')"); + #eventlog($device['device_id'], 'interface', $port['interface_id'], $oid . ": ".$port[$oid]." -> " . $this_port[$oid]); + echo($oid . " "); + } + } + /// End Update IF-MIB + + /// Update PAgP + if($this_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 = ", "; + echo("PAgP "); } } - 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); - } - } + } + // End Update PAgP + + + if ($update) { /// Do Updates + $update_query = "UPDATE `interfaces` SET "; + $update_query .= $update; + $update_query .= " WHERE `interface_id` = '" . $port['interface_id'] . "'"; + #@mysql_query($update_query); + #echo("$update_query"); + if(mysql_affected_rows > '0') { echo("Updated "); } + } /// End Updates + + unset($separator); unset($update_query); unset($update); } else { echo("Port Deleted?"); // Port missing from SNMP cache? } echo("\n"); } - unset($array); + #unset($array); echo("\n"); } echo("$i devices polled"); ?> - diff --git a/poll-mac_accounting.php b/poll-mac_accounting.php index b2be7b4f1..cf484cb76 100755 --- a/poll-mac_accounting.php +++ b/poll-mac_accounting.php @@ -76,16 +76,16 @@ $woo = "N:".($pktin+0).":".($pktout+0); $ret = rrdtool_update("$pkts_rrdfile", $woo); - $rates = interface_rates ($rrdfile); +# $rates = interface_rates ($rrdfile); - $pkt_rates = interface_rates ($pkts_rrdfile); +# $pkt_rates = interface_rates ($pkts_rrdfile); $pkt_rate['in'] = round($pkt_rate['in'] / 8); $pkt_rate['out'] = round($pkt_rate['out'] / 8); - mysql_query("UPDATE `mac_accounting` SET bps_in = '" . $rates['in'] . "', bps_out = '" . $rates['out'] . "', pps_in = '" . $pkt_rates['in'] . "', pps_out = '" . $pkt_rates['out'] . "' WHERE ma_id= '" . $acc['ma_id'] . "'"); +# mysql_query("UPDATE `mac_accounting` SET bps_in = '" . $rates['in'] . "', bps_out = '" . $rates['out'] . "', pps_in = '" . $pkt_rates['in'] . "', pps_out = '" . $pkt_rates['out'] . "' WHERE ma_id= '" . $acc['ma_id'] . "'"); - echo(formatRates($rates['in']) . " (" . $pkt_rates['in'] . "pps) in " . formatRates($rates['out']) . " (" . $pkt_rates['out'] . "pps) out \n"); +# echo(formatRates($rates['in']) . " (" . $pkt_rates['in'] . "pps) in " . formatRates($rates['out']) . " (" . $pkt_rates['out'] . "pps) out \n"); } ?>