From 8bfa1fd9af38bbd751a81663059ac4ae8d510115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Deckert?= Date: Thu, 29 Sep 2022 18:54:48 +0200 Subject: [PATCH] import from https://github.com/keyereal/snmp_lldp, pre-compiled modules removed --- COPYING | 341 + ChangeLog | 25 + INSTALL | 106 + README.md | 26 +- .../templates/zbx_export_templates.xml | 1635 +++++ .../value_mapping/zbx_export_valuemaps.xml | 40 + mibs/lldp-mibs/DIFFSERV-DSCP-TC.mib.txt | 68 + .../LLDP-EXT-DOT1-MIB-200505060000Z.txt | 821 +++ .../LLDP-EXT-DOT3-MIB-200505060000Z.txt | 855 +++ mibs/lldp-mibs/LLDP-EXT-MED-MIB.mib.txt | 1636 +++++ mibs/lldp-mibs/LLDP-MIB-200505060000Z.txt | 2032 ++++++ mibs/lldp-mibs/P-BRIDGE.my | 1102 ++++ mibs/lldp-mibs/Q-BRIDGE-MIB | 2489 +++++++ mibs/lldp-mibs/RMON2-MIB.my | 5781 +++++++++++++++++ mibs/lldp-mibs/TOKEN-RING-RMON-MIB.my | 2580 ++++++++ source/COPYING | 340 + source/ChangeLog | 10 + source/INSTALL | 36 + source/README | 32 + source/modules/Makefile | 26 + source/modules/lldp_get.c | 1858 ++++++ 21 files changed, 21838 insertions(+), 1 deletion(-) create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 data/zabbix3.0/templates/zbx_export_templates.xml create mode 100644 data/zabbix3.0/value_mapping/zbx_export_valuemaps.xml create mode 100644 mibs/lldp-mibs/DIFFSERV-DSCP-TC.mib.txt create mode 100644 mibs/lldp-mibs/LLDP-EXT-DOT1-MIB-200505060000Z.txt create mode 100644 mibs/lldp-mibs/LLDP-EXT-DOT3-MIB-200505060000Z.txt create mode 100644 mibs/lldp-mibs/LLDP-EXT-MED-MIB.mib.txt create mode 100644 mibs/lldp-mibs/LLDP-MIB-200505060000Z.txt create mode 100644 mibs/lldp-mibs/P-BRIDGE.my create mode 100644 mibs/lldp-mibs/Q-BRIDGE-MIB create mode 100644 mibs/lldp-mibs/RMON2-MIB.my create mode 100644 mibs/lldp-mibs/TOKEN-RING-RMON-MIB.my create mode 100644 source/COPYING create mode 100644 source/ChangeLog create mode 100644 source/INSTALL create mode 100644 source/README create mode 100644 source/modules/Makefile create mode 100644 source/modules/lldp_get.c diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..c1002d5 --- /dev/null +++ b/COPYING @@ -0,0 +1,341 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..ef63eb4 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,25 @@ + Layer 2 Discovery Module for LLDP + Changes + + +[2018-09-21] Changes for 1.0 + - initial version. + +[2018-11-26] Changes for 1.1 + - Add module for Zabbix 4.0 + - Updated installation document. + +[2019-05-28] Changes for 1.2 + - Add module for Zabbix 4.2 + - Change of specification of monitoring template (disable trigger) + - Updated installation document. + +[2019-07-08] Changes for 1.3 + - Source code modification to support Zabbix 4.0.7 + - Separate modules by Zabbix 4.0.0 to 4.0.6 and 4.0.7 or later. + +[2019-11-14] Changes for 1.4 + - Add module for Zabbix 4.4 + +[2020-06-05] Changes for 1.5 + - Add module for Zabbix 5.0 diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..0b4880d --- /dev/null +++ b/INSTALL @@ -0,0 +1,106 @@ + + Layer 2 Discovery Module for LLDP + Installation document + + ------------------ + Tree Layout + ------------------ + +./ .................... Top-Level Root Directory + COPYING ............. License description (GPL version 2) + ChangeLog ........... Binary package change history + INSTALL ............. This file + README.md............ Overview of this distribution + +data/ ................. Configuration files for Zabbix + zabbix3.0/ .......... Configuration file for Zabbix 3.0 + templates/ ........ LLDP monitoring template + value_mapping/ .... Configuration file for value mapping + +mibs/ ................. Management Information Base files + lldp-mibs/ .......... Management Information Base module for LLDP (LLDP-MIB) + +source/ .............. Source of Zabbix loadable module + + ------------------ + Install + ------------------ + + How to install loadable module. + ----------------------------------- + + 1. Store the LLDP-MIB files in a location according to Net-SNMP's MIBDIR setting. + + ex) /usr/share/snmp/mibs/ + + 2. Build and store the loadable module in place. + + ex) /usr/lib/zabbix/modules/ + + 3. Make settings to load loadable modules into Zabbix Server / Proxy configuration file. + + ex) LoadModulePath=/usr/lib/zabbix/modules + LoadModule=lldp_get.so + + 4. Restart the Zabbix Server / Proxy process. + Check the Zabbix Server / Proxy log file and confirm that the following wording + indicating that the loadable module has been loaded is output. + + ex) lldp_get module: loaded by server process. [1] + loaded modules: lldp_get.so + + The display may vary depending on the version of Zabbix and the log debug level. + (The example shows the case when Zabbix 3.0 is set to log level 3) + + + How to setting templates + ----------------------------------- + + 1. Login to the Zabbix Web interface with an account with super administrator privileges. + + 2. [Administration] -> [General settings] -> [Value mapping], value mapping + Import the file for setting. + + 3. [Settings] -> [Template], import the LLDP monitoring template. + + + How to setting the host + ----------------------------------- + + 1. "Create Host" is done from setting screen. + Set the IP address in "SNMP interfaces". + + 2. Set "Template LLDP - General" or "Template LLDP - IndexNum" to the created host. (Select one) + + Template LLDP - General .... Use "ifName" as the local port number + Template LLDP - IndexNum ... Use "ifIndex" as the local port number + + Tips : In most cases, please use "Template LLDP - General". + If the local port number becomes "eth0" please try "Template LLDP - IndexNum". + + 3. (Zabbix 3.x) Wait for low-level discovery to generate the item. + (Zabbix 4.0 or later) Execute [Check now] from the discovery rule on the host setting screen to generate the item. + + + ------------------ + Special function + ------------------ + + How to overwrite lldp.rem.sysname + ----------------------------------- + + You can override the adjacent device host name ([Connect to] Host item) using host macros. + + 1. Check the 5th parameter (macro name) from the key of the item that is acquiring + the neighbor device information. + + ex) Item Key : lldp.rem.sysname[{HOST.CONN},{$SNMP_COMMUNITY},1,7,{$FIXED_SYSNAME_1}] + 5th parameter : {$FIXED_SYSNAME_1} + + 2. On the host macro setting screen, make the following settings. + Set "character string acquired from the fifth parameter" in the macro field. + Set "Overwrite character string" in the value field. + + 3. From the next monitoring timing, the specified character string is collected as "Neighbor device host name". + +# EOF diff --git a/README.md b/README.md index eeefb65..780e5da 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,27 @@ # snmp_lldp +This project is a mirror for https://github.com/keyereal/snmp_lldp +which is a mirrot for https://github.com/zabbix-book/snmp_lldp +which is a mirror for https://share.zabbix.com/network_devices/l2-discovery-module-for-lldp -Zabbix SNMP LLDP Topology Discovery \ No newline at end of file +Zabbix SNMP LLDP Topology Discovery + + Layer 2 Discovery Module for LLDP + Introduction document + + What is it? + ----------- + + The LLDP monitoring module provides a function to read adjacent device + information of LLDP held by network equipment from Zabbix using SNMP. + + + Licensing + --------- + + Please see the file called COPYING. + + + Installation + ------------ + + Please see the file called INSTALL. diff --git a/data/zabbix3.0/templates/zbx_export_templates.xml b/data/zabbix3.0/templates/zbx_export_templates.xml new file mode 100644 index 0000000..f825ffe --- /dev/null +++ b/data/zabbix3.0/templates/zbx_export_templates.xml @@ -0,0 +1,1635 @@ + + + 3.0 + 2019-05-27T22:36:45Z + + + Templates/L2DM/LLDP + + + + + + + + + LLDP LldpPortIdSubtype + + + 1 + interfaceAlias + + + 2 + portComponent + + + 3 + macAddress + + + 4 + networkAddress + + + 5 + interfaceName + + + 6 + agentCircuitId + + + 7 + local + + + + + SNMP ifType + + + 6 + ethernetCsmacd + + + 20 + basicISDN + + + 23 + ppp + + + 24 + softwareLoopback + + + 54 + propMultiplexor + + + 62 + fastEther + + + 69 + fastEtherFX + + + 117 + gigabitEthernet + + + 131 + tunnel + + + 161 + ieee8023adLag + + + 258 + vmwareVirtualNic + + + 272 + vmwareNicTeam + + + + + SNMP interface status (ifOperStatus) + + + 1 + up + + + 2 + down + + + 3 + testing + + + 4 + unknown + + + 5 + dormant + + + 6 + notPresent + + + 7 + lowerLayerDown + + + + + diff --git a/data/zabbix3.0/value_mapping/zbx_export_valuemaps.xml b/data/zabbix3.0/value_mapping/zbx_export_valuemaps.xml new file mode 100644 index 0000000..a7b8055 --- /dev/null +++ b/data/zabbix3.0/value_mapping/zbx_export_valuemaps.xml @@ -0,0 +1,40 @@ + + + 3.0 + 2018-09-27T01:38:55Z + + + LLDP LldpPortIdSubtype + + + 1 + interfaceAlias + + + 2 + portComponent + + + 3 + macAddress + + + 4 + networkAddress + + + 5 + interfaceName + + + 6 + agentCircuitId + + + 7 + local + + + + + diff --git a/mibs/lldp-mibs/DIFFSERV-DSCP-TC.mib.txt b/mibs/lldp-mibs/DIFFSERV-DSCP-TC.mib.txt new file mode 100644 index 0000000..6e4fc53 --- /dev/null +++ b/mibs/lldp-mibs/DIFFSERV-DSCP-TC.mib.txt @@ -0,0 +1,68 @@ + +-- WinAgents MIB Extraction Wizard +-- Extracted from rfc3289.txt 16.03.2005 20:21:57 + +DIFFSERV-DSCP-TC DEFINITIONS ::= BEGIN + + IMPORTS + Integer32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +diffServDSCPTC MODULE-IDENTITY + LAST-UPDATED "200205090000Z" + ORGANIZATION "IETF Differentiated Services WG" + CONTACT-INFO + " Fred Baker + Cisco Systems + 1121 Via Del Rey + Santa Barbara, CA 93117, USA + E-mail: fred@cisco.com + + Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821, USA + E-mail: khchan@nortelnetworks.com + + Andrew Smith + Harbour Networks + Jiuling Building + 21 North Xisanhuan Ave. + Beijing, 100089, PRC + E-mail: ah_smith@acm.org + + Differentiated Services Working Group: + diffserv@ietf.org" + DESCRIPTION + "The Textual Conventions defined in this module should be used + whenever a Differentiated Services Code Point is used in a MIB." + REVISION "200205090000Z" + DESCRIPTION + "Initial version, published as RFC 3289." + ::= { mib-2 96 } + +Dscp ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A Differentiated Services Code-Point that may be used for + marking a traffic stream." + REFERENCE + "RFC 2474, RFC 2780" + SYNTAX Integer32 (0..63) + +DscpOrAny ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The IP header Differentiated Services Code-Point that may be + + used for discriminating among traffic streams. The value -1 is + used to indicate a wild card i.e. any value." + REFERENCE + "RFC 2474, RFC 2780" + SYNTAX Integer32 (-1 | 0..63) + +END diff --git a/mibs/lldp-mibs/LLDP-EXT-DOT1-MIB-200505060000Z.txt b/mibs/lldp-mibs/LLDP-EXT-DOT1-MIB-200505060000Z.txt new file mode 100644 index 0000000..1340e11 --- /dev/null +++ b/mibs/lldp-mibs/LLDP-EXT-DOT1-MIB-200505060000Z.txt @@ -0,0 +1,821 @@ +LLDP-EXT-DOT1-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + lldpExtensions, lldpLocPortNum, + lldpRemTimeMark, lldpRemLocalPortNum, lldpRemIndex, + lldpPortConfigEntry + FROM LLDP-MIB + VlanId + FROM Q-BRIDGE-MIB; + +lldpXdot1MIB MODULE-IDENTITY + LAST-UPDATED "200505060000Z" -- May 06, 2005 + ORGANIZATION "IEEE 802.1 Working Group" + CONTACT-INFO + " WG-URL: http://grouper.ieee.org/groups/802/1/index.html + WG-EMail: stds-802-1@ieee.org + + Contact: Paul Congdon + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. + Roseville, CA 95747 + USA + Tel: +1-916-785-5753 + E-mail: paul_congdon@hp.com" + DESCRIPTION + "The LLDP Management Information Base extension module for + IEEE 802.1 organizationally defined discovery information. + + In order to assure the uniqueness of the LLDP-MIB, + lldpXdot1MIB is branched from lldpExtensions using OUI value + as the node. An OUI/'company_id' is a 24 bit globally unique + assigned number referenced by various standards. + + Copyright (C) IEEE (2005). This version of this MIB module + is published as Annex F.7.1 of IEEE Std 802.1AB-2005; + see the standard itself for full legal notices." + REVISION "200505060000Z" -- May 06, 2005 + DESCRIPTION + "Published as part of IEEE Std 802.1AB-2005 initial version." +-- OUI for IEEE 802.1 is 32962 (00-80-C2) + ::= { lldpExtensions 32962 } + +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- +-- Organizationally Defined Information Extension - IEEE 802.1 +-- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + +lldpXdot1Objects OBJECT IDENTIFIER ::= { lldpXdot1MIB 1 } + +-- LLDP IEEE 802.1 extension MIB groups +lldpXdot1Config OBJECT IDENTIFIER ::= { lldpXdot1Objects 1 } +lldpXdot1LocalData OBJECT IDENTIFIER ::= { lldpXdot1Objects 2 } +lldpXdot1RemoteData OBJECT IDENTIFIER ::= { lldpXdot1Objects 3 } + +------------------------------------------------------------------------------ +-- IEEE 802.1 - Configuration +------------------------------------------------------------------------------ +-- +-- lldpXdot1ConfigPortVlanTable : configure the transmission of the +-- Port VLAN-ID TLVs on set of ports. +-- + +lldpXdot1ConfigPortVlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1ConfigPortVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that controls selection of LLDP Port VLAN-ID TLVs + to be transmitted on individual ports." + ::= { lldpXdot1Config 1 } + +lldpXdot1ConfigPortVlanEntry OBJECT-TYPE + SYNTAX LldpXdot1ConfigPortVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that controls the + transmission of IEEE 802.1 organizationally defined Port + VLAN-ID TLV on LLDP transmission capable ports. + + This configuration object augments the lldpPortConfigEntry of + the LLDP-MIB, therefore it is only present along with the port + configuration defined by the associated lldpPortConfigEntry + entry. + + Each active lldpConfigEntry must be restored from non-volatile + storage (along with the corresponding lldpPortConfigEntry) + after a re-initialization of the management system." + AUGMENTS { lldpPortConfigEntry } + ::= { lldpXdot1ConfigPortVlanTable 1 } + +LldpXdot1ConfigPortVlanEntry ::= SEQUENCE { + lldpXdot1ConfigPortVlanTxEnable TruthValue +} + +lldpXdot1ConfigPortVlanTxEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpXdot1ConfigPortVlanTxEnable, which is defined as + a truth value and configured by the network management, + determines whether the IEEE 802.1 organizationally defined + port VLAN TLV transmission is allowed on a given LLDP + transmission capable port. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { false } + ::= { lldpXdot1ConfigPortVlanEntry 1 } + +-- +-- lldpXdot1ConfigVlanNameTable : configure the transmission of the +-- VLAN name instances on set of ports. +-- + +lldpXdot1ConfigVlanNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1ConfigVlanNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table that controls selection of LLDP VLAN name TLV + instances to be transmitted on individual ports." + ::= { lldpXdot1Config 2 } + +lldpXdot1ConfigVlanNameEntry OBJECT-TYPE + SYNTAX LldpXdot1ConfigVlanNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that specifies the set of + ports (represented as a PortList) on which the Local System + VLAN name instance will be transmitted. + + This configuration object augments the lldpLocVlanEntry, + therefore it is only present along with the VLAN Name instance + contained in the associated lldpLocVlanNameEntry entry. + + Each active lldpXdot1ConfigVlanNameEntry must be restored + from non-volatile storage (along with the corresponding + lldpXdot1LocVlanNameEntry) after a re-initialization of the + management system." + AUGMENTS { lldpXdot1LocVlanNameEntry } + ::= { lldpXdot1ConfigVlanNameTable 1 } + +LldpXdot1ConfigVlanNameEntry ::= SEQUENCE { + lldpXdot1ConfigVlanNameTxEnable TruthValue +} + +lldpXdot1ConfigVlanNameTxEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boolean value that indicates whether the corresponding + Local System VLAN name instance will be transmitted on the + port defined by the given lldpXdot1LocVlanNameEntry. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { false } + ::= { lldpXdot1ConfigVlanNameEntry 1 } + +-- +-- lldpXdot1ConfigProtoVlanTable : configure the transmission of the +-- protocol VLAN instances on set +-- of ports. +-- + +lldpXdot1ConfigProtoVlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1ConfigProtoVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table that controls selection of LLDP Port and Protocol + VLAN ID TLV instances to be transmitted on individual ports." + ::= { lldpXdot1Config 3 } + +lldpXdot1ConfigProtoVlanEntry OBJECT-TYPE + SYNTAX LldpXdot1ConfigProtoVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that specifies the set of + ports (represented as a PortList) on which the Local System + Protocol VLAN instance will be transmitted. + + This configuration object augments the lldpXdot1LocVlanEntry, + therefore it is only present along with the Port and + Protocol VLAN ID instance contained in the associated + lldpXdot1LocVlanEntry entry. + + Each active lldpXdot1ConfigProtoVlanEntry must be restored + from non-volatile storage (along with the corresponding + lldpXdot1LocProtoVlanEntry) after a re-initialization of + the management system." + + AUGMENTS { lldpXdot1LocProtoVlanEntry } + ::= { lldpXdot1ConfigProtoVlanTable 1 } + +LldpXdot1ConfigProtoVlanEntry ::= SEQUENCE { + lldpXdot1ConfigProtoVlanTxEnable TruthValue +} + +lldpXdot1ConfigProtoVlanTxEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boolean value that indicates whether the corresponding + Local System Port and Protocol VLAN instance will + be transmitted on the port defined by the given + lldpXdot1LocProtoVlanEntry. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { false } + ::= { lldpXdot1ConfigProtoVlanEntry 1 } + +-- +-- lldpXdot1ConfigProtocolTable : configure the transmission of the +-- protocol instances on set +-- of ports. +-- + +lldpXdot1ConfigProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1ConfigProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table that controls selection of LLDP Protocol + TLV instances to be transmitted on individual ports." + ::= { lldpXdot1Config 4 } + +lldpXdot1ConfigProtocolEntry OBJECT-TYPE + SYNTAX LldpXdot1ConfigProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that specifies the set of + ports (represented as a PortList) on which the Local System + Protocol instance will be transmitted. + + This configuration object augments the lldpXdot1LocProtoEntry, + therefore it is only present along with the Protocol instance + contained in the associated lldpXdot1LocProtoEntry entry. + + Each active lldpXdot1ConfigProtocolEntry must be restored + from non-volatile storage (along with the corresponding + lldpXdot1LocProtocolEntry) after a re-initialization of the + management system." + AUGMENTS { lldpXdot1LocProtocolEntry } + ::= { lldpXdot1ConfigProtocolTable 1 } + +LldpXdot1ConfigProtocolEntry ::= SEQUENCE { + lldpXdot1ConfigProtocolTxEnable TruthValue +} + +lldpXdot1ConfigProtocolTxEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boolean value that indicates whether the corresponding + Local System Protocol Identity instance will be transmitted + on the port defined by the given lldpXdot1LocProtocolEntry. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { false } + ::= { lldpXdot1ConfigProtocolEntry 1 } + +------------------------------------------------------------------------------ +-- IEEE 802.1 - Local System Information +------------------------------------------------------------------------------ +lldpXdot1LocTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1LocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port for IEEE 802.1 + organizationally defined LLDP extension on the local system + known to this agent." + ::= { lldpXdot1LocalData 1 } + +lldpXdot1LocEntry OBJECT-TYPE + SYNTAX LldpXdot1LocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about IEEE 802.1 organizationally defined + LLDP extension." + INDEX { lldpLocPortNum } + ::= { lldpXdot1LocTable 1 } + +LldpXdot1LocEntry ::= SEQUENCE { + lldpXdot1LocPortVlanId Integer32 +} + +lldpXdot1LocPortVlanId OBJECT-TYPE + SYNTAX Integer32(0|1..4094) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value used to identify the port's VLAN identifier + associated with the local system. A value of zero shall + be used if the system either does not know the PVID or does + not support port-based VLAN operation." + REFERENCE + "IEEE 802.1AB-2005 F.2.1" + ::= { lldpXdot1LocEntry 1 } + +-- +-- lldpXdot1LocProtoVlanTable: Port and Protocol VLAN information +-- + +lldpXdot1LocProtoVlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1LocProtoVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per Port and Protocol + VLAN information about the local system." + ::= { lldpXdot1LocalData 2 } + +lldpXdot1LocProtoVlanEntry OBJECT-TYPE + SYNTAX LldpXdot1LocProtoVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Port and protocol VLAN ID Information about a particular + port component. There may be multiple port and protocol VLANs, + identified by a particular lldpXdot1LocProtoVlanId, configured + on the given port." + INDEX { lldpLocPortNum, + lldpXdot1LocProtoVlanId } + ::= { lldpXdot1LocProtoVlanTable 1 } + +LldpXdot1LocProtoVlanEntry ::= SEQUENCE { + lldpXdot1LocProtoVlanId Integer32, + lldpXdot1LocProtoVlanSupported TruthValue, + lldpXdot1LocProtoVlanEnabled TruthValue +} + +lldpXdot1LocProtoVlanId OBJECT-TYPE + SYNTAX Integer32(0|1..4094) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The integer value used to identify the port and protocol + VLANs associated with the given port associated with the + local system. A value of zero shall be used if the system + either does not know the protocol VLAN ID (PPVID) or does + not support port and protocol VLAN operation." + REFERENCE + "IEEE 802.1AB-2005 F.3.2" + ::= { lldpXdot1LocProtoVlanEntry 1 } + +lldpXdot1LocProtoVlanSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the given port + (associated with the local system) supports port and protocol + VLANs." + REFERENCE + "IEEE 802.1AB-2005 F.3.1" + ::= { lldpXdot1LocProtoVlanEntry 2 } + +lldpXdot1LocProtoVlanEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the port and + protocol VLANs are enabled on the given port associated with + the local system." + REFERENCE + "IEEE 802.1AB-2005 F.3.1" + ::= { lldpXdot1LocProtoVlanEntry 3 } + +-- +-- lldpXdot1LocVlanNameTable : VLAN name information about the local system +-- + +lldpXdot1LocVlanNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1LocVlanNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per IEEE 802.1Q VLAN + name information on the local system known to this agent." + ::= { lldpXdot1LocalData 3 } + +lldpXdot1LocVlanNameEntry OBJECT-TYPE + SYNTAX LldpXdot1LocVlanNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "VLAN name Information about a particular port component. + There may be multiple VLANs, identified by a particular + lldpXdot1LocVlanId, configured on the given port." + INDEX { lldpLocPortNum, + lldpXdot1LocVlanId } + ::= { lldpXdot1LocVlanNameTable 1 } + +LldpXdot1LocVlanNameEntry ::= SEQUENCE { + lldpXdot1LocVlanId VlanId, + lldpXdot1LocVlanName SnmpAdminString +} + +lldpXdot1LocVlanId OBJECT-TYPE + SYNTAX VlanId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The integer value used to identify the IEEE 802.1Q + VLAN IDs with which the given port is compatible." + REFERENCE + "IEEE 802.1AB-2005 F.4.2" + ::= { lldpXdot1LocVlanNameEntry 1 } + +lldpXdot1LocVlanName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify VLAN name identified by the + Vlan Id associated with the given port on the local system. + + This object should contain the value of the dot1QVLANStaticName + object (defined in IETF RFC 2674) identified with the given + lldpXdot1LocVlanId." + REFERENCE + "IEEE 802.1AB-2005 F.4.4" + ::= { lldpXdot1LocVlanNameEntry 2 } + +-- +-- lldpXdot1LocProtocolTable : Protocol Identity information +-- + +lldpXdot1LocProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1LocProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per protocol identity + information on the local system known to this agent." + REFERENCE + "IEEE 802.1AB-2005 F.5" + ::= { lldpXdot1LocalData 4 } + +lldpXdot1LocProtocolEntry OBJECT-TYPE + SYNTAX LldpXdot1LocProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about particular protocols that are accessible + through the given port component. + + There may be multiple protocols, identified by particular + lldpXdot1ProtocolIndex, and lldpLocPortNum." + REFERENCE + "IEEE 802.1AB-2005 F.5" + INDEX { lldpLocPortNum, + lldpXdot1LocProtocolIndex } + ::= { lldpXdot1LocProtocolTable 1 } + +LldpXdot1LocProtocolEntry ::= SEQUENCE { + lldpXdot1LocProtocolIndex Integer32, + lldpXdot1LocProtocolId OCTET STRING +} + +lldpXdot1LocProtocolIndex OBJECT-TYPE + SYNTAX Integer32(1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary local integer value used + by this agent to identify a particular protocol identity." + ::= { lldpXdot1LocProtocolEntry 1 } + +lldpXdot1LocProtocolId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The octet string value used to identify the protocols + associated with the given port of the local system." + REFERENCE + "IEEE 802.1AB-2005 F.5.3" + ::= { lldpXdot1LocProtocolEntry 2 } + + +------------------------------------------------------------------------------ +-- IEEE 802.1 - Remote System Information +------------------------------------------------------------------------------ +lldpXdot1RemTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1RemEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per physical network + connection known to this agent. The agent may wish to + ensure that only one lldpXdot1RemEntry is present for + each local port, or it may choose to maintain multiple + lldpXdot1RemEntries for the same local port." + ::= { lldpXdot1RemoteData 1 } + +lldpXdot1RemEntry OBJECT-TYPE + SYNTAX LldpXdot1RemEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port component." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXdot1RemTable 1 } + +LldpXdot1RemEntry ::= SEQUENCE { + lldpXdot1RemPortVlanId Integer32 +} + +lldpXdot1RemPortVlanId OBJECT-TYPE + SYNTAX Integer32(0|1..4094) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value used to identify the port's VLAN identifier + associated with the remote system. if the remote system + either does not know the PVID or does not support port-based + VLAN operation, the value of lldpXdot1RemPortVlanId should + be zero." + REFERENCE + "IEEE 802.1AB-2005 F.2.1" + ::= { lldpXdot1RemEntry 1 } + +lldpXdot1RemProtoVlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1RemProtoVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per Port and Protocol + VLAN information about the remote system, received on the + given port." + ::= { lldpXdot1RemoteData 2 } + +lldpXdot1RemProtoVlanEntry OBJECT-TYPE + SYNTAX LldpXdot1RemProtoVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Port and protocol VLAN name Information about a particular + port component. There may be multiple protocol VLANs, + identified by a particular lldpXdot1RemProtoVlanId, configured + on the remote system." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpXdot1RemProtoVlanId } + ::= { lldpXdot1RemProtoVlanTable 1 } + +LldpXdot1RemProtoVlanEntry ::= SEQUENCE { + lldpXdot1RemProtoVlanId Integer32, + lldpXdot1RemProtoVlanSupported TruthValue, + lldpXdot1RemProtoVlanEnabled TruthValue +} + +lldpXdot1RemProtoVlanId OBJECT-TYPE + SYNTAX Integer32(0|1..4094) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The integer value used to identify the port and protocol + VLANs associated with the given port associated with the + remote system. + + If port and protocol VLANs are not supported on the given + port associated with the remote system, or if the port is + not enabled with any port and protocol VLAN, the value of + lldpXdot1RemProtoVlanId should be zero." + REFERENCE + "IEEE 802.1AB-2005 F.3.2" + ::= { lldpXdot1RemProtoVlanEntry 1 } + +lldpXdot1RemProtoVlanSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the given port + (associated with the remote system) is capable of supporting + port and protocol VLANs." + REFERENCE + "IEEE 802.1AB-2005 F.3.1" + ::= { lldpXdot1RemProtoVlanEntry 2 } + +lldpXdot1RemProtoVlanEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the port and + protocol VLANs are enabled on the given port associated with + the remote system." + REFERENCE + "IEEE 802.1AB-2005 F.3.1" + ::= { lldpXdot1RemProtoVlanEntry 3 } + + +-- +-- lldpXdot1RemVlanNameTable : VLAN name information of the remote +-- systems +-- + +lldpXdot1RemVlanNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1RemVlanNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per IEEE 802.1Q VLAN + name information about the remote system, received on the + given port." + REFERENCE + "IEEE 802.1AB-2005 F.4" + ::= { lldpXdot1RemoteData 3 } + +lldpXdot1RemVlanNameEntry OBJECT-TYPE + SYNTAX LldpXdot1RemVlanNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "VLAN name Information about a particular port component. + There may be multiple VLANs, identified by a particular + lldpXdot1RemVlanId, received on the given port." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpXdot1RemVlanId } + ::= { lldpXdot1RemVlanNameTable 1 } + +LldpXdot1RemVlanNameEntry ::= SEQUENCE { + lldpXdot1RemVlanId VlanId, + lldpXdot1RemVlanName SnmpAdminString +} + +lldpXdot1RemVlanId OBJECT-TYPE + SYNTAX VlanId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The integer value used to identify the IEEE 802.1Q + VLAN IDs with which the given port of the remote system + is compatible." + REFERENCE + "IEEE 802.1AB-2005 F.4.2" + ::= { lldpXdot1RemVlanNameEntry 1 } + +lldpXdot1RemVlanName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify VLAN name identified by the + VLAN Id associated with the remote system." + REFERENCE + "IEEE 802.1AB-2005 F.4.4" + ::= { lldpXdot1RemVlanNameEntry 2 } + +-- +-- lldpXdot1RemProtocolTable : Protocol information of the remote systems +-- + +lldpXdot1RemProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot1RemProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per protocol information + about the remote system, received on the given port." + ::= { lldpXdot1RemoteData 4 } + +lldpXdot1RemProtocolEntry OBJECT-TYPE + SYNTAX LldpXdot1RemProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Protocol information about a particular port component. + There may be multiple protocols, identified by a particular + lldpXdot1ProtocolIndex, received on the given port." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpXdot1RemProtocolIndex } + ::= { lldpXdot1RemProtocolTable 1 } + +LldpXdot1RemProtocolEntry ::= SEQUENCE { + lldpXdot1RemProtocolIndex Integer32, + lldpXdot1RemProtocolId OCTET STRING +} + +lldpXdot1RemProtocolIndex OBJECT-TYPE + SYNTAX Integer32(1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary local integer value used + by this agent to identify a particular protocol identity." + ::= { lldpXdot1RemProtocolEntry 1 } + +lldpXdot1RemProtocolId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The octet string value used to identify the protocols + associated with the given port of remote system." + REFERENCE + "IEEE 802.1AB-2005 F.5.3" + ::= { lldpXdot1RemProtocolEntry 2 } + + +------------------------------------------------------------------------------ +-- Conformance Information +------------------------------------------------------------------------------ + +lldpXdot1Conformance OBJECT IDENTIFIER ::= { lldpXdot1MIB 2 } +lldpXdot1Compliances OBJECT IDENTIFIER ::= { lldpXdot1Conformance 1 } +lldpXdot1Groups OBJECT IDENTIFIER ::= { lldpXdot1Conformance 2 } + +-- compliance statements + +lldpXdot1Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the IEEE 802.1 organizationally defined LLDP extension MIB." + MODULE -- this module + MANDATORY-GROUPS { lldpXdot1ConfigGroup, + lldpXdot1LocSysGroup, + lldpXdot1RemSysGroup + } + ::= { lldpXdot1Compliances 1 } + +-- MIB groupings + +lldpXdot1ConfigGroup OBJECT-GROUP + OBJECTS { + lldpXdot1ConfigPortVlanTxEnable, + lldpXdot1ConfigVlanNameTxEnable, + lldpXdot1ConfigProtoVlanTxEnable, + lldpXdot1ConfigProtocolTxEnable + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + IEEE 802.1 organizationally defined LLDP extension + implementation behavior. + + This group is mandatory for agents which implement the + IEEE 802.1 organizationally defined LLDP extension." + ::= { lldpXdot1Groups 1 } + +lldpXdot1LocSysGroup OBJECT-GROUP + OBJECTS { + lldpXdot1LocPortVlanId, + lldpXdot1LocProtoVlanSupported, + lldpXdot1LocProtoVlanEnabled, + lldpXdot1LocVlanName, + lldpXdot1LocProtocolId + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent + IEEE 802.1 organizationally defined LLDP extension associated + with the Local Device Information. + + This group is mandatory for agents which implement the + IEEE 802.1 organizationally defined LLDP extension in the + TX mode." + ::= { lldpXdot1Groups 2 } + +lldpXdot1RemSysGroup OBJECT-GROUP + OBJECTS { + lldpXdot1RemPortVlanId, + lldpXdot1RemProtoVlanSupported, + lldpXdot1RemProtoVlanEnabled, + lldpXdot1RemVlanName, + lldpXdot1RemProtocolId + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + 802.1 organizational extension Local Device Information. + + This group is mandatory for agents which implement the + LLDP 802.1 organizational extension in the RX mode." + ::= { lldpXdot1Groups 3 } + +END diff --git a/mibs/lldp-mibs/LLDP-EXT-DOT3-MIB-200505060000Z.txt b/mibs/lldp-mibs/LLDP-EXT-DOT3-MIB-200505060000Z.txt new file mode 100644 index 0000000..6c62573 --- /dev/null +++ b/mibs/lldp-mibs/LLDP-EXT-DOT3-MIB-200505060000Z.txt @@ -0,0 +1,855 @@ +LLDP-EXT-DOT3-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + lldpExtensions, lldpLocPortNum, + lldpRemTimeMark, lldpRemLocalPortNum, lldpRemIndex, + lldpPortConfigEntry + FROM LLDP-MIB; + +lldpXdot3MIB MODULE-IDENTITY + LAST-UPDATED "200505060000Z" -- May 06, 2005 + ORGANIZATION "IEEE 802.1 Working Group" + CONTACT-INFO + " WG-URL: http://grouper.ieee.org/groups/802/1/index.html + WG-EMail: stds-802-1@ieee.org + + Contact: Paul Congdon + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. + Roseville, CA 95747 + USA + Tel: +1-916-785-5753 + E-mail: paul_congdon@hp.com" + DESCRIPTION + "The LLDP Management Information Base extension module for + IEEE 802.3 organizationally defined discovery information. + + In order to assure the uniqueness of the LLDP-MIB, + lldpXdot3MIB is branched from lldpExtensions using OUI value + as the node. An OUI/'company_id' is a 24 bit globally unique + assigned number referenced by various standards. + + Copyright (C) IEEE (2005). This version of this MIB module + is published as Annex G.6.1 of IEEE Std 802.1AB-2005; + see the standard itself for full legal notices." + REVISION "200505060000Z" -- May 06, 2005 + DESCRIPTION + "Published as part of IEEE Std 802.1AB-2005 initial version." +-- OUI for IEEE 802.3 is 4623 (00-12-0F) + ::= { lldpExtensions 4623 } + +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- +-- Organizationally Defined Information Extension - IEEE 802.3 +-- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + +lldpXdot3Objects OBJECT IDENTIFIER ::= { lldpXdot3MIB 1 } + +-- LLDP IEEE 802.3 extension MIB groups +lldpXdot3Config OBJECT IDENTIFIER ::= { lldpXdot3Objects 1 } +lldpXdot3LocalData OBJECT IDENTIFIER ::= { lldpXdot3Objects 2 } +lldpXdot3RemoteData OBJECT IDENTIFIER ::= { lldpXdot3Objects 3 } + +-- textual conventions + +LldpPowerPortClass ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the Power over Ethernet (PoE) port class." + SYNTAX INTEGER { + pClassPSE(1), + pClassPD(2) + } + +LldpLinkAggStatusMap ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the link aggregation status. + + The bit 'aggCapable(0)' indicates the link is capable of being + aggregated. + + The bit 'aggEnabled(1)' indicates the link is currently in + aggregation." + SYNTAX BITS { + aggCapable(0), + aggEnabled(1) + } + +------------------------------------------------------------------------------ +-- IEEE 802.3 - Configuration +------------------------------------------------------------------------------ + +lldpXdot3PortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3PortConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that controls selection of LLDP TLVs to be transmitted + on individual ports." + ::= { lldpXdot3Config 1 } + +lldpXdot3PortConfigEntry OBJECT-TYPE + SYNTAX LldpXdot3PortConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that controls the + transmission of IEEE 802.3 organizationally defined TLVs on + LLDP transmission capable ports. + + This configuration object augments the lldpPortConfigEntry of + the LLDP-MIB, therefore it is only present along with the port + configuration defined by the associated lldpPortConfigEntry + entry. + + Each active lldpXdot3PortConfigEntry must be from non-volatile + storage (along with the corresponding lldpPortConfigEntry) + after a re-initialization of the management system." + AUGMENTS { lldpPortConfigEntry } + ::= { lldpXdot3PortConfigTable 1 } + +LldpXdot3PortConfigEntry ::= SEQUENCE { + lldpXdot3PortConfigTLVsTxEnable BITS +} + +lldpXdot3PortConfigTLVsTxEnable OBJECT-TYPE + SYNTAX BITS { + macPhyConfigStatus(0), + powerViaMDI(1), + linkAggregation(2), + maxFrameSize(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpXdot3PortConfigTLVsTxEnable, defined as a bitmap, + includes the IEEE 802.3 organizationally defined set of LLDP + TLVs whose transmission is allowed on the local LLDP agent by + the network management. Each bit in the bitmap corresponds + to an IEEE 802.3 subtype associated with a specific IEEE + 802.3 optional TLV. The bit 0 is not used since there is + no corresponding subtype. + + The bit 'macPhyConfigStatus(0)' indicates that LLDP agent + should transmit 'MAC/PHY configuration/status TLV'. + + The bit 'powerViaMDI(1)' indicates that LLDP agent should + transmit 'Power via MDI TLV'. + + The bit 'linkAggregation(2)' indicates that LLDP agent should + transmit 'Link Aggregation TLV'. + + The bit 'maxFrameSize(3)' indicates that LLDP agent should + transmit 'Maximum-frame-size TLV'. + + The default value for lldpXdot3PortConfigTLVsTxEnable object + is an empty set, which means no enumerated values are set. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { { } } + ::= { lldpXdot3PortConfigEntry 1 } + + +------------------------------------------------------------------------------ +-- IEEE 802.3 - Local Device Information +------------------------------------------------------------------------------ +--- +--- lldpXdot3LocPortTable: Ethernet Port AutoNeg/Speed/Duplex +--- Information Table +--- +--- +lldpXdot3LocPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3LocPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port of Ethernet port + information (as a part of the LLDP 802.3 organizational + extension) on the local system known to this agent." + ::= { lldpXdot3LocalData 1 } + +lldpXdot3LocPortEntry OBJECT-TYPE + SYNTAX LldpXdot3LocPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port component." + INDEX { lldpLocPortNum } + ::= { lldpXdot3LocPortTable 1 } + +LldpXdot3LocPortEntry ::= SEQUENCE { + lldpXdot3LocPortAutoNegSupported TruthValue, + lldpXdot3LocPortAutoNegEnabled TruthValue, + lldpXdot3LocPortAutoNegAdvertisedCap OCTET STRING, + lldpXdot3LocPortOperMauType Integer32 +} + +lldpXdot3LocPortAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the given port + (associated with the local system) supports Auto-negotiation." + REFERENCE + "IEEE 802.1AB-2005 G.2.1" + ::= { lldpXdot3LocPortEntry 1 } + +lldpXdot3LocPortAutoNegEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether port + Auto-negotiation is enabled on the given port associated + with the local system." + REFERENCE + "IEEE 802.1AB-2005 G.2.1" + ::= { lldpXdot3LocPortEntry 2 } + +lldpXdot3LocPortAutoNegAdvertisedCap OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value (bitmap) of the + ifMauAutoNegCapAdvertisedBits object (defined in IETF RFC + 3636) which is associated with the given port on the + local system." + REFERENCE + "IEEE 802.1AB-2005 G.2.2" + ::= { lldpXdot3LocPortEntry 3 } + +lldpXdot3LocPortOperMauType OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value that indicates the operational MAU type + of the given port on the local system. + + This object contains the integer value derived from the + list position of the corresponding dot3MauType as listed + in IETF RFC 3636 (or subsequent revisions) and is equal + to the last number in the respective dot3MauType OID. + + For example, if the ifMauType object is dot3MauType1000BaseTHD + which corresponds to {dot3MauType 29}, the numerical value of + this field will be 29. For MAU types not listed in RFC 3636 + (or subsequent revisions), the value of this field shall be + set to zero." + REFERENCE + "IEEE 802.1AB-2005 G.2.3" + ::= { lldpXdot3LocPortEntry 4 } + +--- +--- +--- lldpXdot3LocPowerTable: Power Ethernet Information Table +--- +--- +lldpXdot3LocPowerTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3LocPowerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port of power ethernet + information (as a part of the LLDP 802.3 organizational + extension) on the local system known to this agent." + ::= { lldpXdot3LocalData 2 } + +lldpXdot3LocPowerEntry OBJECT-TYPE + SYNTAX LldpXdot3LocPowerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port component." + INDEX { lldpLocPortNum } + ::= { lldpXdot3LocPowerTable 1 } + +LldpXdot3LocPowerEntry ::= SEQUENCE { + lldpXdot3LocPowerPortClass LldpPowerPortClass, + lldpXdot3LocPowerMDISupported TruthValue, + lldpXdot3LocPowerMDIEnabled TruthValue, + lldpXdot3LocPowerPairControlable TruthValue, + lldpXdot3LocPowerPairs Integer32, + lldpXdot3LocPowerClass Integer32 +} + +lldpXdot3LocPowerPortClass OBJECT-TYPE + SYNTAX LldpPowerPortClass + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value that identifies the port Class of the given port + associated with the local system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3LocPowerEntry 1 } + +lldpXdot3LocPowerMDISupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the MDI power is + supported on the given port associated with the local system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3LocPowerEntry 2 } + +lldpXdot3LocPowerMDIEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to identify whether MDI power is + enabled on the given port associated with the local system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3LocPowerEntry 3 } + +lldpXdot3LocPowerPairControlable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value is derived from the value of + pethPsePortPowerPairsControlAbility object (defined in IETF + RFC 3621) and is used to indicate whether the pair selection + can be controlled on the given port associated with the + local system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3LocPowerEntry 4 } + +lldpXdot3LocPowerPairs OBJECT-TYPE + SYNTAX Integer32(1|2) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the pethPsePortPowerPairs + object (defined in IETF RFC 3621) which is associated with + the given port on the local system." + REFERENCE + "IEEE 802.1AB-2005 G.3.2" + ::= { lldpXdot3LocPowerEntry 5 } + +lldpXdot3LocPowerClass OBJECT-TYPE + SYNTAX Integer32(1|2|3|4|5) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the + pethPsePortPowerClassifications object (defined in IETF + RFC 3621) which is associated with the given port on the + local system." + REFERENCE + "IEEE 802.1AB-2005 G.3.3" + ::= { lldpXdot3LocPowerEntry 6 } + +--- +--- +--- lldpXdot3LocLinkAggTable: Link Aggregation Information Table +--- +--- +lldpXdot3LocLinkAggTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3LocLinkAggEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port of link aggregation + information (as a part of the LLDP 802.3 organizational + extension) on the local system known to this agent." + ::= { lldpXdot3LocalData 3 } + +lldpXdot3LocLinkAggEntry OBJECT-TYPE + SYNTAX LldpXdot3LocLinkAggEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Link Aggregation information about a particular port + component." + INDEX { lldpLocPortNum } + ::= { lldpXdot3LocLinkAggTable 1 } + +LldpXdot3LocLinkAggEntry ::= SEQUENCE { + lldpXdot3LocLinkAggStatus LldpLinkAggStatusMap, + lldpXdot3LocLinkAggPortId Integer32 +} + +lldpXdot3LocLinkAggStatus OBJECT-TYPE + SYNTAX LldpLinkAggStatusMap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap value contains the link aggregation capabilities + and the current aggregation status of the link." + REFERENCE + "IEEE 802.1AB-2005 G.4.1" + ::= { lldpXdot3LocLinkAggEntry 1 } + +lldpXdot3LocLinkAggPortId OBJECT-TYPE + SYNTAX Integer32(0|1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the IEEE 802.3 aggregated port + identifier, aAggPortID (IEEE 802.3-2002, 30.7.2.1.1), + derived from the ifNumber of the ifIndex for the port + component in link aggregation. + + If the port is not in link aggregation state and/or it + does not support link aggregation, this value should be set + to zero." + REFERENCE + "IEEE 802.1AB-2005 G.4.2" + ::= { lldpXdot3LocLinkAggEntry 2 } + +--- +--- +--- lldpXdot3LocMaxFrameSizeTable: Maximum Frame Size information +--- +--- +lldpXdot3LocMaxFrameSizeTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3LocMaxFrameSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port of maximum frame + size information (as a part of the LLDP 802.3 organizational + extension) on the local system known to this agent." + ::= { lldpXdot3LocalData 4 } + +lldpXdot3LocMaxFrameSizeEntry OBJECT-TYPE + SYNTAX LldpXdot3LocMaxFrameSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum Frame Size information about a particular port + component." + INDEX { lldpLocPortNum } + ::= { lldpXdot3LocMaxFrameSizeTable 1 } + +LldpXdot3LocMaxFrameSizeEntry ::= SEQUENCE { + lldpXdot3LocMaxFrameSize Integer32 +} + +lldpXdot3LocMaxFrameSize OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value indicating the maximum supported frame + size in octets on the given port of the local system." + REFERENCE + "IEEE 802.1AB-2005 G.5.1" + ::= { lldpXdot3LocMaxFrameSizeEntry 1 } + + +------------------------------------------------------------------------------ +-- IEEE 802.3 - Remote Devices Information +------------------------------------------------------------------------------ +--- +--- +--- lldpXdot3RemPortTable: Ethernet Information Table +--- +--- +lldpXdot3RemPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3RemPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Ethernet port information (as a part + of the LLDP 802.3 organizational extension) of the remote + system." + ::= { lldpXdot3RemoteData 1 } + +lldpXdot3RemPortEntry OBJECT-TYPE + SYNTAX LldpXdot3RemPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical network connection." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXdot3RemPortTable 1 } + +LldpXdot3RemPortEntry ::= SEQUENCE { + lldpXdot3RemPortAutoNegSupported TruthValue, + lldpXdot3RemPortAutoNegEnabled TruthValue, + lldpXdot3RemPortAutoNegAdvertisedCap OCTET STRING, + lldpXdot3RemPortOperMauType Integer32 +} + +lldpXdot3RemPortAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the given port + (associated with remote system) supports Auto-negotiation." + REFERENCE + "IEEE 802.1AB-2005 G.2.1" + ::= { lldpXdot3RemPortEntry 1 } + +lldpXdot3RemPortAutoNegEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether port + Auto-negotiation is enabled on the given port associated + with the remote system." + REFERENCE + "IEEE 802.1AB-2005 G.2.1" + ::= { lldpXdot3RemPortEntry 2 } + +lldpXdot3RemPortAutoNegAdvertisedCap OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value (bitmap) of the + ifMauAutoNegCapAdvertisedBits object (defined in IETF RFC + 3636) which is associated with the given port on the + remote system." + REFERENCE + "IEEE 802.1AB-2005 G.2.2" + ::= { lldpXdot3RemPortEntry 3 } + +lldpXdot3RemPortOperMauType OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value that indicates the operational MAU type + of the sending device. + + This object contains the integer value derived from the + list position of the corresponding dot3MauType as listed in + in IETF RFC 3636 (or subsequent revisions) and is equal + to the last number in the respective dot3MauType OID. + + For example, if the ifMauType object is dot3MauType1000BaseTHD + which corresponds to {dot3MauType 29}, the numerical value of + this field will be 29. For MAU types not listed in RFC 3636 + (or subsequent revisions), the value of this field shall be + set to zero." + REFERENCE + "IEEE 802.1AB-2005 G.2.3" + ::= { lldpXdot3RemPortEntry 4 } + +--- +--- +--- lldpXdot3RemPowerTable: Power Ethernet Information Table +--- +--- +lldpXdot3RemPowerTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3RemPowerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Ethernet power information (as a part + of the LLDP 802.3 organizational extension) of the remote + system." + ::= { lldpXdot3RemoteData 2 } + +lldpXdot3RemPowerEntry OBJECT-TYPE + SYNTAX LldpXdot3RemPowerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical network connection." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXdot3RemPowerTable 1 } + +LldpXdot3RemPowerEntry ::= SEQUENCE { + lldpXdot3RemPowerPortClass LldpPowerPortClass, + lldpXdot3RemPowerMDISupported TruthValue, + lldpXdot3RemPowerMDIEnabled TruthValue, + lldpXdot3RemPowerPairControlable TruthValue, + lldpXdot3RemPowerPairs Integer32, + lldpXdot3RemPowerClass Integer32 +} + +lldpXdot3RemPowerPortClass OBJECT-TYPE + SYNTAX LldpPowerPortClass + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value that identifies the port Class of the given port + associated with the remote system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3RemPowerEntry 1 } + +lldpXdot3RemPowerMDISupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to indicate whether the MDI power + is supported on the given port associated with the remote + system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3RemPowerEntry 2 } + +lldpXdot3RemPowerMDIEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value used to identify whether MDI power is + enabled on the given port associated with the remote system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3RemPowerEntry 3 } + +lldpXdot3RemPowerPairControlable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The truth value is derived from the value of + pethPsePortPowerPairsControlAbility object (defined in IETF + RFC 3621) and is used to indicate whether the pair selection + can be controlled on the given port associated with the + remote system." + REFERENCE + "IEEE 802.1AB-2005 G.3.1" + ::= { lldpXdot3RemPowerEntry 4 } + +lldpXdot3RemPowerPairs OBJECT-TYPE + SYNTAX Integer32(1|2) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the pethPsePortPowerPairs + object (defined in IETF RFC 3621) which is associated with + the given port on the remote system." + REFERENCE + "IEEE 802.1AB-2005 G.3.2" + ::= { lldpXdot3RemPowerEntry 5 } + +lldpXdot3RemPowerClass OBJECT-TYPE + SYNTAX Integer32(1|2|3|4|5) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the + pethPsePortPowerClassifications object (defined in IETF + RFC 3621) which is associated with the given port on the + remote system." + REFERENCE + "IEEE 802.1AB-2005 G.3.3" + ::= { lldpXdot3RemPowerEntry 6 } + +--- +--- +--- lldpXdot3RemLinkAggTable: Link Aggregation Information Table +--- +--- +lldpXdot3RemLinkAggTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3RemLinkAggEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains port link aggregation information + (as a part of the LLDP 802.3 organizational extension) + of the remote system." + ::= { lldpXdot3RemoteData 3 } + +lldpXdot3RemLinkAggEntry OBJECT-TYPE + SYNTAX LldpXdot3RemLinkAggEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Link Aggregation information about remote system's port + component." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXdot3RemLinkAggTable 1 } + +LldpXdot3RemLinkAggEntry ::= SEQUENCE { + lldpXdot3RemLinkAggStatus LldpLinkAggStatusMap, + lldpXdot3RemLinkAggPortId Integer32 +} + +lldpXdot3RemLinkAggStatus OBJECT-TYPE + SYNTAX LldpLinkAggStatusMap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap value contains the link aggregation capabilities + and the current aggregation status of the link." + REFERENCE + "IEEE 802.1AB-2005 G.4.1" + ::= { lldpXdot3RemLinkAggEntry 1 } + +lldpXdot3RemLinkAggPortId OBJECT-TYPE + SYNTAX Integer32(0|1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the IEEE 802.3 aggregated port + identifier, aAggPortID (IEEE 802.3-2002, 30.7.2.1.1), + derived from the ifNumber of the ifIndex for the port + component associated with the remote system. + + If the remote port is not in link aggregation state and/or + it does not support link aggregation, this value should be + zero." + REFERENCE + "IEEE 802.1AB-2005 G.4.2" + ::= { lldpXdot3RemLinkAggEntry 2 } + + +--- +--- +--- lldpXdot3RemMaxFrameSizeTable: Maximum Frame Size information +--- +--- +lldpXdot3RemMaxFrameSizeTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXdot3RemMaxFrameSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port of maximum frame + size information (as a part of the LLDP 802.3 organizational + extension) of the remote system." + ::= { lldpXdot3RemoteData 4 } + +lldpXdot3RemMaxFrameSizeEntry OBJECT-TYPE + SYNTAX LldpXdot3RemMaxFrameSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum Frame Size information about a particular port + component." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXdot3RemMaxFrameSizeTable 1 } + +LldpXdot3RemMaxFrameSizeEntry ::= SEQUENCE { + lldpXdot3RemMaxFrameSize Integer32 +} + +lldpXdot3RemMaxFrameSize OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value indicating the maximum supported frame + size in octets on the port component associated with the + remote system." + REFERENCE + "IEEE 802.1AB-2005 G.5.1" + ::= { lldpXdot3RemMaxFrameSizeEntry 1 } + + +------------------------------------------------------------------------------ +-- Conformance Information +------------------------------------------------------------------------------ +lldpXdot3Conformance OBJECT IDENTIFIER ::= { lldpXdot3MIB 2 } +lldpXdot3Compliances OBJECT IDENTIFIER ::= { lldpXdot3Conformance 1 } +lldpXdot3Groups OBJECT IDENTIFIER ::= { lldpXdot3Conformance 2 } + +-- compliance statements + +lldpXdot3Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the LLDP 802.3 organizational extension MIB." + MODULE -- this module + MANDATORY-GROUPS { lldpXdot3ConfigGroup, + lldpXdot3LocSysGroup, + lldpXdot3RemSysGroup + } + ::= { lldpXdot3Compliances 1 } + +-- MIB groupings + +lldpXdot3ConfigGroup OBJECT-GROUP + OBJECTS { + lldpXdot3PortConfigTLVsTxEnable + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + LLDP 802.3 organizational extension implementation behavior. + + This group is mandatory for agents which implement the + LLDP 802.3 organizational extension." + ::= { lldpXdot3Groups 1 } + +lldpXdot3LocSysGroup OBJECT-GROUP + OBJECTS { + lldpXdot3LocPortAutoNegSupported, + lldpXdot3LocPortAutoNegEnabled, + lldpXdot3LocPortAutoNegAdvertisedCap, + lldpXdot3LocPortOperMauType, + lldpXdot3LocPowerPortClass, + lldpXdot3LocPowerMDISupported, + lldpXdot3LocPowerMDIEnabled, + lldpXdot3LocPowerPairControlable, + lldpXdot3LocPowerPairs, + lldpXdot3LocPowerClass, + lldpXdot3LocLinkAggStatus, + lldpXdot3LocLinkAggPortId, + lldpXdot3LocMaxFrameSize + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + 802.3 organizational extension Local Device Information. + + This group is mandatory for agents which implement the + LLDP 802.3 organizational extension in the TX mode." + ::= { lldpXdot3Groups 2 } + +lldpXdot3RemSysGroup OBJECT-GROUP + OBJECTS { + lldpXdot3RemPortAutoNegSupported, + lldpXdot3RemPortAutoNegEnabled, + lldpXdot3RemPortAutoNegAdvertisedCap, + lldpXdot3RemPortOperMauType, + lldpXdot3RemPowerPortClass, + lldpXdot3RemPowerMDISupported, + lldpXdot3RemPowerMDIEnabled, + lldpXdot3RemPowerPairControlable, + lldpXdot3RemPowerPairs, + lldpXdot3RemPowerClass, + lldpXdot3RemLinkAggStatus, + lldpXdot3RemLinkAggPortId, + lldpXdot3RemMaxFrameSize + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + 802.3 organizational extension Local Device Information. + + This group is mandatory for agents which implement the + LLDP 802.3 organizational extension in the RX mode." + ::= { lldpXdot3Groups 3 } + +END diff --git a/mibs/lldp-mibs/LLDP-EXT-MED-MIB.mib.txt b/mibs/lldp-mibs/LLDP-EXT-MED-MIB.mib.txt new file mode 100644 index 0000000..2bea15b --- /dev/null +++ b/mibs/lldp-mibs/LLDP-EXT-MED-MIB.mib.txt @@ -0,0 +1,1636 @@ +-- ***************************************************************** +-- LLDP-MED-MIB.my: LLDP MED MIB file +-- +-- Copyright (c) 2009 by cisco Systems, Inc. +-- All rights reserved. +-- +-- ***************************************************************** +LLDP-EXT-MED-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32, Unsigned32, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + lldpExtensions, lldpLocPortNum, + lldpRemTimeMark, lldpRemLocalPortNum, lldpRemIndex, + lldpPortConfigEntry, lldpRemChassisIdSubtype, lldpRemChassisId + FROM LLDP-MIB + Dscp + FROM DIFFSERV-DSCP-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +lldpXMedMIB MODULE-IDENTITY + LAST-UPDATED "200507280000Z" -- July 28th, 2005 + ORGANIZATION "TIA TR41.4 Working Group" + CONTACT-INFO +" WG-URL: http://www.tiaonline.org/standards/sfg/scope.cfm#TR-41.4 + WG-EMail: tr41@tiacomm.org + Contact: Chair, TIA TR-41 + Postal: Telecommunications Industry Association + 2500 Wilson Blvd., Suite 300 + Arlington, VA 22201 USA + Tel: (703) 907-7700 + E-mail: tr41@tiacomm.org" + DESCRIPTION + "The LLDP Management Information Base extension module for + TIA-TR41.4 media endpoint discovery information. + + In order to assure the uniqueness of the LLDP-MIB, + lldpXMedMIB is branched from lldpExtensions using the TIA OUI + value as the node. An OUI/'company_id' is a 24 bit globally + unique assigned number referenced by various standards. + + Copyright (C) TIA (2005). This version of this MIB module + is published as Section 13.3 of ANSI/TIA-1057. + + See the standard itself for full legal notices." + REVISION "200507280000Z" -- July 28th, 2005 + DESCRIPTION + "Published as part of ANSI/TIA-1057." + -- OUI for TIA is 4795 (00-12-BB) + ::= { lldpExtensions 4795 } + +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- +-- LLDP-MED Information +-- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + +lldpXMedNotifications OBJECT IDENTIFIER ::= { lldpXMedMIB 0 } +lldpXMedObjects OBJECT IDENTIFIER ::= { lldpXMedMIB 1 } + +-- LLDP MED Extension Notifications +-- Transmission of LLDP MED Extension Notification is controlled by the +-- lldpNotificationInterval object in the LLDP MIB defined in +-- IEEE 802.1AB-2005 + +lldpXMedTopologyChangeDetected NOTIFICATION-TYPE + OBJECTS { lldpRemChassisIdSubtype, + lldpRemChassisId, + lldpXMedRemDeviceClass + } + STATUS current +DESCRIPTION + "A notification generated by the local device sensing + a change in the topology that indicates that a new remote + device attached to a local port, or a remote device disconnected + or moved from one port to another." + ::= { lldpXMedNotifications 1 } + +-- LLDP MED extension MIB groups + +lldpXMedConfig OBJECT IDENTIFIER ::= { lldpXMedObjects 1 } +lldpXMedLocalData OBJECT IDENTIFIER ::= { lldpXMedObjects 2 } +lldpXMedRemoteData OBJECT IDENTIFIER ::= { lldpXMedObjects 3 } + +-- textual conventions + +LldpXMedDeviceClass ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Device Class to which the device is a member. + + A value of notDefined(0) indicates that the device + has capabilities not covered by any of the LLDP-MED classes. + + A value of endpointClass1(1) indicates that the device + has endpoint class 1 capabilities. + + A value of endpointClass2(2) indicates that the device + has endpoint class 2 capabilities. + + A value of endpointClass3(3) indicates that the device + has endpoint class 3 capabilities. + + A value of networkConnectivity(4) indicates that the device + has network connectivity device capabilities. + " + + SYNTAX INTEGER { + notDefined(0), + endpointClass1(1), + endpointClass2(2), + endpointClass3(3), + networkConnectivity(4) + } + +-- LLDP-MED Capabilities TC + +LldpXMedCapabilities ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Bitmap that includes the MED organizationally defined set of LLDP + TLVs the device is capable of and whose transmission is allowed on + the local LLDP agent by network management. + + Each bit in the bitmap corresponds to an LLDP-MED subtype associated + with a specific TIA TR41.4 MED TLV. + + Having the bit 'capabilities(0)' set indicates that the LLDP + agent refers to the Capabilities TLVs. + + Having the bit 'networkPolicy(1)' set indicates that the LLDP + agent refers to the Network Policy TLVs. + + Having the bit 'location(2)' set indicates that + the LLDP agent refers to the Emergency Communications + System Location TLVs. + + Having the bit 'extendedPSE(3)' set indicates that + the LLDP agent refers to the Extended PoE TLVs with PSE + capabilities. + + Having the bit 'extendedPD(4)' set indicates that + the LLDP agent refers to the Extended PoE TLVs with PD + capabilities. + + Having the bit 'inventory(5)' set indicates that + the LLDP agent refers to the Hardware Revision, Firmware + Revision, Software Revision, Serial Number, Manufacturer Name, + Model Name, and Asset ID TLVs." + + SYNTAX BITS { + capabilities(0), + networkPolicy(1), + location(2), + extendedPSE(3), + extendedPD(4), + inventory(5) + } + +-- Location Subtype Textual Convention + +LocationSubtype ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The location subtype advertised by the remote endpoint. + + A value coordinateBased(2) indicates that the location subtype + advertised by the endpoint is defined to use the relevant sub- + fields of the DHCP option for Coordinate LCI as specified in + ANSI/TIA-1057, Section 10.2.4.3.1. + + A value civicAddress(3) indicates that the location subtype + advertised by the endpoint is defined to use the relevant sub- + fields of the DHCP option for Civic Address as specified in + ANSI/TIA-1057, Section 10.2.4.3.2. + + A value elin(4) indicates that the location subtype + advertised by the endpoint is defined to use the Emergency + Location Information Number (ELIN) as specified in + ANSI/TIA-1057, Section 10.2.4.3.3." + SYNTAX INTEGER { + unknown(1), + coordinateBased(2), + civicAddress(3), + elin(4) + } + +-- Policy Application Type Textual Convention + +PolicyAppType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The media type that defines the primary function of the + application for the policy advertised by an endpoint. + + Having the bit voice(1) set indicates that the media type defining + a primary function of the application for the policy advertised on + the local port is voice. + + Having the bit voiceSignaling(3) set indicates that the media type + defining a primary function of the application for the policy + advertised on the local port is voice signaling. + + Having the bit guestVoice(4) set indicates that the media type + Defining a primary function of the application for the policy + advertised on the local port is guest voice. + + Having the bit guestVoiceSignaling(5) set indicates that the media + type defining a primary function of the application for the policy + advertised on the local port is guest voice signaling. + + Having the bit softPhoneVoice(6) set indicates that the media type + Defining a primary function of the application for the policy + advertised on the local port is softphone voice. + + Having the bit videoConferencing(7) set indicates that the media + type defining a primary function of the application for the policy + advertised on the local port is voice. + + Having the bit streamingVideo(8) set indicates that the media type + defining a primary function of the application for the policy + advertised on the local port is streaming video. + + Having the bit videoSignaling(2) set indicates that the media type + defining a primary function of the application for the policy + advertised on the local port is video signaling." + SYNTAX BITS { + unknown(0), + voice(1), + voiceSignaling(2), + guestVoice(3), + guestVoiceSignaling(4), + softPhoneVoice(5), + videoconferencing(6), + streamingVideo(7), + videoSignaling(8) + } + + +------------------------------------------------------------------------------ +-- MED - Configuration +------------------------------------------------------------------------------ + +lldpXMedLocDeviceClass OBJECT-TYPE + SYNTAX LldpXMedDeviceClass + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local Device Class." + REFERENCE + " ANSI/TIA-1057, Section 10.2.2.2" + ::= { lldpXMedConfig 1 } + +lldpXMedPortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedPortConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that controls selection of LLDP TLVs to be transmitted + on individual ports." + ::= { lldpXMedConfig 2 } + +lldpXMedPortConfigEntry OBJECT-TYPE + SYNTAX LldpXMedPortConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that controls the + transmission of the MED organizationally defined TLVs on + LLDP transmission capable ports. + + This configuration object augments the lldpPortConfigEntry of + the LLDP-MIB, therefore it is only present along with the port + configuration defined by the associated lldpPortConfigEntry + entry. + + Each active lldpXMedPortConfigEntry must be stored and + retrieved from non-volatile storage (along with the + corresponding lldpPortConfigEntry) after a re-initialization + of the management system." + AUGMENTS { lldpPortConfigEntry } + ::= { lldpXMedPortConfigTable 1 } + +LldpXMedPortConfigEntry ::= SEQUENCE { + lldpXMedPortCapSupported LldpXMedCapabilities, + lldpXMedPortConfigTLVsTxEnable LldpXMedCapabilities, + lldpXMedPortConfigNotifEnable TruthValue +} + +lldpXMedPortCapSupported OBJECT-TYPE + SYNTAX LldpXMedCapabilities + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap includes the MED organizationally defined set of LLDP + TLVs whose transmission is possible for the respective port + on the LLDP agent of the device. Each bit in the bitmap corresponds + to an LLDP-MED subtype associated with a specific TIA TR41.4 MED + optional TLV. If the bit is set, the agent supports the + corresponding TLV." + REFERENCE + "ANSI/TIA-1057, Section 10.2.2.3" + ::= { lldpXMedPortConfigEntry 1 } + +lldpXMedPortConfigTLVsTxEnable OBJECT-TYPE + SYNTAX LldpXMedCapabilities + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpXMedPortConfigTLVsTxEnable, defined as a bitmap, + includes the MED organizationally defined set of LLDP + TLVs whose transmission is allowed on the local LLDP agent by + the network management. Each bit in the bitmap corresponds + to an LLDP-MED subtype associated with a specific TIA TR41.4 MED + optional TLV. If the bit is set, the agent will send the + corresponding TLV if the respective capability is supported per + port. + + Setting a bit with in this object for a non-supported capability + shall have no functional effect and will result in an inconsistent + value error returned to the management application. + + There are other rules and restrictions that prevent arbitrary + combinations of TLVs to be enabled on LLDP-MED devices according to + the device classes. These rules are defined in Section 10.2.1, + Tables 5 - 9 of ANSI/TIA-1057. In case a management application + attempts to set this object to a value that does not follow the rules, + the set operation shall have and will result in an inconsistent + value error returned to the management application. + + Setting this object to an empty set is valid and effectively + disables LLDP-MED on a per-port basis by disabling transmission of + all MED organizational TLVs. In this case the remote tables objects + in the LLDP-MED MIB corresponding to the respective port will not + be populated. + + The default value for lldpXMedPortConfigTLVsTxEnable object + is an empty set, which means no enumerated values are set. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "ANSI/TIA-1057, Section 10.2.2.3" + DEFVAL { { } } + ::= { lldpXMedPortConfigEntry 2 } + +lldpXMedPortConfigNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value of 'true(1)' enables sending the topology change + traps on this port. + A value of 'false(2)' disables sending the topology change + traps on this port." + REFERENCE + " ANSI/TIA-1057, Section 12.3" + DEFVAL { false } + ::= { lldpXMedPortConfigEntry 3 } + +lldpXMedFastStartRepeatCount OBJECT-TYPE + SYNTAX Unsigned32 (1..10) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of times the fast start LLDPDU are being sent during the + activation of the fast start mechanism defined by LLDP-MED." + REFERENCE + " ANSI/TIA-1057, Section 11.2.1" + DEFVAL { 3 } + ::= { lldpXMedConfig 3 } + +------------------------------------------------------------------------------ +-- LLDP-MED - Local Device Information +------------------------------------------------------------------------------ +--- +--- lldpXMedLocMediaPolicyTable: Local Media Policy +--- Information Table +--- +--- +lldpXMedLocMediaPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedLocMediaPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per policy type per port + of media policy information (as a part of the MED + organizational extension) on the local system known + to this agent." + ::= { lldpXMedLocalData 1 } + +lldpXMedLocMediaPolicyEntry OBJECT-TYPE + SYNTAX LldpXMedLocMediaPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular policy on a specific + port component." + INDEX { lldpLocPortNum, lldpXMedLocMediaPolicyAppType } + ::= { lldpXMedLocMediaPolicyTable 1 } + +LldpXMedLocMediaPolicyEntry ::= SEQUENCE { + lldpXMedLocMediaPolicyAppType PolicyAppType, + lldpXMedLocMediaPolicyVlanID Integer32, + lldpXMedLocMediaPolicyPriority Integer32, + lldpXMedLocMediaPolicyDscp Dscp, + lldpXMedLocMediaPolicyUnknown TruthValue, + lldpXMedLocMediaPolicyTagged TruthValue +} + +lldpXMedLocMediaPolicyAppType OBJECT-TYPE + SYNTAX PolicyAppType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The media type that defines the primary function of the + application for the policy advertised by an endpoint." + REFERENCE + "ANSI/TIA-1057, Section 10.2.3.1" + ::= { lldpXMedLocMediaPolicyEntry 1 } + +lldpXMedLocMediaPolicyVlanID OBJECT-TYPE + SYNTAX Integer32 (0|1..4094|4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An extension of the VLAN Identifier for the port, + as defined in IEEE 802.1P-1998. + + A value of 1 through 4094 is used to define a valid PVID. + + A value of 0 shall be used if the device is using priority tagged + frames, meaning that only the 802.1p priority level is significant + and the default VID of the ingress port is being used instead. + + A value of 4095 is reserved for implementation use." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.5" + ::= { lldpXMedLocMediaPolicyEntry 2 } + +lldpXMedLocMediaPolicyPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the 802.1p priority + which is associated with the given port on the + local system." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.6 " + ::= { lldpXMedLocMediaPolicyEntry 3 } + +lldpXMedLocMediaPolicyDscp OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the Differentiated Service + Code Point (DSCP) as defined in IETF RFC 2474 and RFC 2475 + which is associated with the given port on the local system." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.7" + ::= { lldpXMedLocMediaPolicyEntry 4 } + +lldpXMedLocMediaPolicyUnknown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value of 'true' indicates that the + network policy for the specified application type is + currently unknown. In this case, the VLAN ID, the + layer 2 priority and the DSCP value fields are ignored. + A value of 'false' indicates that this network policy + is defined " + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.2" + ::= { lldpXMedLocMediaPolicyEntry 5 } + +lldpXMedLocMediaPolicyTagged OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value of 'true' indicates that the application is using a + tagged VLAN. + A value of 'false' indicates that for the specific application + the device either is using an untagged VLAN or does not + support port based VLAN operation. In this case, both the + VLAN ID and the Layer 2 priority fields are ignored and + only the DSCP value has relevance " + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.3" + ::= { lldpXMedLocMediaPolicyEntry 6 } + +--- Inventory Information +--- Local Inventory Information transmitted by an endpoint + +lldpXMedLocHardwareRev OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific hardware revision string + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.1" + ::= { lldpXMedLocalData 2 } + +lldpXMedLocFirmwareRev OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific firmware revision string + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.2" + ::= { lldpXMedLocalData 3 } + +lldpXMedLocSoftwareRev OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific software revision string + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.3" + ::= { lldpXMedLocalData 4 } + +lldpXMedLocSerialNum OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific serial number + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.4" + ::= { lldpXMedLocalData 5 } + +lldpXMedLocMfgName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific manufacturer name + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.5" + ::= { lldpXMedLocalData 6 } + +lldpXMedLocModelName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific model name + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.6" + ::= { lldpXMedLocalData 7 } + +lldpXMedLocAssetID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific asset tracking identifier + as advertised by the endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.7" + ::= { lldpXMedLocalData 8 } + +--- Location Information +--- Local Location Information transmitted by an endpoint +--- lldpXMedLocLocationTable - Location Information +--- + +lldpXMedLocLocationTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedLocLocationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Location information as advertised + by the local system. + + The information may be configured per port by a Location + Information Server (LIS) or other management application. + + Multiple Location TLVs of different subtypes may be transmitted + in the same PDU. + + The information in this table MUST be stored in non-volatile-memory + and persist over restart/reboot sequences." + ::= { lldpXMedLocalData 9 } + +lldpXMedLocLocationEntry OBJECT-TYPE + SYNTAX LldpXMedLocLocationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about Location information for the local device." + INDEX { lldpLocPortNum, lldpXMedLocLocationSubtype} + ::= { lldpXMedLocLocationTable 1 } + +LldpXMedLocLocationEntry ::= SEQUENCE { + lldpXMedLocLocationSubtype LocationSubtype, + lldpXMedLocLocationInfo OCTET STRING + } + +lldpXMedLocLocationSubtype OBJECT-TYPE + SYNTAX LocationSubtype + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The location subtype advertised by the local device." + REFERENCE + "ANSI/TIA-1057, Section 10.2.4.2" + ::= { lldpXMedLocLocationEntry 1 } + +lldpXMedLocLocationInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..256)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The location information. Parsing of this information is + dependent upon the location subtype, as defined by the value of the + lldpXMedLocLocationSubtype object. " + REFERENCE + "ANSI/TIA-1057, Section 10.2.4.3" + DEFVAL { "" } + ::= { lldpXMedLocLocationEntry 2 } + +--- Extended Power over Ethernet objects +--- + +lldpXMedLocXPoEDeviceType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + pseDevice(2), + pdDevice(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of Power-via-MDI (Power over Ethernet) advertised + by the local device. + + A value pseDevice(2) indicates that the device is advertised as a + Power Sourcing Entity (PSE). + + A value pdDevice(3) indicates that the device is advertised as a + Powered Device (PD). + + A value of none(4) indicates that the device does not support PoE." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.1" + ::= { lldpXMedLocalData 10 } + +--- Extended PoE - PSE objects + +--- PSE Port Table + +lldpXMedLocXPoEPSEPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedLocXPoEPSEPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per port of PSE PoE + information on the local system known to this agent." + ::= { lldpXMedLocalData 11 } + +lldpXMedLocXPoEPSEPortEntry OBJECT-TYPE + SYNTAX LldpXMedLocXPoEPSEPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port PoE information." + INDEX { lldpLocPortNum } + ::= { lldpXMedLocXPoEPSEPortTable 1 } + +LldpXMedLocXPoEPSEPortEntry ::= SEQUENCE { + lldpXMedLocXPoEPSEPortPowerAv Gauge32, + lldpXMedLocXPoEPSEPortPDPriority INTEGER +} + +lldpXMedLocXPoEPSEPortPowerAv OBJECT-TYPE + SYNTAX Gauge32 (0..1023) + UNITS "tenth of watt" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the power available from the + PSE via this port expressed in units of 0.1 watts." + REFERENCE + " ANSI/TIA-1057, Section 10.2.5.4 " + ::= { lldpXMedLocXPoEPSEPortEntry 1 } + +lldpXMedLocXPoEPSEPortPDPriority OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + critical(2), + high(3), + low(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the PD power priority that is being advertised on this + PSE port. + + If both locally configure priority and + ldpXMedRemXPoEPDPowerPriority are available on this port, it is + a matter of local policy which one takes precedence. This object + reflects the active value on this port. + + If the priority is not configured or known by the PD, the value + unknown(1) will be returned. + + A value critical(2) indicates that the device advertises its power + Priority as critical, as per RFC 3621. + + A value high(3) indicates that the device advertises its power + Priority as high, as per RFC 3621. + + A value low(4) indicates that the device advertises its power + Priority as low, as per RFC 3621." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.3" + ::= { lldpXMedLocXPoEPSEPortEntry 2 } + + + +lldpXMedLocXPoEPSEPowerSource OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + primary(2), + backup(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of PSE Power Source advertised + by the local device. + + A value primary(2) indicates that the device advertises its power + source as primary. + + A value backup(3) indicates that the device advertises its power + Source as backup." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.2" + ::= { lldpXMedLocalData 12 } + +--- Extended PoE - PD objects + +lldpXMedLocXPoEPDPowerReq OBJECT-TYPE + SYNTAX Gauge32 (0..1023) + UNITS "tenth of watt" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the power required by a + PD expressed in units of 0.1 watts." + REFERENCE + " ANSI/TIA-1057, Section 10.2.4.3 " + ::= { lldpXMedLocalData 13 } + +lldpXMedLocXPoEPDPowerSource OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + fromPSE(2), + local(3), + localAndPSE(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of Power Source advertised as being used + by the local device. + + A value fromPSE(2) indicates that the device advertises its power + source as received from a PSE. + + A value local(3) indicates that the device advertises its power + source as local. + + A value localAndPSE(4) indicates that the device advertises its + power source as using both local and PSE power." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.2" + ::= { lldpXMedLocalData 14 } + +lldpXMedLocXPoEPDPowerPriority OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + critical(2), + high(3), + low(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the priority advertised as being required by this PD. + + A value critical(2) indicates that the device advertises its power + Priority as critical, as per RFC 3621. + + A value high(3) indicates that the device advertises its power + Priority as high, as per RFC 3621. + + A value low(4) indicates that the device advertises its power + Priority as low, as per RFC 3621." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.3" + ::= { lldpXMedLocalData 15 } + +------------------------------------------------------------------------------ +-- LLDP-MED - Remote Devices Information +------------------------------------------------------------------------------ + +-- LLdpXMedRemCapabilitiesTable +-- this table is read by a manager to determine what capabilities +-- exists and are enabled on the remote system connected to the port + +-- The information in this table is based upon the information advertised +-- by the remote device and received on each port in the capabilities TLV + +lldpXMedRemCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that displays LLDP-MED capabilities of remote devices + connected to individual ports." + ::= { lldpXMedRemoteData 1 } + +lldpXMedRemCapabilitiesEntry OBJECT-TYPE + SYNTAX LldpXMedRemCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP-MED capabilities of remote devices connected to the device + ports and communicating via LLDP-MED. + + The remote tables in the LLDP-MED MIB excepting this table may be + sparsely populate. An entry in one of these table is meaningful + and shall be populated by the agent only if the corresponding bits + for the respective function are set in the objects in this table. " + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXMedRemCapabilitiesTable 1 } + +LldpXMedRemCapabilitiesEntry ::= SEQUENCE { + lldpXMedRemCapSupported LldpXMedCapabilities, + lldpXMedRemCapCurrent LldpXMedCapabilities, + lldpXMedRemDeviceClass LldpXMedDeviceClass +} + +lldpXMedRemCapSupported OBJECT-TYPE + SYNTAX LldpXMedCapabilities + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap includes the MED organizationally defined set of LLDP + TLVs whose transmission is possible on the LLDP agent of the remote + device connected to this port. Each bit in the bitmap corresponds + to an LLDP-MED subtype associated with a specific TIA TR41.4 MED + optional TLV. If the bit is set, the agent has the capability + to support the corresponding TLV." + REFERENCE + "ANSI/TIA-1057, Sections 10.2.2.1" + ::= { lldpXMedRemCapabilitiesEntry 1 } + +lldpXMedRemCapCurrent OBJECT-TYPE + SYNTAX LldpXMedCapabilities + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap includes the MED organizationally defined set of LLDP + TLVs whose transmission is possible on the LLDP agent of the remote + device connected to this port. Each bit in the bitmap corresponds + to an LLDP-MED subtype associated with a specific TIA TR41.4 MED + optional TLV. If the bit is set, the agent currently supports the + corresponding TLV." + REFERENCE + "ANSI/TIA-1057, Sections 10.2.2.1" + ::= { lldpXMedRemCapabilitiesEntry 2 } + +lldpXMedRemDeviceClass OBJECT-TYPE + SYNTAX LldpXMedDeviceClass + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Device Class as advertised by the device remotely connected to the + port." + REFERENCE + " ANSI/TIA-1057, Section 10.2.2.2" + ::= { lldpXMedRemCapabilitiesEntry 3 } + +--- +--- +--- lldpXMedRemMediaPolicyTable: Media Policy Table +--- +--- +lldpXMedRemMediaPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemMediaPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains media policy information as advertised + by the remote system. + + This table may be sparsely populated. Entries in this table are + relevant only if the networkPolicy(0) bits in the + lldpXMedRemCapSupported and lldpXMedRemCapCurrent objects of the + corresponding ports are set." + ::= { lldpXMedRemoteData 2 } + +lldpXMedRemMediaPolicyEntry OBJECT-TYPE + SYNTAX LldpXMedRemMediaPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the per port per policy type policy + information for a particular physical network connection." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpXMedRemMediaPolicyAppType } + ::= { lldpXMedRemMediaPolicyTable 1 } + + +LldpXMedRemMediaPolicyEntry ::= SEQUENCE { + lldpXMedRemMediaPolicyAppType PolicyAppType, + lldpXMedRemMediaPolicyVlanID Integer32, + lldpXMedRemMediaPolicyPriority Integer32, + lldpXMedRemMediaPolicyDscp Dscp, + lldpXMedRemMediaPolicyUnknown TruthValue, + lldpXMedRemMediaPolicyTagged TruthValue +} + +lldpXMedRemMediaPolicyAppType OBJECT-TYPE + SYNTAX PolicyAppType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The media type that defines the primary function of the + application for the policy advertised by the endpoint connected + remotely to this port." + REFERENCE + "ANSI/TIA-1057, Section 10.2.3.1" + ::= { lldpXMedRemMediaPolicyEntry 1 } + +lldpXMedRemMediaPolicyVlanID OBJECT-TYPE + SYNTAX Integer32 (0|1..4094|4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An extension of the VLAN Identifier for the remote system + connected to this port, as defined in IEEE 802.1P-1998. + + A value of 1 through 4094 is used to define a valid PVID. + + A value of 0 shall be used if the device is using priority tagged + frames, meaning that only the 802.1p priority level is significant + and the default VID of the ingress port is being used instead. + + A value of 4095 is reserved for implementation use." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.5" + ::= { lldpXMedRemMediaPolicyEntry 2 } + +lldpXMedRemMediaPolicyPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the 802.1p priority + which is associated with the remote system connected at + given port." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.6" + ::= { lldpXMedRemMediaPolicyEntry 3 } + +lldpXMedRemMediaPolicyDscp OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the Differentiated Service + Code Point (DSCP) as defined in IETF RFC 2474 and RFC 2475 + which is associated with remote system connected at the port." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.7" + ::= { lldpXMedRemMediaPolicyEntry 4 } + +lldpXMedRemMediaPolicyUnknown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value of 'true' indicates that the + network policy for the specified application type is + currently unknown. In this case, the VLAN ID, the + layer 2 priority and the DSCP value fields are ignored. + A value of 'false' indicates that this network policy + is defined." + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.2" + ::= { lldpXMedRemMediaPolicyEntry 5 } + +lldpXMedRemMediaPolicyTagged OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value of 'true' indicates that the application is using a + tagged VLAN. + A value of 'false' indicates that for the specific application + the device either is using an untagged VLAN or does not + support port based VLAN operation. In this case, both the + VLAN ID and the Layer 2 priority fields are ignored and + only the DSCP value has relevance " + REFERENCE + " ANSI/TIA-1057, Section 10.2.3.3" + ::= { lldpXMedRemMediaPolicyEntry 6 } + +--- lldpXMedRemInventoryTable - Remote Inventory Information +--- + +lldpXMedRemInventoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains inventory information as advertised + by the remote system. + + This table may be sparsely populated. Entries in this table are + relevant only if the inventory(2) bits in the + lldpXMedRemCapSupported and lldpXMedRemCapCurrent objects of the + corresponding ports are set " + ::= { lldpXMedRemoteData 3 } + +lldpXMedRemInventoryEntry OBJECT-TYPE + SYNTAX LldpXMedRemInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about inventory information for the remote devices + connected to the ports." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXMedRemInventoryTable 1 } + +LldpXMedRemInventoryEntry ::= SEQUENCE { + lldpXMedRemHardwareRev SnmpAdminString, + lldpXMedRemFirmwareRev SnmpAdminString, + lldpXMedRemSoftwareRev SnmpAdminString, + lldpXMedRemSerialNum SnmpAdminString, + lldpXMedRemMfgName SnmpAdminString, + lldpXMedRemModelName SnmpAdminString, + lldpXMedRemAssetID SnmpAdminString + } + +lldpXMedRemHardwareRev OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific hardware revision string + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.1" + ::= { lldpXMedRemInventoryEntry 1 } + +lldpXMedRemFirmwareRev OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific firmware revision string + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.2" + ::= { lldpXMedRemInventoryEntry 2 } + +lldpXMedRemSoftwareRev OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific software revision string + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.3" + ::= { lldpXMedRemInventoryEntry 3 } + +lldpXMedRemSerialNum OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific serial number + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.4" + ::= { lldpXMedRemInventoryEntry 4 } + +lldpXMedRemMfgName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific manufacturer name + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.5" + ::= { lldpXMedRemInventoryEntry 5 } + +lldpXMedRemModelName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific model name + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.6" + ::= { lldpXMedRemInventoryEntry 6 } + +lldpXMedRemAssetID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific asset tracking identifier + as advertised by the remote endpoint." + REFERENCE + " ANSI/TIA-1057, Section 10.2.6.7" + ::= { lldpXMedRemInventoryEntry 7 } + +--- lldpXMedRemLocationTable - Remote Location Information +--- + +lldpXMedRemLocationTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemLocationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Location information as advertised + by the remote system. + + This table may be sparsely populated. Entries in this table are + relevant only if the Location(3) bits in the + lldpXMedRemCapSupported and lldpXMedRemCapCurrent objects of the + corresponding ports are set " + ::= { lldpXMedRemoteData 4 } + +lldpXMedRemLocationEntry OBJECT-TYPE + SYNTAX LldpXMedRemLocationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about Location information for the remote devices + connected to the ports." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpXMedRemLocationSubtype} + ::= { lldpXMedRemLocationTable 1 } + +LldpXMedRemLocationEntry ::= SEQUENCE { + lldpXMedRemLocationSubtype LocationSubtype, + lldpXMedRemLocationInfo OCTET STRING + } + +lldpXMedRemLocationSubtype OBJECT-TYPE + SYNTAX LocationSubtype + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The location subtype advertised by the remote endpoint." + REFERENCE + "ANSI/TIA-1057, Section 10.2.4.2 " + ::= { lldpXMedRemLocationEntry 1 } + +lldpXMedRemLocationInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The location information advertised by the remote endpoint. + Parsing of this information is dependent upon the location + subtype, as defined by the value of the corresponding + lldpXMedRemLocationSubType object. " + REFERENCE + "ANSI/TIA-1057, Section 10.2.4.3 " + ::= { lldpXMedRemLocationEntry 2 } + +--- lldpXMedRemXPoETable - Information about Remote PoE Device Type +--- + +lldpXMedRemXPoETable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemXPoEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the PoE device type + as advertised by the remote system. + + This table is densely populated." + ::= { lldpXMedRemoteData 5 } + +lldpXMedRemXPoEEntry OBJECT-TYPE + SYNTAX LldpXMedRemXPoEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about PoE type of the remote devices + connected to the ports." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXMedRemXPoETable 1 } + +LldpXMedRemXPoEEntry ::= SEQUENCE { + lldpXMedRemXPoEDeviceType INTEGER + } + +lldpXMedRemXPoEDeviceType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + pseDevice(2), + pdDevice(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of Power-via-MDI (Power over Ethernet) advertised + by the remote device. + + A value pseDevice(2) indicates that the device is advertised as a + Power Sourcing Entity (PSE). + + A value pdDevice(3) indicates that the device is advertised as a + Powered Device (PD). + + A value none(4) indicates that the device does not support PoE." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.1" + ::= { lldpXMedRemXPoEEntry 1 } + +--- lldpXMedRemXPoEPDTable - Extended PoE PSE Information from the remote device +--- + +lldpXMedRemXPoEPSETable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemXPoEPSEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains extended PoE information as advertised + by the remote devices of PSE type. + + This table may be sparsely populated. Entries in this table are + relevant only if the extendedPSE(4) bits in the + lldpXMedRemCapSupported and lldpXMedRemCapCurrent objects of the + corresponding ports are set " + ::= { lldpXMedRemoteData 6 } + +lldpXMedRemXPoEPSEEntry OBJECT-TYPE + SYNTAX LldpXMedRemXPoEPSEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about Extended PoE PSE information for + the remote devices connected to the ports." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXMedRemXPoEPSETable 1 } + +LldpXMedRemXPoEPSEEntry ::= SEQUENCE { + lldpXMedRemXPoEPSEPowerAv Gauge32, + lldpXMedRemXPoEPSEPowerSource INTEGER, + lldpXMedRemXPoEPSEPowerPriority INTEGER + } + + +lldpXMedRemXPoEPSEPowerAv OBJECT-TYPE + SYNTAX Gauge32 (0..1023) + UNITS "tenth of watt" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the power available from the + PSE via this port expressed in units of 0.1 watts on the remote + device." + REFERENCE + " ANSI/TIA-1057, Section 10.2.5.4" + ::= { lldpXMedRemXPoEPSEEntry 1 } + +lldpXMedRemXPoEPSEPowerSource OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + primary(2), + backup(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of PSE Power Source advertised + by the remote device. + + A value primary(2) indicates that the device advertises its power + source as primary. + + A value backup(3) indicates that the device advertises its power + Source as backup." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.2" + ::= { lldpXMedRemXPoEPSEEntry 2 } + +lldpXMedRemXPoEPSEPowerPriority OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + critical(2), + high(3), + low(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the PSE power priority + advertised by the remote device. + + A value critical(2) indicates that the device advertises its power + priority as critical, as per RFC 3621. + + A value high(3) indicates that the device advertises its power + priority as high, as per RFC 3621. + + A value low(4) indicates that the device advertises its power + priority as low, as per RFC 3621." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.3" + ::= { lldpXMedRemXPoEPSEEntry 3 } + + + +--- lldpXMedRemXPoEPDTable - Extended PoE PD Information from the remote device +--- + +lldpXMedRemXPoEPDTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpXMedRemXPoEPDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains extended PoE information as advertised + by the remote devices of PD type. + + This table may be sparsely populated. Entries in this table are + relevant only if the extendedPD(5) bits in the + lldpXMedRemCapSupported and lldpXMedRemCapCurrent objects of the + corresponding ports are set " + ::= { lldpXMedRemoteData 7 } + +lldpXMedRemXPoEPDEntry OBJECT-TYPE + SYNTAX LldpXMedRemXPoEPDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about XPoEPD information for the remote devices + connected to the ports." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex } + ::= { lldpXMedRemXPoEPDTable 1 } + +LldpXMedRemXPoEPDEntry ::= SEQUENCE { + lldpXMedRemXPoEPDPowerReq Gauge32, + lldpXMedRemXPoEPDPowerSource INTEGER, + lldpXMedRemXPoEPDPowerPriority INTEGER + } + +lldpXMedRemXPoEPDPowerReq OBJECT-TYPE + SYNTAX Gauge32 (0..1023) + UNITS "tenth of watt" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the power required by a + PD connected remotely to the port + expressed in units of 0.1 watts." + REFERENCE + " ANSI/TIA-1057, Section 10.2.5.4 " + ::= { lldpXMedRemXPoEPDEntry 1 } + +lldpXMedRemXPoEPDPowerSource OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + fromPSE(2), + local(3), + localAndPSE(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of Power Source advertised as being used + by the device connected remotely to the port. + + A value fromPSE(2) indicates that the device advertises its power + source as received from a PSE. + + A value local(3) indicates that the device advertises its power + source as local. + + A value localAndPSE(4) indicates that the device advertises its + power source as using both local and PSE power." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.2" + ::= { lldpXMedRemXPoEPDEntry 2 } + +lldpXMedRemXPoEPDPowerPriority OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + critical(2), + high(3), + low(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the priority advertised as being required by the PD + connected remotely to the port. + + A value critical(2) indicates that the device advertises its power + Priority as critical, as per RFC 3621. + + A value high(3) indicates that the device advertises its power + Priority as high, as per RFC 3621. + + A value low(4) indicates that the device advertises its power + Priority as low, as per RFC 3621." + REFERENCE + "ANSI/TIA-1057, Section 10.2.5.3" + ::= { lldpXMedRemXPoEPDEntry 3 } + +--- + +-- conformance information + +lldpXMedConformance OBJECT IDENTIFIER ::= { lldpXMedMIB 2 } +lldpXMedCompliances OBJECT IDENTIFIER ::= { lldpXMedConformance 1 } +lldpXMedGroups OBJECT IDENTIFIER ::= { lldpXMedConformance 2 } + +-- compliance statements + +lldpXMedCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the LLDP MED extension MIB." + + MODULE -- this module + MANDATORY-GROUPS { lldpXMedConfigGroup, + lldpXMedRemSysGroup, + lldpXMedNotificationsGroup + } + GROUP lldpXMedOptMediaPolicyGroup + DESCRIPTION + "This group represents the information associated with + the LLDP-MED optional Media Policy TLVs, + therefore the agent may not implement them." + GROUP lldpXMedOptInventoryGroup + DESCRIPTION + "This group represents the information associated with + the LLDP-MED optional inventory TLVs, + therefore the agent may not implement them." + GROUP lldpXMedOptLocationGroup + DESCRIPTION + "This group represents the information associated with + the LLDP-MED optional Location TLVs, + therefore the agent may not implement them." + GROUP lldpXMedOptPoEPSEGroup + DESCRIPTION + "This group represents the information associated with + the LLDP-MED optional extended PoE PolicyTLVs, carrying + PSE information, therefore the agent may + not implement them." + GROUP lldpXMedOptPoEPDGroup + DESCRIPTION + " This group represents the information associated with + the LLDP-MED optional extended PoE Policy TLVs, carrying + PD information, therefore the agent may + not implement them." + ::= { lldpXMedCompliances 1 } + +-- MIB groupings + +lldpXMedConfigGroup OBJECT-GROUP + OBJECTS { + lldpXMedPortCapSupported, + lldpXMedPortConfigTLVsTxEnable, + lldpXMedPortConfigNotifEnable, + lldpXMedFastStartRepeatCount, + lldpXMedLocXPoEDeviceType, + lldpXMedLocDeviceClass + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure or + describe the configuration or behavior of the LLDP-MED + organizational extension implementation." + ::= { lldpXMedGroups 1 } + +lldpXMedOptMediaPolicyGroup OBJECT-GROUP + OBJECTS { + lldpXMedLocMediaPolicyVlanID, + lldpXMedLocMediaPolicyPriority, + lldpXMedLocMediaPolicyDscp, + lldpXMedLocMediaPolicyUnknown, + lldpXMedLocMediaPolicyTagged + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + MED organizational extensions for Media Policy Information." + ::= { lldpXMedGroups 2 } + +lldpXMedOptInventoryGroup OBJECT-GROUP + OBJECTS { + lldpXMedLocHardwareRev, + lldpXMedLocFirmwareRev, + lldpXMedLocSoftwareRev, + lldpXMedLocSerialNum, + lldpXMedLocMfgName, + lldpXMedLocModelName, + lldpXMedLocAssetID + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + MED organizational extension for inventory Information." + ::= { lldpXMedGroups 3 } +lldpXMedOptLocationGroup OBJECT-GROUP + OBJECTS { + lldpXMedLocLocationInfo + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + MED organizational extension for Location Information." + ::= { lldpXMedGroups 4 } + +lldpXMedOptPoEPSEGroup OBJECT-GROUP + OBJECTS { + lldpXMedLocXPoEPSEPortPowerAv, + lldpXMedLocXPoEPSEPortPDPriority, + lldpXMedLocXPoEPSEPowerSource + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + MED organizational extensions for PoE PSE Information." + ::= { lldpXMedGroups 5 } + +lldpXMedOptPoEPDGroup OBJECT-GROUP + OBJECTS { + lldpXMedLocXPoEPDPowerReq, + lldpXMedLocXPoEPDPowerSource, + lldpXMedLocXPoEPDPowerPriority + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + MED organizational extensions for PoE PD Information." + ::= { lldpXMedGroups 6 } + +lldpXMedRemSysGroup OBJECT-GROUP + OBJECTS { + lldpXMedRemCapSupported, + lldpXMedRemCapCurrent, + lldpXMedRemDeviceClass, + lldpXMedRemMediaPolicyVlanID, + lldpXMedRemMediaPolicyPriority, + lldpXMedRemMediaPolicyDscp, + lldpXMedRemMediaPolicyUnknown, + lldpXMedRemMediaPolicyTagged, + lldpXMedRemHardwareRev, + lldpXMedRemFirmwareRev, + lldpXMedRemSoftwareRev, + lldpXMedRemSerialNum, + lldpXMedRemMfgName, + lldpXMedRemModelName, + lldpXMedRemAssetID, + lldpXMedRemLocationInfo, + lldpXMedRemXPoEDeviceType, + lldpXMedRemXPoEPSEPowerAv, + lldpXMedRemXPoEPSEPowerSource, + lldpXMedRemXPoEPSEPowerPriority, + lldpXMedRemXPoEPDPowerReq, + lldpXMedRemXPoEPDPowerSource, + lldpXMedRemXPoEPDPowerPriority + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP- + MED organizational extension Remote Device Information." + ::= { lldpXMedGroups 7 } + +lldpXMedNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { lldpXMedTopologyChangeDetected } + STATUS current + DESCRIPTION + "Notifications sent by an LLDP-MED agent." + ::= { lldpXMedGroups 8 } + +END + + diff --git a/mibs/lldp-mibs/LLDP-MIB-200505060000Z.txt b/mibs/lldp-mibs/LLDP-MIB-200505060000Z.txt new file mode 100644 index 0000000..ddd2030 --- /dev/null +++ b/mibs/lldp-mibs/LLDP-MIB-200505060000Z.txt @@ -0,0 +1,2032 @@ +LLDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TimeStamp, TruthValue + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + TimeFilter, ZeroBasedCounter32 + FROM RMON2-MIB + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB; + +lldpMIB MODULE-IDENTITY + LAST-UPDATED "200505060000Z" -- May 06, 2005 + ORGANIZATION "IEEE 802.1 Working Group" + CONTACT-INFO + " WG-URL: http://grouper.ieee.org/groups/802/1/index.html + WG-EMail: stds-802-1@ieee.org + + Contact: Paul Congdon + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. + Roseville, CA 95747 + USA + Tel: +1-916-785-5753 + E-mail: paul_congdon@hp.com" + DESCRIPTION + "Management Information Base module for LLDP configuration, + statistics, local system data and remote systems data + components. + + Copyright (C) IEEE (2005). This version of this MIB module + is published as subclause 12.1 of IEEE Std 802.1AB-2005; + see the standard itself for full legal notices." + REVISION "200505060000Z" -- May 06, 2005 + DESCRIPTION + "Published as part of IEEE Std 802.1AB-2005 initial version." + ::= { iso std(0) iso8802(8802) ieee802dot1(1) ieee802dot1mibs(1) 2 } + +lldpNotifications OBJECT IDENTIFIER ::= { lldpMIB 0 } +lldpObjects OBJECT IDENTIFIER ::= { lldpMIB 1 } +lldpConformance OBJECT IDENTIFIER ::= { lldpMIB 2 } + +-- +-- LLDP MIB Objects +-- + +lldpConfiguration OBJECT IDENTIFIER ::= { lldpObjects 1 } +lldpStatistics OBJECT IDENTIFIER ::= { lldpObjects 2 } +lldpLocalSystemData OBJECT IDENTIFIER ::= { lldpObjects 3 } +lldpRemoteSystemsData OBJECT IDENTIFIER ::= { lldpObjects 4 } +lldpExtensions OBJECT IDENTIFIER ::= { lldpObjects 5 } + +-- +-- *********************************************************** +-- +-- Textual Conventions +-- +-- *********************************************************** + +LldpChassisIdSubtype ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the source of a chassis identifier. + + The enumeration 'chassisComponent(1)' represents a chassis + identifier based on the value of entPhysicalAlias object + (defined in IETF RFC 2737) for a chassis component (i.e., + an entPhysicalClass value of 'chassis(3)'). + + The enumeration 'interfaceAlias(2)' represents a chassis + identifier based on the value of ifAlias object (defined in + IETF RFC 2863) for an interface on the containing chassis. + + The enumeration 'portComponent(3)' represents a chassis + identifier based on the value of entPhysicalAlias object + (defined in IETF RFC 2737) for a port or backplane + component (i.e., entPhysicalClass value of 'port(10)' or + 'backplane(4)'), within the containing chassis. + + The enumeration 'macAddress(4)' represents a chassis + identifier based on the value of a unicast source address + (encoded in network byte order and IEEE 802.3 canonical bit + order), of a port on the containing chassis as defined in + IEEE Std 802-2001. + + The enumeration 'networkAddress(5)' represents a chassis + identifier based on a network address, associated with + a particular chassis. The encoded address is actually + composed of two fields. The first field is a single octet, + representing the IANA AddressFamilyNumbers value for the + specific address type, and the second field is the network + address value. + + The enumeration 'interfaceName(6)' represents a chassis + identifier based on the value of ifName object (defined in + IETF RFC 2863) for an interface on the containing chassis. + + The enumeration 'local(7)' represents a chassis identifier + based on a locally defined value." + SYNTAX INTEGER { + chassisComponent(1), + interfaceAlias(2), + portComponent(3), + macAddress(4), + networkAddress(5), + interfaceName(6), + local(7) + } + +LldpChassisId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the format of a chassis identifier string. + Objects of this type are always used with an associated + LldpChassisIdSubtype object, which identifies the format of + the particular LldpChassisId object instance. + + If the associated LldpChassisIdSubtype object has a value of + 'chassisComponent(1)', then the octet string identifies + a particular instance of the entPhysicalAlias object + (defined in IETF RFC 2737) for a chassis component (i.e., + an entPhysicalClass value of 'chassis(3)'). + + If the associated LldpChassisIdSubtype object has a value + of 'interfaceAlias(2)', then the octet string identifies + a particular instance of the ifAlias object (defined in + IETF RFC 2863) for an interface on the containing chassis. + If the particular ifAlias object does not contain any values, + another chassis identifier type should be used. + + If the associated LldpChassisIdSubtype object has a value + of 'portComponent(3)', then the octet string identifies a + particular instance of the entPhysicalAlias object (defined + in IETF RFC 2737) for a port or backplane component within + the containing chassis. + + If the associated LldpChassisIdSubtype object has a value of + 'macAddress(4)', then this string identifies a particular + unicast source address (encoded in network byte order and + IEEE 802.3 canonical bit order), of a port on the containing + chassis as defined in IEEE Std 802-2001. + + If the associated LldpChassisIdSubtype object has a value of + 'networkAddress(5)', then this string identifies a particular + network address, encoded in network byte order, associated + with one or more ports on the containing chassis. The first + octet contains the IANA Address Family Numbers enumeration + value for the specific address type, and octets 2 through + N contain the network address value in network byte order. + + If the associated LldpChassisIdSubtype object has a value + of 'interfaceName(6)', then the octet string identifies + a particular instance of the ifName object (defined in + IETF RFC 2863) for an interface on the containing chassis. + If the particular ifName object does not contain any values, + another chassis identifier type should be used. + + If the associated LldpChassisIdSubtype object has a value of + 'local(7)', then this string identifies a locally assigned + Chassis ID." + SYNTAX OCTET STRING (SIZE (1..255)) + +LldpPortIdSubtype ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the source of a particular type of port + identifier used in the LLDP MIB. + + The enumeration 'interfaceAlias(1)' represents a port + identifier based on the ifAlias MIB object, defined in IETF + RFC 2863. + + The enumeration 'portComponent(2)' represents a port + identifier based on the value of entPhysicalAlias (defined in + IETF RFC 2737) for a port component (i.e., entPhysicalClass + value of 'port(10)'), within the containing chassis. + + The enumeration 'macAddress(3)' represents a port identifier + based on a unicast source address (encoded in network + byte order and IEEE 802.3 canonical bit order), which has + been detected by the agent and associated with a particular + port (IEEE Std 802-2001). + + The enumeration 'networkAddress(4)' represents a port + identifier based on a network address, detected by the agent + and associated with a particular port. + + The enumeration 'interfaceName(5)' represents a port + identifier based on the ifName MIB object, defined in IETF + RFC 2863. + + The enumeration 'agentCircuitId(6)' represents a port + identifier based on the agent-local identifier of the circuit + (defined in RFC 3046), detected by the agent and associated + with a particular port. + + The enumeration 'local(7)' represents a port identifier + based on a value locally assigned." + + SYNTAX INTEGER { + interfaceAlias(1), + portComponent(2), + macAddress(3), + networkAddress(4), + interfaceName(5), + agentCircuitId(6), + local(7) + } + +LldpPortId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the format of a port identifier string. + Objects of this type are always used with an associated + LldpPortIdSubtype object, which identifies the format of the + particular LldpPortId object instance. + + If the associated LldpPortIdSubtype object has a value of + 'interfaceAlias(1)', then the octet string identifies a + particular instance of the ifAlias object (defined in IETF + RFC 2863). If the particular ifAlias object does not contain + any values, another port identifier type should be used. + + If the associated LldpPortIdSubtype object has a value of + 'portComponent(2)', then the octet string identifies a + particular instance of the entPhysicalAlias object (defined + in IETF RFC 2737) for a port or backplane component. + + If the associated LldpPortIdSubtype object has a value of + 'macAddress(3)', then this string identifies a particular + unicast source address (encoded in network byte order + and IEEE 802.3 canonical bit order) associated with the port + (IEEE Std 802-2001). + + If the associated LldpPortIdSubtype object has a value of + 'networkAddress(4)', then this string identifies a network + address associated with the port. The first octet contains + the IANA AddressFamilyNumbers enumeration value for the + specific address type, and octets 2 through N contain the + networkAddress address value in network byte order. + + If the associated LldpPortIdSubtype object has a value of + 'interfaceName(5)', then the octet string identifies a + particular instance of the ifName object (defined in IETF + RFC 2863). If the particular ifName object does not contain + any values, another port identifier type should be used. + + If the associated LldpPortIdSubtype object has a value of + 'agentCircuitId(6)', then this string identifies a agent-local + identifier of the circuit (defined in RFC 3046). + + If the associated LldpPortIdSubtype object has a value of + 'local(7)', then this string identifies a locally + assigned port ID." + SYNTAX OCTET STRING (SIZE (1..255)) + +LldpManAddrIfSubtype ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the basis of a particular type of + interface associated with the management address. + + The enumeration 'unknown(1)' represents the case where the + interface is not known. + + The enumeration 'ifIndex(2)' represents interface identifier + based on the ifIndex MIB object. + + The enumeration 'systemPortNumber(3)' represents interface + identifier based on the system port numbering convention." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.5" + + SYNTAX INTEGER { + unknown(1), + ifIndex(2), + systemPortNumber(3) + } + +LldpManAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of a management address associated with the LLDP + agent that may be used to reach higher layer entities to + assist discovery by network management. + + It should be noted that appropriate security credentials, + such as SNMP engineId, may be required to access the LLDP + agent using a management address. These necessary credentials + should be known by the network management and the objects + associated with the credentials are not included in the + LLDP agent." + SYNTAX OCTET STRING (SIZE (1..31)) + +LldpSystemCapabilitiesMap ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the system capabilities. + + The bit 'other(0)' indicates that the system has capabilities + other than those listed below. + + The bit 'repeater(1)' indicates that the system has repeater + capability. + + The bit 'bridge(2)' indicates that the system has bridge + capability. + + The bit 'wlanAccessPoint(3)' indicates that the system has + WLAN access point capability. + + The bit 'router(4)' indicates that the system has router + capability. + + The bit 'telephone(5)' indicates that the system has telephone + capability. + + The bit 'docsisCableDevice(6)' indicates that the system has + DOCSIS Cable Device capability (IETF RFC 2669 & 2670). + + The bit 'stationOnly(7)' indicates that the system has only + station capability and nothing else." + SYNTAX BITS { + other(0), + repeater(1), + bridge(2), + wlanAccessPoint(3), + router(4), + telephone(5), + docsisCableDevice(6), + stationOnly(7) + } + +LldpPortNumber ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Each port contained in the chassis (that is known to the + LLDP agent) is uniquely identified by a port number. + + A port number has no mandatory relationship to an + InterfaceIndex object (of the interfaces MIB, IETF RFC 2863). + If the LLDP agent is a IEEE 802.1D, IEEE 802.1Q bridge, the + LldpPortNumber will have the same value as the dot1dBasePort + object (defined in IETF RFC 1493) associated corresponding + bridge port. If the system hosting LLDP agent is not an + IEEE 802.1D or an IEEE 802.1Q bridge, the LldpPortNumber + will have the same value as the corresponding interface's + InterfaceIndex object. + + Port numbers should be in the range of 1 and 4096 since a + particular port is also represented by the corresponding + port number bit in LldpPortList." + SYNTAX Integer32(1..4096) + +LldpPortList ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each octet within this value specifies a set of eight ports, + with the first octet specifying ports 1 through 8, the second + octet specifying ports 9 through 16, etc. Within each octet, + the most significant bit represents the lowest numbered port, + and the least significant bit represents the highest numbered + port. Thus, each port of the system is represented by a + single bit within the value of this object. If that bit has + a value of '1' then that port is included in the set of ports; + the port is not included if its bit has a value of '0'." + REFERENCE + "IETF RFC 2674 section 5" + SYNTAX OCTET STRING(SIZE(0..512)) + +-- +-- *********************************************************** +-- +-- L L D P C O N F I G +-- +-- *********************************************************** +-- + +lldpMessageTxInterval OBJECT-TYPE + SYNTAX Integer32(5..32768) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval at which LLDP frames are transmitted on + behalf of this LLDP agent. + + The default value for lldpMessageTxInterval object is + 30 seconds. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.5.3.3" + DEFVAL { 30 } + ::= { lldpConfiguration 1 } + +lldpMessageTxHoldMultiplier OBJECT-TYPE + SYNTAX Integer32(2..10) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time-to-live value expressed as a multiple of the + lldpMessageTxInterval object. The actual time-to-live value + used in LLDP frames, transmitted on behalf of this LLDP agent, + can be expressed by the following formula: TTL = min(65535, + (lldpMessageTxInterval * lldpMessageTxHoldMultiplier)) For + example, if the value of lldpMessageTxInterval is '30', and + the value of lldpMessageTxHoldMultiplier is '4', then the + value '120' is encoded in the TTL field in the LLDP header. + + The default value for lldpMessageTxHoldMultiplier object is 4. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.5.3.3" + DEFVAL { 4 } + ::= { lldpConfiguration 2 } + +lldpReinitDelay OBJECT-TYPE + SYNTAX Integer32(1..10) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpReinitDelay indicates the delay (in units of + seconds) from when lldpPortConfigAdminStatus object of a + particular port becomes 'disabled' until re-initialization + will be attempted. + + The default value for lldpReintDelay object is two seconds. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.5.3.3" + DEFVAL { 2 } + ::= { lldpConfiguration 3 } + +lldpTxDelay OBJECT-TYPE + SYNTAX Integer32(1..8192) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpTxDelay indicates the delay (in units + of seconds) between successive LLDP frame transmissions + initiated by value/status changes in the LLDP local systems + MIB. The recommended value for the lldpTxDelay is set by the + following formula: + + 1 <= lldpTxDelay <= (0.25 * lldpMessageTxInterval) + + The default value for lldpTxDelay object is two seconds. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.5.3.3" + DEFVAL { 2 } + ::= { lldpConfiguration 4 } + +lldpNotificationInterval OBJECT-TYPE + SYNTAX Integer32(5..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the transmission of LLDP notifications. + + the agent must not generate more than one lldpRemTablesChange + notification-event in the indicated period, where a + 'notification-event' is the transmission of a single + notification PDU type to a list of notification destinations. + If additional changes in lldpRemoteSystemsData object + groups occur within the indicated throttling period, + then these trap- events must be suppressed by the + agent. An NMS should periodically check the value of + lldpStatsRemTableLastChangeTime to detect any missed + lldpRemTablesChange notification-events, e.g. due to + throttling or transmission loss. + + If notification transmission is enabled for particular ports, + the suggested default throttling period is 5 seconds. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + DEFVAL { 5 } + ::= { lldpConfiguration 5 } + +-- +-- lldpPortConfigTable: LLDP configuration on a per port basis +-- + +lldpPortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpPortConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table that controls LLDP frame transmission on individual + ports." + ::= { lldpConfiguration 6 } + +lldpPortConfigEntry OBJECT-TYPE + SYNTAX LldpPortConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information for a particular port. + This configuration parameter controls the transmission and + the reception of LLDP frames on those ports whose rows are + created in this table." + INDEX { lldpPortConfigPortNum } + ::= { lldpPortConfigTable 1 } + +LldpPortConfigEntry ::= SEQUENCE { + lldpPortConfigPortNum LldpPortNumber, + lldpPortConfigAdminStatus INTEGER, + lldpPortConfigNotificationEnable TruthValue, + lldpPortConfigTLVsTxEnable BITS } + +lldpPortConfigPortNum OBJECT-TYPE + SYNTAX LldpPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to identify the port component + (contained in the local chassis with the LLDP agent) + associated with this entry. + + The value of this object is used as a port index to the + lldpPortConfigTable." + ::= { lldpPortConfigEntry 1 } + +lldpPortConfigAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + txOnly(1), + rxOnly(2), + txAndRx(3), + disabled(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively desired status of the local LLDP agent. + + If the associated lldpPortConfigAdminStatus object has a + value of 'txOnly(1)', then LLDP agent will transmit LLDP + frames on this port and it will not store any information + about the remote systems connected. + + If the associated lldpPortConfigAdminStatus object has a + value of 'rxOnly(2)', then the LLDP agent will receive, + but it will not transmit LLDP frames on this port. + + If the associated lldpPortConfigAdminStatus object has a + value of 'txAndRx(3)', then the LLDP agent will transmit + and receive LLDP frames on this port. + + If the associated lldpPortConfigAdminStatus object has a + value of 'disabled(4)', then LLDP agent will not transmit or + receive LLDP frames on this port. If there is remote systems + information which is received on this port and stored in + other tables, before the port's lldpPortConfigAdminStatus + becomes disabled, then the information will naturally age out." + REFERENCE + "IEEE 802.1AB-2005 10.5.1" + DEFVAL { txAndRx } + ::= { lldpPortConfigEntry 2 } + +lldpPortConfigNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpPortConfigNotificationEnable controls, on a per + port basis, whether or not notifications from the agent + are enabled. The value true(1) means that notifications are + enabled; the value false(2) means that they are not." + DEFVAL { false } + ::= { lldpPortConfigEntry 3 } + +lldpPortConfigTLVsTxEnable OBJECT-TYPE + SYNTAX BITS { + portDesc(0), + sysName(1), + sysDesc(2), + sysCap(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lldpPortConfigTLVsTxEnable, defined as a bitmap, + includes the basic set of LLDP TLVs whose transmission is + allowed on the local LLDP agent by the network management. + Each bit in the bitmap corresponds to a TLV type associated + with a specific optional TLV. + + It should be noted that the organizationally-specific TLVs + are excluded from the lldpTLVsTxEnable bitmap. + + LLDP Organization Specific Information Extension MIBs should + have similar configuration object to control transmission + of their organizationally defined TLVs. + + The bit 'portDesc(0)' indicates that LLDP agent should + transmit 'Port Description TLV'. + + The bit 'sysName(1)' indicates that LLDP agent should transmit + 'System Name TLV'. + + The bit 'sysDesc(2)' indicates that LLDP agent should transmit + 'System Description TLV'. + + The bit 'sysCap(3)' indicates that LLDP agent should transmit + 'System Capabilities TLV'. + + There is no bit reserved for the management address TLV type + since transmission of management address TLVs are controlled + by another object, lldpConfigManAddrTable. + + The default value for lldpPortConfigTLVsTxEnable object is + empty set, which means no enumerated values are set. + + The value of this object must be restored from non-volatile + storage after a re-initialization of the management system." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { { } } + ::= { lldpPortConfigEntry 4 } + + +-- +-- lldpManAddrConfigTxPortsTable : selection of management addresses +-- to be transmitted on a specified set +-- of ports. +-- + +lldpConfigManAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpConfigManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table that controls selection of LLDP management address + TLV instances to be transmitted on individual ports." + ::= { lldpConfiguration 7 } + +lldpConfigManAddrEntry OBJECT-TYPE + SYNTAX LldpConfigManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP configuration information that specifies the set + of ports (represented as a PortList) on which the local + system management address instance will be transmitted. + + This configuration object augments the lldpLocManAddrEntry, + therefore it is only present along with the management + address instance contained in the associated + lldpLocManAddrEntry entry. + + Each active lldpConfigManAddrEntry must be restored from + non-volatile and re-created (along with the corresponding + lldpLocManAddrEntry) after a re-initialization of the + management system." + AUGMENTS { lldpLocManAddrEntry } + ::= { lldpConfigManAddrTable 1 } + +LldpConfigManAddrEntry ::= SEQUENCE { + lldpConfigManAddrPortsTxEnable LldpPortList +} + +lldpConfigManAddrPortsTxEnable OBJECT-TYPE + SYNTAX LldpPortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A set of ports that are identified by a PortList, in which + each port is represented as a bit. The corresponding local + system management address instance will be transmitted on the + member ports of the lldpManAddrPortsTxEnable. + + The default value for lldpConfigManAddrPortsTxEnable object + is empty binary string, which means no ports are specified + for advertising indicated management address instance." + REFERENCE + "IEEE 802.1AB-2005 10.2.1.1" + DEFVAL { ''H } -- empty binary string + ::= { lldpConfigManAddrEntry 1 } + + +-- +-- *********************************************************** +-- +-- L L D P S T A T S +-- +-- *********************************************************** +-- +-- LLDP Stats Group + +lldpStatsRemTablesLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime object (defined in IETF RFC 3418) + at the time an entry is created, modified, or deleted in the + in tables associated with the lldpRemoteSystemsData objects + and all LLDP extension objects associated with remote systems. + + An NMS can use this object to reduce polling of the + lldpRemoteSystemsData objects." + ::= { lldpStatistics 1 } + +lldpStatsRemTablesInserts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the complete set of information + advertised by a particular MSAP has been inserted into tables + contained in lldpRemoteSystemsData and lldpExtensions objects. + + The complete set of information received from a particular + MSAP should be inserted into related tables. If partial + information cannot be inserted for a reason such as lack + of resources, all of the complete set of information should + be removed. + + This counter should be incremented only once after the + complete set of information is successfully recorded + in all related tables. Any failures during inserting + information set which result in deletion of previously + inserted information should not trigger any changes in + lldpStatsRemTablesInserts since the insert is not completed + yet or or in lldpStatsRemTablesDeletes, since the deletion + would only be a partial deletion. If the failure was the + result of lack of resources, the lldpStatsRemTablesDrops + counter should be incremented once." + ::= { lldpStatistics 2 } + +lldpStatsRemTablesDeletes OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of times the complete set of information + advertised by a particular MSAP has been deleted from + tables contained in lldpRemoteSystemsData and lldpExtensions + objects. + + This counter should be incremented only once when the + complete set of information is completely deleted from all + related tables. Partial deletions, such as deletion of + rows associated with a particular MSAP from some tables, + but not from all tables are not allowed, thus should not + change the value of this counter." + ::= { lldpStatistics 3 } + +lldpStatsRemTablesDrops OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "table entries" + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The number of times the complete set of information + advertised by a particular MSAP could not be entered into + tables contained in lldpRemoteSystemsData and lldpExtensions + objects because of insufficient resources." + ::= { lldpStatistics 4 } + +lldpStatsRemTablesAgeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the complete set of information + advertised by a particular MSAP has been deleted from tables + contained in lldpRemoteSystemsData and lldpExtensions objects + because the information timeliness interval has expired. + + This counter should be incremented only once when the complete + set of information is completely invalidated (aged out) + from all related tables. Partial aging, similar to deletion + case, is not allowed, and thus, should not change the value + of this counter." + ::= { lldpStatistics 5 } + +-- +-- TX statistics +-- + +lldpStatsTxPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpStatsTxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing LLDP transmission statistics for + individual ports. Entries are not required to exist in + this table while the lldpPortConfigEntry object is equal to + 'disabled(4)'." + ::= { lldpStatistics 6 } + +lldpStatsTxPortEntry OBJECT-TYPE + SYNTAX LldpStatsTxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP frame transmission statistics for a particular port. + The port must be contained in the same chassis as the + LLDP agent. + + All counter values in a particular entry shall be + maintained on a continuing basis and shall not be deleted + upon expiration of rxInfoTTL timing counters in the LLDP + remote systems MIB of the receipt of a shutdown frame from + a remote LLDP agent. + + All statistical counters associated with a particular + port on the local LLDP agent become frozen whenever the + adminStatus is disabled for the same port." + INDEX { lldpStatsTxPortNum } + ::= { lldpStatsTxPortTable 1 } + +LldpStatsTxPortEntry ::= SEQUENCE { + lldpStatsTxPortNum LldpPortNumber, + lldpStatsTxPortFramesTotal Counter32 +} + +lldpStatsTxPortNum OBJECT-TYPE + SYNTAX LldpPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to identify the port component + (contained in the local chassis with the LLDP agent) + associated with this entry. + + The value of this object is used as a port index to the + lldpStatsTable." + ::= { lldpStatsTxPortEntry 1 } + +lldpStatsTxPortFramesTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LLDP frames transmitted by this LLDP agent + on the indicated port." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.1" + ::= { lldpStatsTxPortEntry 2 } + +-- +-- RX statistics +-- + +lldpStatsRxPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpRxStatsPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing LLDP reception statistics for individual + ports. Entries are not required to exist in this table while + the lldpPortConfigEntry object is equal to 'disabled(4)'." + ::= { lldpStatistics 7 } + +lldpStatsRxPortEntry OBJECT-TYPE + SYNTAX LldpRxStatsPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "LLDP frame reception statistics for a particular port. + The port must be contained in the same chassis as the + LLDP agent. + + All counter values in a particular entry shall be + maintained on a continuing basis and shall not be deleted + upon expiration of rxInfoTTL timing counters in the LLDP + remote systems MIB of the receipt of a shutdown frame from + a remote LLDP agent. + + All statistical counters associated with a particular + port on the local LLDP agent become frozen whenever the + adminStatus is disabled for the same port." + INDEX { lldpStatsRxPortNum } + ::= { lldpStatsRxPortTable 1 } + +LldpRxStatsPortEntry ::= SEQUENCE { + lldpStatsRxPortNum LldpPortNumber, + lldpStatsRxPortFramesDiscardedTotal Counter32, + lldpStatsRxPortFramesErrors Counter32, + lldpStatsRxPortFramesTotal Counter32, + lldpStatsRxPortTLVsDiscardedTotal Counter32, + lldpStatsRxPortTLVsUnrecognizedTotal Counter32, + lldpStatsRxPortAgeoutsTotal ZeroBasedCounter32 +} + +lldpStatsRxPortNum OBJECT-TYPE + SYNTAX LldpPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to identify the port component + (contained in the local chassis with the LLDP agent) + associated with this entry. + + The value of this object is used as a port index to the + lldpStatsTable." + ::= { lldpStatsRxPortEntry 1 } + +lldpStatsRxPortFramesDiscardedTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LLDP frames received by this LLDP agent on + the indicated port, and then discarded for any reason. + This counter can provide an indication that LLDP header + formating problems may exist with the local LLDP agent in + the sending system or that LLDPDU validation problems may + exist with the local LLDP agent in the receiving system." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.2" + ::= { lldpStatsRxPortEntry 2 } + +lldpStatsRxPortFramesErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid LLDP frames received by this LLDP + agent on the indicated port, while this LLDP agent is enabled." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.2" + ::= { lldpStatsRxPortEntry 3 } + +lldpStatsRxPortFramesTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid LLDP frames received by this LLDP agent + on the indicated port, while this LLDP agent is enabled." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.2" + ::= { lldpStatsRxPortEntry 4 } + +lldpStatsRxPortTLVsDiscardedTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LLDP TLVs discarded for any reason by this LLDP + agent on the indicated port." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.2" + ::= { lldpStatsRxPortEntry 5 } + +lldpStatsRxPortTLVsUnrecognizedTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LLDP TLVs received on the given port that + are not recognized by this LLDP agent on the indicated port. + + An unrecognized TLV is referred to as the TLV whose type value + is in the range of reserved TLV types (000 1001 - 111 1110) + in Table 9.1 of IEEE Std 802.1AB-2005. An unrecognized + TLV may be a basic management TLV from a later LLDP version." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.2" + ::= { lldpStatsRxPortEntry 6 } + +lldpStatsRxPortAgeoutsTotal OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter that represents the number of age-outs that + occurred on a given port. An age-out is the number of + times the complete set of information advertised by a + particular MSAP has been deleted from tables contained in + lldpRemoteSystemsData and lldpExtensions objects because + the information timeliness interval has expired. + + This counter is similar to lldpStatsRemTablesAgeouts, except + that the counter is on a per port basis. This enables NMS to + poll tables associated with the lldpRemoteSystemsData objects + and all LLDP extension objects associated with remote systems + on the indicated port only. + + This counter should be set to zero during agent initialization + and its value should not be saved in non-volatile storage. + When a port's admin status changes from 'disabled' to + 'rxOnly', 'txOnly' or 'txAndRx', the counter associated with + the same port should reset to 0. The agent should also flush + all remote system information associated with the same port. + + This counter should be incremented only once when the + complete set of information is invalidated (aged out) from + all related tables on a particular port. Partial aging + is not allowed, and thus, should not change the value of + this counter." + REFERENCE + "IEEE 802.1AB-2005 10.5.2.2" + ::= { lldpStatsRxPortEntry 7 } + +-- *********************************************************** +-- +-- L O C A L S Y S T E M D A T A +-- +-- *********************************************************** + +lldpLocChassisIdSubtype OBJECT-TYPE + SYNTAX LldpChassisIdSubtype + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of encoding used to identify the chassis + associated with the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.2.2" + ::= { lldpLocalSystemData 1 } + +lldpLocChassisId OBJECT-TYPE + SYNTAX LldpChassisId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the chassis component + associated with the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.2.3" + ::= { lldpLocalSystemData 2 } + +lldpLocSysName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the system name of the + local system. If the local agent supports IETF RFC 3418, + lldpLocSysName object should have the same value of sysName + object." + REFERENCE + "IEEE 802.1AB-2005 9.5.6.2" + ::= { lldpLocalSystemData 3 } + +lldpLocSysDesc OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the system description + of the local system. If the local agent supports IETF RFC 3418, + lldpLocSysDesc object should have the same value of sysDesc + object." + REFERENCE + "IEEE 802.1AB-2005 9.5.7.2" + ::= { lldpLocalSystemData 4 } + +lldpLocSysCapSupported OBJECT-TYPE + SYNTAX LldpSystemCapabilitiesMap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap value used to identify which system capabilities + are supported on the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.8.1" + ::= { lldpLocalSystemData 5 } + +lldpLocSysCapEnabled OBJECT-TYPE + SYNTAX LldpSystemCapabilitiesMap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap value used to identify which system capabilities + are enabled on the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.8.2" + ::= { lldpLocalSystemData 6 } + + +-- +-- lldpLocPortTable : Port specific Local system data +-- + +lldpLocPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpLocPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per port information + associated with the local system known to this agent." + ::= { lldpLocalSystemData 7 } + +lldpLocPortEntry OBJECT-TYPE + SYNTAX LldpLocPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port component. + + Entries may be created and deleted in this table by the + agent." + INDEX { lldpLocPortNum } + ::= { lldpLocPortTable 1 } + +LldpLocPortEntry ::= SEQUENCE { + lldpLocPortNum LldpPortNumber, + lldpLocPortIdSubtype LldpPortIdSubtype, + lldpLocPortId LldpPortId, + lldpLocPortDesc SnmpAdminString +} + +lldpLocPortNum OBJECT-TYPE + SYNTAX LldpPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to identify the port component + (contained in the local chassis with the LLDP agent) + associated with this entry. + + The value of this object is used as a port index to the + lldpLocPortTable." + ::= { lldpLocPortEntry 1 } + +lldpLocPortIdSubtype OBJECT-TYPE + SYNTAX LldpPortIdSubtype + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of port identifier encoding used in the associated + 'lldpLocPortId' object." + REFERENCE + "IEEE 802.1AB-2005 9.5.3.2" + ::= { lldpLocPortEntry 2 } + +lldpLocPortId OBJECT-TYPE + SYNTAX LldpPortId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the port component + associated with a given port in the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.3.3" + ::= { lldpLocPortEntry 3 } + +lldpLocPortDesc OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the 802 LAN station's port + description associated with the local system. If the local + agent supports IETF RFC 2863, lldpLocPortDesc object should + have the same value of ifDescr object." + REFERENCE + "IEEE 802.1AB-2005 9.5.5.2" + ::= { lldpLocPortEntry 4 } + +-- +-- lldpLocManAddrTable : Management addresses of the local system +-- + +lldpLocManAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpLocManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains management address information on the + local system known to this agent." + ::= { lldpLocalSystemData 8 } + +lldpLocManAddrEntry OBJECT-TYPE + SYNTAX LldpLocManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Management address information about a particular chassis + component. There may be multiple management addresses + configured on the system identified by a particular + lldpLocChassisId. Each management address should have + distinct 'management address type' (lldpLocManAddrSubtype) and + 'management address' (lldpLocManAddr.) + + Entries may be created and deleted in this table by the + agent." + INDEX { lldpLocManAddrSubtype, + lldpLocManAddr } + ::= { lldpLocManAddrTable 1 } + +LldpLocManAddrEntry ::= SEQUENCE { + lldpLocManAddrSubtype AddressFamilyNumbers, + lldpLocManAddr LldpManAddress, + lldpLocManAddrLen Integer32, + lldpLocManAddrIfSubtype LldpManAddrIfSubtype, + lldpLocManAddrIfId Integer32, + lldpLocManAddrOID OBJECT IDENTIFIER +} + +lldpLocManAddrSubtype OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of management address identifier encoding used in + the associated 'lldpLocManagmentAddr' object." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.3" + ::= { lldpLocManAddrEntry 1 } + +lldpLocManAddr OBJECT-TYPE + SYNTAX LldpManAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The string value used to identify the management address + component associated with the local system. The purpose of + this address is to contact the management entity." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.4" + ::= { lldpLocManAddrEntry 2 } + +lldpLocManAddrLen OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total length of the management address subtype and the + management address fields in LLDPDUs transmitted by the + local LLDP agent. + + The management address length field is needed so that the + receiving systems that do not implement SNMP will not be + required to implement an iana family numbers/address length + equivalency table in order to decode the management adress." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.2" + ::= { lldpLocManAddrEntry 3 } + + +lldpLocManAddrIfSubtype OBJECT-TYPE + SYNTAX LldpManAddrIfSubtype + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The enumeration value that identifies the interface numbering + method used for defining the interface number, associated + with the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.5" + ::= { lldpLocManAddrEntry 4 } + +lldpLocManAddrIfId OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value used to identify the interface number + regarding the management address component associated with + the local system." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.6" + ::= { lldpLocManAddrEntry 5 } + +lldpLocManAddrOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OID value used to identify the type of hardware component + or protocol entity associated with the management address + advertised by the local system agent." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.8" + ::= { lldpLocManAddrEntry 6 } + + +-- *********************************************************** +-- +-- R E M O T E S Y S T E M S D A T A +-- +-- *********************************************************** + +lldpRemTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpRemEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per physical network + connection known to this agent. The agent may wish to ensure + that only one lldpRemEntry is present for each local port, + or it may choose to maintain multiple lldpRemEntries for + the same local port. + + The following procedure may be used to retrieve remote + systems information updates from an LLDP agent: + + 1. NMS polls all tables associated with remote systems + and keeps a local copy of the information retrieved. + NMS polls periodically the values of the following + objects: + a. lldpStatsRemTablesInserts + b. lldpStatsRemTablesDeletes + c. lldpStatsRemTablesDrops + d. lldpStatsRemTablesAgeouts + e. lldpStatsRxPortAgeoutsTotal for all ports. + + 2. LLDP agent updates remote systems MIB objects, and + sends out notifications to a list of notification + destinations. + + 3. NMS receives the notifications and compares the new + values of objects listed in step 1. + + Periodically, NMS should poll the object + lldpStatsRemTablesLastChangeTime to find out if anything + has changed since the last poll. if something has + changed, NMS will poll the objects listed in step 1 to + figure out what kind of changes occurred in the tables. + + if value of lldpStatsRemTablesInserts has changed, + then NMS will walk all tables by employing TimeFilter + with the last-polled time value. This request will + return new objects or objects whose values are updated + since the last poll. + + if value of lldpStatsRemTablesAgeouts has changed, + then NMS will walk the lldpStatsRxPortAgeoutsTotal and + compare the new values with previously recorded ones. + For ports whose lldpStatsRxPortAgeoutsTotal value is + greater than the recorded value, NMS will have to + retrieve objects associated with those ports from + table(s) without employing a TimeFilter (which is + performed by specifying 0 for the TimeFilter.) + + lldpStatsRemTablesDeletes and lldpStatsRemTablesDrops + objects are provided for informational purposes." + ::= { lldpRemoteSystemsData 1 } + +lldpRemEntry OBJECT-TYPE + SYNTAX LldpRemEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical network connection. + Entries may be created and deleted in this table by the agent, + if a physical topology discovery process is active." + INDEX { + lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex + } + ::= { lldpRemTable 1 } + +LldpRemEntry ::= SEQUENCE { + lldpRemTimeMark TimeFilter, + lldpRemLocalPortNum LldpPortNumber, + lldpRemIndex Integer32, + lldpRemChassisIdSubtype LldpChassisIdSubtype, + lldpRemChassisId LldpChassisId, + lldpRemPortIdSubtype LldpPortIdSubtype, + lldpRemPortId LldpPortId, + lldpRemPortDesc SnmpAdminString, + lldpRemSysName SnmpAdminString, + lldpRemSysDesc SnmpAdminString, + lldpRemSysCapSupported LldpSystemCapabilitiesMap, + lldpRemSysCapEnabled LldpSystemCapabilitiesMap +} + +lldpRemTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention in IETF RFC 2021 and + http://www.ietf.org/IESG/Implementations/RFC2021-Implementation.txt + to see how TimeFilter works." + REFERENCE + "IETF RFC 2021 section 6" + ::= { lldpRemEntry 1 } + +lldpRemLocalPortNum OBJECT-TYPE + SYNTAX LldpPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to identify the port component + (contained in the local chassis with the LLDP agent) + associated with this entry. The lldpRemLocalPortNum + identifies the port on which the remote system information + is received. + + The value of this object is used as a port index to the + lldpRemTable." + ::= { lldpRemEntry 2 } + +lldpRemIndex OBJECT-TYPE + SYNTAX Integer32(1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary local integer value used + by this agent to identify a particular connection instance, + unique only for the indicated remote system. + + An agent is encouraged to assign monotonically increasing + index values to new entries, starting with one, after each + reboot. It is considered unlikely that the lldpRemIndex + will wrap between reboots." + ::= { lldpRemEntry 3 } + +lldpRemChassisIdSubtype OBJECT-TYPE + SYNTAX LldpChassisIdSubtype + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of encoding used to identify the chassis associated + with the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.2.2" + ::= { lldpRemEntry 4 } + +lldpRemChassisId OBJECT-TYPE + SYNTAX LldpChassisId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the chassis component + associated with the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.2.3" + ::= { lldpRemEntry 5 } + +lldpRemPortIdSubtype OBJECT-TYPE + SYNTAX LldpPortIdSubtype + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of port identifier encoding used in the associated + 'lldpRemPortId' object." + REFERENCE + "IEEE 802.1AB-2005 9.5.3.2" + ::= { lldpRemEntry 6 } + +lldpRemPortId OBJECT-TYPE + SYNTAX LldpPortId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the port component + associated with the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.3.3" + ::= { lldpRemEntry 7 } + +lldpRemPortDesc OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the description of + the given port associated with the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.5.2" + ::= { lldpRemEntry 8 } + +lldpRemSysName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the system name of the + remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.6.2" + ::= { lldpRemEntry 9 } + +lldpRemSysDesc OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the system description + of the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.7.2" + ::= { lldpRemEntry 10 } + +lldpRemSysCapSupported OBJECT-TYPE + SYNTAX LldpSystemCapabilitiesMap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap value used to identify which system capabilities + are supported on the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.8.1" + ::= { lldpRemEntry 11 } + +lldpRemSysCapEnabled OBJECT-TYPE + SYNTAX LldpSystemCapabilitiesMap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bitmap value used to identify which system capabilities + are enabled on the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.8.2" + ::= { lldpRemEntry 12 } + +-- +-- lldpRemManAddrTable : Management addresses of the remote system +-- + +lldpRemManAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpRemManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per management address + information on the remote system learned on a particular port + contained in the local chassis known to this agent." + ::= { lldpRemoteSystemsData 2 } + +lldpRemManAddrEntry OBJECT-TYPE + SYNTAX LldpRemManAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Management address information about a particular chassis + component. There may be multiple management addresses + configured on the remote system identified by a particular + lldpRemIndex whose information is received on + lldpRemLocalPortNum of the local system. Each management + address should have distinct 'management address + type' (lldpRemManAddrSubtype) and 'management address' + (lldpRemManAddr.) + + Entries may be created and deleted in this table by the + agent." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpRemManAddrSubtype, + lldpRemManAddr + } + ::= { lldpRemManAddrTable 1 } + +LldpRemManAddrEntry ::= SEQUENCE { + lldpRemManAddrSubtype AddressFamilyNumbers, + lldpRemManAddr LldpManAddress, + lldpRemManAddrIfSubtype LldpManAddrIfSubtype, + lldpRemManAddrIfId Integer32, + lldpRemManAddrOID OBJECT IDENTIFIER +} + +lldpRemManAddrSubtype OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of management address identifier encoding used in + the associated 'lldpRemManagmentAddr' object." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.3" + ::= { lldpRemManAddrEntry 1 } + +lldpRemManAddr OBJECT-TYPE + SYNTAX LldpManAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The string value used to identify the management address + component associated with the remote system. The purpose + of this address is to contact the management entity." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.4" + ::= { lldpRemManAddrEntry 2 } + +lldpRemManAddrIfSubtype OBJECT-TYPE + SYNTAX LldpManAddrIfSubtype + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The enumeration value that identifies the interface numbering + method used for defining the interface number, associated + with the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.5" + ::= { lldpRemManAddrEntry 3 } + +lldpRemManAddrIfId OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value used to identify the interface number + regarding the management address component associated with + the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.6" + ::= { lldpRemManAddrEntry 4 } + +lldpRemManAddrOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OID value used to identify the type of hardware component + or protocol entity associated with the management address + advertised by the remote system agent." + REFERENCE + "IEEE 802.1AB-2005 9.5.9.8" + ::= { lldpRemManAddrEntry 5 } + +-- +-- lldpRemUnknownTLVTable : Unrecognized TLV information +-- +lldpRemUnknownTLVTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpRemUnknownTLVEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about an incoming TLV which + is not recognized by the receiving LLDP agent. The TLV may + be from a later version of the basic management set. + + This table should only contain TLVs that are found in + a single LLDP frame. Entries in this table, associated + with an MAC service access point (MSAP, the access point + for MAC services provided to the LCC sublayer, defined + in IEEE 100, which is also identified with a particular + lldpRemLocalPortNum, lldpRemIndex pair) are overwritten with + most recently received unrecognized TLV from the same MSAP, + or they will naturally age out when the rxInfoTTL timer + (associated with the MSAP) expires." + REFERENCE + "IEEE 802.1AB-2005 10.3.2" + ::= { lldpRemoteSystemsData 3 } + +lldpRemUnknownTLVEntry OBJECT-TYPE + SYNTAX LldpRemUnknownTLVEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an unrecognized TLV received from a + physical network connection. Entries may be created and + deleted in this table by the agent, if a physical topology + discovery process is active." + INDEX { + lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpRemUnknownTLVType + } + ::= { lldpRemUnknownTLVTable 1 } + +LldpRemUnknownTLVEntry ::= SEQUENCE { + lldpRemUnknownTLVType Integer32, + lldpRemUnknownTLVInfo OCTET STRING +} + +lldpRemUnknownTLVType OBJECT-TYPE + SYNTAX Integer32(9..126) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the value extracted from the type + field of the TLV." + REFERENCE + "IEEE 802.1AB-2005 10.3.5" + ::= { lldpRemUnknownTLVEntry 1 } + +lldpRemUnknownTLVInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..511)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the value extracted from the value + field of the TLV." + REFERENCE + "IEEE 802.1AB-2005 10.3.5" + ::= { lldpRemUnknownTLVEntry 2 } + +------------------------------------------------------------------------------ +-- Remote Systems Extension Table - Organizationally-Defined Information +------------------------------------------------------------------------------ +lldpRemOrgDefInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF LldpRemOrgDefInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more rows per physical network + connection which advertises the organizationally defined + information. + + Note that this table contains one or more rows of + organizationally defined information that is not recognized + by the local agent. + + If the local system is capable of recognizing any + organizationally defined information, appropriate extension + MIBs from the organization should be used for information + retrieval." + ::= { lldpRemoteSystemsData 4 } + +lldpRemOrgDefInfoEntry OBJECT-TYPE + SYNTAX LldpRemOrgDefInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the unrecognized organizationally + defined information advertised by the remote system. + The lldpRemTimeMark, lldpRemLocalPortNum, lldpRemIndex, + lldpRemOrgDefInfoOUI, lldpRemOrgDefInfoSubtype, and + lldpRemOrgDefInfoIndex are indexes to this table. If there is + an lldpRemOrgDefInfoEntry associated with a particular remote + system identified by the lldpRemLocalPortNum and lldpRemIndex, + there must be an lldpRemEntry associated with the same + instance (i.e, using same indexes.) When the lldpRemEntry + for the same index is removed from the lldpRemTable, the + associated lldpRemOrgDefInfoEntry should be removed from + the lldpRemOrgDefInfoTable. + + Entries may be created and deleted in this table by the + agent." + INDEX { lldpRemTimeMark, + lldpRemLocalPortNum, + lldpRemIndex, + lldpRemOrgDefInfoOUI, + lldpRemOrgDefInfoSubtype, + lldpRemOrgDefInfoIndex } + ::= { lldpRemOrgDefInfoTable 1 } + +LldpRemOrgDefInfoEntry ::= SEQUENCE { + lldpRemOrgDefInfoOUI OCTET STRING, + lldpRemOrgDefInfoSubtype Integer32, + lldpRemOrgDefInfoIndex Integer32, + lldpRemOrgDefInfo OCTET STRING +} + +lldpRemOrgDefInfoOUI OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(3)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Organizationally Unique Identifier (OUI), as defined + in IEEE std 802-2001, is a 24 bit (three octets) globally + unique assigned number referenced by various standards, + of the information received from the remote system." + REFERENCE + "IEEE 802.1AB-2005 9.5.1.3" + ::= { lldpRemOrgDefInfoEntry 1 } + +lldpRemOrgDefInfoSubtype OBJECT-TYPE + SYNTAX Integer32(1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The integer value used to identify the subtype of the + organizationally defined information received from the + remote system. + + The subtype value is required to identify different instances + of organizationally defined information that could not be + retrieved without a unique identifier that indicates the + particular type of information contained in the information + string." + REFERENCE + "IEEE 802.1AB-2005 9.5.1.4" + ::= { lldpRemOrgDefInfoEntry 2 } + +lldpRemOrgDefInfoIndex OBJECT-TYPE + SYNTAX Integer32(1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary local integer value + used by this agent to identify a particular unrecognized + organizationally defined information instance, unique only + for the lldpRemOrgDefInfoOUI and lldpRemOrgDefInfoSubtype + from the same remote system. + + An agent is encouraged to assign monotonically increasing + index values to new entries, starting with one, after each + reboot. It is considered unlikely that the + lldpRemOrgDefInfoIndex will wrap between reboots." + ::= { lldpRemOrgDefInfoEntry 3 } + +lldpRemOrgDefInfo OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(0..507)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The string value used to identify the organizationally + defined information of the remote system. The encoding for + this object should be as defined for SnmpAdminString TC." + REFERENCE + "IEEE 802.1AB-2005 9.5.1.5" + ::= { lldpRemOrgDefInfoEntry 4 } + + +-- +-- *********************************************************** +-- +-- L L D P M I B N O T I F I C A T I O N S +-- +-- *********************************************************** +-- + +lldpNotificationPrefix OBJECT IDENTIFIER ::= { lldpNotifications 0 } + +lldpRemTablesChange NOTIFICATION-TYPE + OBJECTS { + lldpStatsRemTablesInserts, + lldpStatsRemTablesDeletes, + lldpStatsRemTablesDrops, + lldpStatsRemTablesAgeouts + } + STATUS current + DESCRIPTION + "A lldpRemTablesChange notification is sent when the value + of lldpStatsRemTableLastChangeTime changes. It can be + utilized by an NMS to trigger LLDP remote systems table + maintenance polls. + + Note that transmission of lldpRemTablesChange + notifications are throttled by the agent, as specified by the + 'lldpNotificationInterval' object." + ::= { lldpNotificationPrefix 1 } + + +-- +-- *********************************************************** +-- +-- L L D P M I B C O N F O R M A N C E +-- +-- *********************************************************** +-- + +lldpCompliances OBJECT IDENTIFIER ::= { lldpConformance 1 } +lldpGroups OBJECT IDENTIFIER ::= { lldpConformance 2 } + +-- compliance statements + +lldpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the LLDP MIB." + MODULE -- this module + MANDATORY-GROUPS { lldpConfigGroup, + lldpConfigRxGroup, + lldpConfigTxGroup, + lldpStatsRxGroup, + lldpStatsTxGroup, + lldpLocSysGroup, + lldpRemSysGroup, + lldpNotificationsGroup + } + ::= { lldpCompliances 1 } + +-- MIB groupings + +lldpConfigGroup OBJECT-GROUP + OBJECTS { + lldpPortConfigAdminStatus + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + LLDP implementation behavior. + + This group is mandatory for agents which implement the LLDP." + ::= { lldpGroups 1 } + +lldpConfigRxGroup OBJECT-GROUP + OBJECTS { + lldpNotificationInterval, + lldpPortConfigNotificationEnable + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + LLDP implementation behavior. + + This group is mandatory for agents which implement the LLDP + and have the capability of receiving LLDP frames." + ::= { lldpGroups 2 } + +lldpConfigTxGroup OBJECT-GROUP + OBJECTS { + lldpMessageTxInterval, + lldpMessageTxHoldMultiplier, + lldpReinitDelay, + lldpTxDelay, + lldpPortConfigTLVsTxEnable, + lldpConfigManAddrPortsTxEnable + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + LLDP implementation behavior. + + This group is mandatory for agents which implement the LLDP + and have the capability of transmitting LLDP frames." + ::= { lldpGroups 3 } + +lldpStatsRxGroup OBJECT-GROUP + OBJECTS { + lldpStatsRemTablesLastChangeTime, + lldpStatsRemTablesInserts, + lldpStatsRemTablesDeletes, + lldpStatsRemTablesDrops, + lldpStatsRemTablesAgeouts, + lldpStatsRxPortFramesDiscardedTotal, + lldpStatsRxPortFramesErrors, + lldpStatsRxPortFramesTotal, + lldpStatsRxPortTLVsDiscardedTotal, + lldpStatsRxPortTLVsUnrecognizedTotal, + lldpStatsRxPortAgeoutsTotal + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + reception statistics. + + This group is mandatory for agents which implement the LLDP + and have the capability of receiving LLDP frames." + ::= { lldpGroups 4 } + +lldpStatsTxGroup OBJECT-GROUP + OBJECTS { + lldpStatsTxPortFramesTotal + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + transmission statistics. + + This group is mandatory for agents which implement the LLDP + and have the capability of transmitting LLDP frames." + ::= { lldpGroups 5 } + +lldpLocSysGroup OBJECT-GROUP + OBJECTS { + lldpLocChassisIdSubtype, + lldpLocChassisId, + lldpLocPortIdSubtype, + lldpLocPortId, + lldpLocPortDesc, + lldpLocSysDesc, + lldpLocSysName, + lldpLocSysCapSupported, + lldpLocSysCapEnabled, + lldpLocManAddrLen, + lldpLocManAddrIfSubtype, + lldpLocManAddrIfId, + lldpLocManAddrOID + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent LLDP + Local System Information. + + This group is mandatory for agents which implement the LLDP + and have the capability of transmitting LLDP frames." + ::= { lldpGroups 6 } + +lldpRemSysGroup OBJECT-GROUP + OBJECTS { + lldpRemChassisIdSubtype, + lldpRemChassisId, + lldpRemPortIdSubtype, + lldpRemPortId, + lldpRemPortDesc, + lldpRemSysName, + lldpRemSysDesc, + lldpRemSysCapSupported, + lldpRemSysCapEnabled, + lldpRemManAddrIfSubtype, + lldpRemManAddrIfId, + lldpRemManAddrOID, + lldpRemUnknownTLVInfo, + lldpRemOrgDefInfo + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent + LLDP Remote Systems Information. The objects represent the + information associated with the basic TLV set. Please note + that even the agent doesn't implement some of the optional + TLVs, it shall recognize all the optional TLV information + that the remote system may advertise. + + This group is mandatory for agents which implement the LLDP + and have the capability of receiving LLDP frames." + ::= { lldpGroups 7 } + +lldpNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + lldpRemTablesChange + } + STATUS current + DESCRIPTION + "The collection of notifications used to indicate LLDP MIB + data consistency and general status information. + + This group is mandatory for agents which implement the LLDP + and have the capability of receiving LLDP frames." + ::= { lldpGroups 8 } + +END diff --git a/mibs/lldp-mibs/P-BRIDGE.my b/mibs/lldp-mibs/P-BRIDGE.my new file mode 100644 index 0000000..54f4f20 --- /dev/null +++ b/mibs/lldp-mibs/P-BRIDGE.my @@ -0,0 +1,1102 @@ +P-BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1p devices +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Counter64 + FROM SNMPv2-SMI + TruthValue, TimeInterval, MacAddress, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dot1dTp, dot1dTpPort, dot1dBridge, + dot1dBasePortEntry, dot1dBasePort + FROM BRIDGE-MIB; + + + + + + + + +pBridgeMIB MODULE-IDENTITY + LAST-UPDATED "9908250000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + " Les Bell + Postal: 3Com Europe Ltd. + 3Com Centre, Boundary Way + Hemel Hempstead, Herts. HP2 7YU + UK + Phone: +44 1442 438025 + Email: Les_Bell@3Com.com + + Andrew Smith + Postal: Extreme Networks + 3585 Monroe St. + Santa Clara CA 95051 + USA + Phone: +1 408 579 2821 + Email: andrew@extremenetworks.com + + Paul Langille + Postal: Newbridge Networks + 5 Corporate Drive + Andover, MA 01810 + USA + Phone: +1 978 691 4665 + Email: langille@newbridge.com + + Anil Rijhsinghani + Postal: Cabletron Systems + 50 Minuteman Road + Andover, MA 01810 + USA + Phone: +1 978 684 1295 + Email: anil@cabletron.com + + Keith McCloghrie + Postal: cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + + DESCRIPTION + "The Bridge MIB Extension module for managing Priority + and Multicast Filtering, defined by IEEE 802.1D-1998." + + + + + + +-- revision history + + REVISION "9908250000Z" + DESCRIPTION + "Initial version, published as RFC 2674." + + ::= { dot1dBridge 6 } + +pBridgeMIBObjects OBJECT IDENTIFIER ::= { pBridgeMIB 1 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +EnabledStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A simple status value for the object." + SYNTAX INTEGER { enabled(1), disabled(2) } + +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- groups in the P-BRIDGE MIB +-- ------------------------------------------------------------- + +dot1dExtBase OBJECT IDENTIFIER ::= { pBridgeMIBObjects 1 } +dot1dPriority OBJECT IDENTIFIER ::= { pBridgeMIBObjects 2 } +dot1dGarp OBJECT IDENTIFIER ::= { pBridgeMIBObjects 3 } +dot1dGmrp OBJECT IDENTIFIER ::= { pBridgeMIBObjects 4 } + +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- the dot1dExtBase group +-- ------------------------------------------------------------- + +dot1dDeviceCapabilities OBJECT-TYPE + SYNTAX BITS { + dot1dExtendedFilteringServices(0), + -- can perform filtering of + -- individual multicast addresses + -- controlled by GMRP. + dot1dTrafficClasses(1), + -- can map user priority to + -- multiple traffic classes. + + + + + + + + dot1qStaticEntryIndividualPort(2), + -- dot1qStaticUnicastReceivePort & + -- dot1qStaticMulticastReceivePort + -- can represent non-zero entries. + dot1qIVLCapable(3), -- Independent VLAN Learning. + dot1qSVLCapable(4), -- Shared VLAN Learning. + dot1qHybridCapable(5), + -- both IVL & SVL simultaneously. + dot1qConfigurablePvidTagging(6), + -- whether the implementation + -- supports the ability to + -- override the default PVID + -- setting and its egress status + -- (VLAN-Tagged or Untagged) on + -- each port. + dot1dLocalVlanCapable(7) + -- can support multiple local + -- bridges, outside of the scope + -- of 802.1Q defined VLANs. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the optional parts of IEEE 802.1D and 802.1Q + that are implemented by this device and are manageable + through this MIB. Capabilities that are allowed on a + per-port basis are indicated in dot1dPortCapabilities." + REFERENCE + "ISO/IEC 15802-3 Section 5.2, + IEEE 802.1Q/D11 Section 5.2, 12.10.1.1.3/b/2" + ::= { dot1dExtBase 1 } + +dot1dTrafficClassesEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value true(1) indicates that Traffic Classes are + enabled on this bridge. When false(2), the bridge + operates with a single priority level for all traffic." + DEFVAL { true } + ::= { dot1dExtBase 2 } + +dot1dGmrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + + + "The administrative status requested by management for + GMRP. The value enabled(1) indicates that GMRP should + be enabled on this device, in all VLANs, on all ports + for which it has not been specifically disabled. When + disabled(2), GMRP is disabled, in all VLANs, on all + ports and all GMRP packets will be forwarded + transparently. This object affects both Applicant and + Registrar state machines. A transition from disabled(2) + to enabled(1) will cause a reset of all GMRP state + machines on all ports." + DEFVAL { enabled } + ::= { dot1dExtBase 3 } + +-- ------------------------------------------------------------- +-- Port Capabilities Table +-- ------------------------------------------------------------- + +dot1dPortCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains capabilities information about + every port that is associated with this bridge." + ::= { dot1dExtBase 4 } + +dot1dPortCapabilitiesEntry OBJECT-TYPE + SYNTAX Dot1dPortCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of capabilities information about this port + indexed by dot1dBasePort." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortCapabilitiesTable 1 } + +Dot1dPortCapabilitiesEntry ::= + SEQUENCE { + dot1dPortCapabilities + BITS + } + +dot1dPortCapabilities OBJECT-TYPE + SYNTAX BITS { + dot1qDot1qTagging(0), -- supports 802.1Q VLAN tagging of + -- frames and GVRP. + dot1qConfigurableAcceptableFrameTypes(1), + -- allows modified values of + + + + + + -- dot1qPortAcceptableFrameTypes. + dot1qIngressFiltering(2) + -- supports the discarding of any + -- frame received on a Port whose + -- VLAN classification does not + -- include that Port in its Member + -- set. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the parts of IEEE 802.1D and 802.1Q that are + optional on a per-port basis that are implemented by + this device and are manageable through this MIB." + REFERENCE + "ISO/IEC 15802-3 Section 5.2, + IEEE 802.1Q/D11 Section 5.2" + ::= { dot1dPortCapabilitiesEntry 1 } + +-- ------------------------------------------------------------- +-- the dot1dPriority group +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- Port Priority Table +-- ------------------------------------------------------------- + +dot1dPortPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every port that + is associated with this transparent bridge." + ::= { dot1dPriority 1 } + +dot1dPortPriorityEntry OBJECT-TYPE + SYNTAX Dot1dPortPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Default User Priorities for each port of a + transparent bridge. This is indexed by dot1dBasePort." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortPriorityTable 1 } + +Dot1dPortPriorityEntry ::= + SEQUENCE { + + + + + + dot1dPortDefaultUserPriority + INTEGER, + dot1dPortNumTrafficClasses + INTEGER + } + +dot1dPortDefaultUserPriority OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default ingress User Priority for this port. This + only has effect on media, such as Ethernet, that do not + support native User Priority." + ::= { dot1dPortPriorityEntry 1 } + +dot1dPortNumTrafficClasses OBJECT-TYPE + SYNTAX INTEGER (1..8) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of egress traffic classes supported on this + port. This object may optionally be read-only." + ::= { dot1dPortPriorityEntry 2 } + +-- ------------------------------------------------------------- +-- User Priority Regeneration Table +-- ------------------------------------------------------------- + +dot1dUserPriorityRegenTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dUserPriorityRegenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Regenerated User Priorities for each received + User Priority on each port of a bridge. The Regenerated + User Priority value may be used to index the Traffic + Class Table for each input port. This only has effect + on media that support native User Priority. The default + values for Regenerated User Priorities are the same as + the User Priorities." + REFERENCE + "ISO/IEC 15802-3 Section 6.4" + ::= { dot1dPriority 2 } + + + + + + + + + +dot1dUserPriorityRegenEntry OBJECT-TYPE + SYNTAX Dot1dUserPriorityRegenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A mapping of incoming User Priority to a Regenerated + User Priority." + INDEX { dot1dBasePort, dot1dUserPriority } + ::= { dot1dUserPriorityRegenTable 1 } + +Dot1dUserPriorityRegenEntry ::= + SEQUENCE { + dot1dUserPriority + INTEGER, + dot1dRegenUserPriority + INTEGER + } + +dot1dUserPriority OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The User Priority for a frame received on this port." + ::= { dot1dUserPriorityRegenEntry 1 } + +dot1dRegenUserPriority OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Regenerated User Priority the incoming User + Priority is mapped to for this port." + ::= { dot1dUserPriorityRegenEntry 2 } + +-- ------------------------------------------------------------- +-- Traffic Class Table +-- ------------------------------------------------------------- + +dot1dTrafficClassTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTrafficClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table mapping evaluated User Priority to Traffic + Class, for forwarding by the bridge. Traffic class is a + number in the range (0..(dot1dPortNumTrafficClasses-1))." + REFERENCE + + + + + + "ISO/IEC 15802-3 Table 7-2" + ::= { dot1dPriority 3 } + +dot1dTrafficClassEntry OBJECT-TYPE + SYNTAX Dot1dTrafficClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "User Priority to Traffic Class mapping." + INDEX { dot1dBasePort, dot1dTrafficClassPriority } + ::= { dot1dTrafficClassTable 1 } + +Dot1dTrafficClassEntry ::= + SEQUENCE { + dot1dTrafficClassPriority + INTEGER, + dot1dTrafficClass + INTEGER + } + +dot1dTrafficClassPriority OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Priority value determined for the received frame. + This value is equivalent to the priority indicated in + the tagged frame received, or one of the evaluated + priorities, determined according to the media-type. + + For untagged frames received from Ethernet media, this + value is equal to the dot1dPortDefaultUserPriority value + for the ingress port. + + For untagged frames received from non-Ethernet media, + this value is equal to the dot1dRegenUserPriority value + for the ingress port and media-specific user priority." + ::= { dot1dTrafficClassEntry 1 } + +dot1dTrafficClass OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Traffic Class the received frame is mapped to." + ::= { dot1dTrafficClassEntry 2 } + +-- ------------------------------------------------------------- + + + + + +-- Outbound Access Priority Table +-- ------------------------------------------------------------- + +dot1dPortOutboundAccessPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortOutboundAccessPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table mapping Regenerated User Priority to Outbound + Access Priority. This is a fixed mapping for all port + types, with two options for 802.5 Token Ring." + REFERENCE + "ISO/IEC 15802-3 Table 7-3" + ::= { dot1dPriority 4 } + +dot1dPortOutboundAccessPriorityEntry OBJECT-TYPE + SYNTAX Dot1dPortOutboundAccessPriorityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Regenerated User Priority to Outbound Access Priority + mapping." + INDEX { dot1dBasePort, dot1dRegenUserPriority } + ::= { dot1dPortOutboundAccessPriorityTable 1 } + +Dot1dPortOutboundAccessPriorityEntry ::= + SEQUENCE { + dot1dPortOutboundAccessPriority + INTEGER + } + +dot1dPortOutboundAccessPriority OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Outbound Access Priority the received frame is + mapped to." + ::= { dot1dPortOutboundAccessPriorityEntry 1 } + +-- ------------------------------------------------------------- +-- the dot1dGarp group +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- The GARP Port Table +-- ------------------------------------------------------------- + + + + + + +dot1dPortGarpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortGarpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GARP control information about every bridge + port. This is indexed by dot1dBasePort." + ::= { dot1dGarp 1 } + +dot1dPortGarpEntry OBJECT-TYPE + SYNTAX Dot1dPortGarpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "GARP control information for a bridge port." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortGarpTable 1 } + +Dot1dPortGarpEntry ::= + SEQUENCE { + dot1dPortGarpJoinTime + TimeInterval, + dot1dPortGarpLeaveTime + TimeInterval, + dot1dPortGarpLeaveAllTime + TimeInterval + } + +dot1dPortGarpJoinTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP Join time, in centiseconds." + DEFVAL { 20 } + ::= { dot1dPortGarpEntry 1 } + +dot1dPortGarpLeaveTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP Leave time, in centiseconds." + DEFVAL { 60 } + ::= { dot1dPortGarpEntry 2 } + + + + + + + + +dot1dPortGarpLeaveAllTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP LeaveAll time, in centiseconds." + DEFVAL { 1000 } + ::= { dot1dPortGarpEntry 3 } + +-- ------------------------------------------------------------- +-- The GMRP Port Configuration and Status Table +-- ------------------------------------------------------------- + +dot1dPortGmrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortGmrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GMRP control and status information about + every bridge port. Augments the dot1dBasePortTable." + ::= { dot1dGmrp 1 } + +dot1dPortGmrpEntry OBJECT-TYPE + SYNTAX Dot1dPortGmrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "GMRP control and status information for a bridge port." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1dPortGmrpTable 1 } + +Dot1dPortGmrpEntry ::= + SEQUENCE { + dot1dPortGmrpStatus + EnabledStatus, + dot1dPortGmrpFailedRegistrations + Counter32, + dot1dPortGmrpLastPduOrigin + MacAddress + } + +dot1dPortGmrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + + + + + + + + + DESCRIPTION + "The administrative state of GMRP operation on this port. The + value enabled(1) indicates that GMRP is enabled on this port + in all VLANs as long as dot1dGmrpStatus is also enabled(1). + A value of disabled(2) indicates that GMRP is disabled on + this port in all VLANs: any GMRP packets received will + be silently discarded and no GMRP registrations will be + propagated from other ports. Setting this to a value of + enabled(1) will be stored by the agent but will only take + effect on the GMRP protocol operation if dot1dGmrpStatus + also indicates the value enabled(1). This object affects + all GMRP Applicant and Registrar state machines on this + port. A transition from disabled(2) to enabled(1) will + cause a reset of all GMRP state machines on this port." + DEFVAL { enabled } + ::= { dot1dPortGmrpEntry 1 } + +dot1dPortGmrpFailedRegistrations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of failed GMRP registrations, for any + reason, in all VLANs, on this port." + ::= { dot1dPortGmrpEntry 2 } + +dot1dPortGmrpLastPduOrigin OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Source MAC Address of the last GMRP message + received on this port." + ::= { dot1dPortGmrpEntry 3 } + +-- ------------------------------------------------------------- +-- High Capacity Port Table for Transparent Bridges +-- ------------------------------------------------------------- + +dot1dTpHCPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpHCPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every high + capacity port that is associated with this transparent + bridge." + ::= { dot1dTp 5 } + + + + + +dot1dTpHCPortEntry OBJECT-TYPE + SYNTAX Dot1dTpHCPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics information for each high capacity port of a + transparent bridge." + INDEX { dot1dTpPort } + ::= { dot1dTpHCPortTable 1 } + +Dot1dTpHCPortEntry ::= + SEQUENCE { + dot1dTpHCPortInFrames + Counter64, + dot1dTpHCPortOutFrames + Counter64, + dot1dTpHCPortInDiscards + Counter64 + } + +dot1dTpHCPortInFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that have been received by this + port from its segment. Note that a frame received on + the interface corresponding to this port is only counted + by this object if and only if it is for a protocol being + processed by the local bridging function, including + bridge management frames." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpHCPortEntry 1 } + +dot1dTpHCPortOutFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that have been transmitted by this + port to its segment. Note that a frame transmitted on + the interface corresponding to this port is only counted + by this object if and only if it is for a protocol being + processed by the local bridging function, including + bridge management frames." + + + + + + + + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpHCPortEntry 2 } + +dot1dTpHCPortInDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of valid frames that have been received by this + port from its segment which were discarded (i.e., + filtered) by the Forwarding Process." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpHCPortEntry 3 } + +-- ---------------------------------------------------- +-- Upper part of High Capacity Port Table for Transparent Bridges +-- ---------------------------------------------------- + +dot1dTpPortOverflowTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpPortOverflowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains the most-significant bits of + statistics counters for ports that are associated with this + transparent bridge that are on high capacity interfaces, as + defined in the conformance clauses for this table. This table + is provided as a way to read 64-bit counters for agents which + support only SNMPv1. + + Note that the reporting of most-significant and + least-significant counter bits separately runs the risk of + missing an overflow of the lower bits in the interval between + sampling. The manager must be aware of this possibility, even + within the same varbindlist, when interpreting the results of + a request or asynchronous notification." + ::= { dot1dTp 6 } + +dot1dTpPortOverflowEntry OBJECT-TYPE + SYNTAX Dot1dTpPortOverflowEntry + MAX-ACCESS not-accessible + + + + + + + + + + + STATUS current + DESCRIPTION + "The most significant bits of statistics counters for a high + capacity interface of a transparent bridge. Each object is + associated with a corresponding object in dot1dTpPortTable + which indicates the least significant bits of the counter." + INDEX { dot1dTpPort } + ::= { dot1dTpPortOverflowTable 1 } + +Dot1dTpPortOverflowEntry ::= + SEQUENCE { + dot1dTpPortInOverflowFrames + Counter32, + dot1dTpPortOutOverflowFrames + Counter32, + dot1dTpPortInOverflowDiscards + Counter32 + } + +dot1dTpPortInOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated dot1dTpPortInFrames + counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpPortOverflowEntry 1 } + +dot1dTpPortOutOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated dot1dTpPortOutFrames + counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpPortOverflowEntry 2 } + +dot1dTpPortInOverflowDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + + + + + + DESCRIPTION + "The number of times the associated + dot1dTpPortInDiscards counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1dTpPortOverflowEntry 3 } + +-- ------------------------------------------------------------- +-- IEEE 802.1p MIB - Conformance Information +-- ------------------------------------------------------------- + +pBridgeConformance OBJECT IDENTIFIER ::= { pBridgeMIB 2 } + +pBridgeGroups OBJECT IDENTIFIER ::= { pBridgeConformance 1 } + +pBridgeCompliances OBJECT IDENTIFIER + ::= { pBridgeConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +pBridgeExtCapGroup OBJECT-GROUP + OBJECTS { + dot1dDeviceCapabilities, + dot1dPortCapabilities + } + STATUS current + DESCRIPTION + "A collection of objects indicating the optional + capabilites of the device." + ::= { pBridgeGroups 1 } + +pBridgeDeviceGmrpGroup OBJECT-GROUP + OBJECTS { + dot1dGmrpStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing device-level control + for the Multicast Filtering extended bridge services." + ::= { pBridgeGroups 2 } + + + + + + + + + + + +pBridgeDevicePriorityGroup OBJECT-GROUP + OBJECTS { + dot1dTrafficClassesEnabled + } + STATUS current + DESCRIPTION + "A collection of objects providing device-level control + for the Priority services." + ::= { pBridgeGroups 3 } + +pBridgeDefaultPriorityGroup OBJECT-GROUP + OBJECTS { + dot1dPortDefaultUserPriority + } + STATUS current + DESCRIPTION + "A collection of objects defining the User Priority + applicable to each port for media which do not support + native User Priority." + ::= { pBridgeGroups 4 } + +pBridgeRegenPriorityGroup OBJECT-GROUP + OBJECTS { + dot1dRegenUserPriority + } + STATUS current + DESCRIPTION + "A collection of objects defining the User Priorities + applicable to each port for media which support native + User Priority." + ::= { pBridgeGroups 5 } + +pBridgePriorityGroup OBJECT-GROUP + OBJECTS { + dot1dPortNumTrafficClasses, + dot1dTrafficClass + } + STATUS current + DESCRIPTION + "A collection of objects defining the traffic classes + within a bridge for each evaluated User Priority." + ::= { pBridgeGroups 6 } + + + + + + + + + + + +pBridgeAccessPriorityGroup OBJECT-GROUP + OBJECTS { + dot1dPortOutboundAccessPriority + } + STATUS current + DESCRIPTION + "A collection of objects defining the media dependent + outbound access level for each priority." + ::= { pBridgeGroups 7 } + +pBridgePortGarpGroup OBJECT-GROUP + OBJECTS { + dot1dPortGarpJoinTime, + dot1dPortGarpLeaveTime, + dot1dPortGarpLeaveAllTime + } + STATUS current + DESCRIPTION + "A collection of objects providing port level control + and status information for GARP operation." + ::= { pBridgeGroups 8 } + +pBridgePortGmrpGroup OBJECT-GROUP + OBJECTS { + dot1dPortGmrpStatus, + dot1dPortGmrpFailedRegistrations, + dot1dPortGmrpLastPduOrigin + } + STATUS current + DESCRIPTION + "A collection of objects providing port level control + and status information for GMRP operation." + ::= { pBridgeGroups 9 } + +pBridgeHCPortGroup OBJECT-GROUP + OBJECTS { + dot1dTpHCPortInFrames, + dot1dTpHCPortOutFrames, + dot1dTpHCPortInDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing 64-bit statistics + counters for high capacity bridge ports." + ::= { pBridgeGroups 10 } + + + + + + + + +pBridgePortOverflowGroup OBJECT-GROUP + OBJECTS { + dot1dTpPortInOverflowFrames, + dot1dTpPortOutOverflowFrames, + dot1dTpPortInOverflowDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing overflow statistics + counters for high capacity bridge ports." + ::= { pBridgeGroups 11 } + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +pBridgeCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of Priority + and Multicast Filtering extended bridging services." + + MODULE + MANDATORY-GROUPS { pBridgeExtCapGroup } + + GROUP pBridgeDeviceGmrpGroup + DESCRIPTION + "This group is mandatory for devices supporting the GMRP + application, defined by IEEE 802.1D Extended Filtering + Services." + + GROUP pBridgeDevicePriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE + 802.1D." + + GROUP pBridgeDefaultPriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by the + extended bridge services with media types, such as + Ethernet, that do not support native User Priority." + + + + + + + + + + + GROUP pBridgeRegenPriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE 802.1D + and which have interface media types that support + native User Priority e.g. IEEE 802.5." + + GROUP pBridgePriorityGroup + DESCRIPTION + "This group is mandatory only for devices supporting + the priority forwarding operations defined by IEEE 802.1D." + + GROUP pBridgeAccessPriorityGroup + DESCRIPTION + "This group is optional and is relevant only for devices + supporting the priority forwarding operations defined by + IEEE 802.1D and which have interface media types that support + native Access Priority e.g. IEEE 802.5." + + GROUP pBridgePortGarpGroup + DESCRIPTION + "This group is mandatory for devices supporting any + of the GARP applications: e.g. GMRP, defined by the + extended filtering services of 802.1D; or GVRP, + defined by 802.1Q (refer to the Q-BRIDGE-MIB for + conformance statements for GVRP)." + + GROUP pBridgePortGmrpGroup + DESCRIPTION + "This group is mandatory for devices supporting the + GMRP application, as defined by IEEE 802.1D Extended + Filtering Services." + + GROUP pBridgeHCPortGroup + DESCRIPTION + "Support for this group in a device is mandatory for those + bridge ports which map to network interfaces that have the + value of the corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP pBridgePortOverflowGroup + DESCRIPTION + "Support for this group in a device is mandatory for those + bridge ports which map to network interfaces that have the + value of the corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + + + + + + + OBJECT dot1dPortNumTrafficClasses + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot1dTrafficClass + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot1dRegenUserPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pBridgeCompliances 1 } + +END diff --git a/mibs/lldp-mibs/Q-BRIDGE-MIB b/mibs/lldp-mibs/Q-BRIDGE-MIB new file mode 100644 index 0000000..e30d906 --- /dev/null +++ b/mibs/lldp-mibs/Q-BRIDGE-MIB @@ -0,0 +1,2489 @@ +Q-BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1Q Devices +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Counter64, Unsigned32, TimeTicks, Integer32 + FROM SNMPv2-SMI + RowStatus, TruthValue, TEXTUAL-CONVENTION, MacAddress + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dot1dBridge, dot1dBasePortEntry, dot1dBasePort + FROM BRIDGE-MIB + EnabledStatus + FROM P-BRIDGE-MIB + TimeFilter + FROM RMON2-MIB; + +qBridgeMIB MODULE-IDENTITY + LAST-UPDATED "200601090000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: Bridge-mib@ietf.org + ietfmibs@ops.ietf.org + + David Levi + Postal: Nortel Networks + 4655 Great America Parkway + Santa Clara, CA 95054 + USA + Phone: +1 865 686 0432 + Email: dlevi@nortel.com + + David Harrington + Postal: Effective Software + 50 Harding Rd. + Portsmouth, NH 03801 + USA + Phone: +1 603 436 8634 + Email: ietfdbh@comcast.net + + + + Les Bell + Postal: Hemel Hempstead, Herts. HP2 7YU + UK + Email: elbell@ntlworld.com + + Andrew Smith + Postal: Beijing Harbour Networks + Jiuling Building + 21 North Xisanhuan Ave. + Beijing, 100089 + PRC + Fax: +1 415 345 1827 + Email: ah_smith@acm.org + + Paul Langille + Postal: Newbridge Networks + 5 Corporate Drive + Andover, MA 01810 + USA + Phone: +1 978 691 4665 + Email: langille@newbridge.com + + Anil Rijhsinghani + Postal: Accton Technology Corporation + 5 Mount Royal Ave + Marlboro, MA 01752 + USA + Phone: + Email: anil@accton.com + + Keith McCloghrie + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The VLAN Bridge MIB module for managing Virtual Bridged + Local Area Networks, as defined by IEEE 802.1Q-2003, + including Restricted Vlan Registration defined by + IEEE 802.1u-2001 and Vlan Classification defined by + IEEE 802.1v-2001. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4363; See the RFC itself for + full legal notices." + REVISION "200601090000Z" + + + + DESCRIPTION + "Added Vlan TEXTUAL-CONVENTIONs, + dot1qPortRestrictedVlanRegistration, dot1vProtocol subtree, + qBridgeClassificationDeviceGroup, qBridgePortGroup2, + qBridgeClassificationPortGroup, and qBridgeCompliance2. + Clarified dot1qForwardAllStaticPorts, + qPortAcceptableFrameTypes, and qBridgeCompliance. + Deprecated qBridgePortGroup and qBridgeCompliance." + + REVISION "199908250000Z" + DESCRIPTION + "The VLAN Bridge MIB module for managing Virtual Bridged + Local Area Networks, as defined by IEEE 802.1Q-1998. + + Initial version, published as RFC 2674." + + ::= { dot1dBridge 7 } + +qBridgeMIBObjects OBJECT IDENTIFIER ::= { qBridgeMIB 1 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +PortList ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each octet within this value specifies a set of eight + ports, with the first octet specifying ports 1 through + 8, the second octet specifying ports 9 through 16, etc. + Within each octet, the most significant bit represents + the lowest numbered port, and the least significant bit + represents the highest numbered port. Thus, each port + of the bridge is represented by a single bit within the + value of this object. If that bit has a value of '1', + then that port is included in the set of ports; the port + is not included if its bit has a value of '0'." + SYNTAX OCTET STRING + +VlanIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A value used to index per-VLAN tables: values of 0 and + 4095 are not permitted. If the value is between 1 and + 4094 inclusive, it represents an IEEE 802.1Q VLAN-ID with + global scope within a given bridged domain (see VlanId + textual convention). If the value is greater than 4095, + + + + then it represents a VLAN with scope local to the + particular agent, i.e., one without a global VLAN-ID + assigned to it. Such VLANs are outside the scope of + IEEE 802.1Q, but it is convenient to be able to manage them + in the same way using this MIB." + SYNTAX Unsigned32 + +VlanId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a VLAN. This + is the 12-bit VLAN-ID used in the VLAN Tag header. + The range is defined by the REFERENCEd specification." + REFERENCE + "IEEE Std 802.1Q 2003 Edition, Virtual Bridged + Local Area Networks." + SYNTAX Integer32 (1..4094) + +VlanIdOrAny ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a specific VLAN, + or any VLAN. The special value of 4095 is used to + indicate a wildcard, i.e., any VLAN. This can be used + in any situation where an object or table entry must + refer either to a specific VLAN or to any VLAN. + + Note that a MIB object that is defined using this + TEXTUAL-CONVENTION should clarify the meaning of + 'any VLAN' (i.e., the special value 4095)." + SYNTAX Integer32 (1..4094 | 4095) + +VlanIdOrNone ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a specific VLAN, + or no VLAN. The special value of zero is used to + indicate that no VLAN-ID is present or used. This can + be used in any situation where an object or a table entry + must refer either to a specific VLAN, or to no VLAN. + + Note that a MIB object that is defined using this + TEXTUAL-CONVENTION should clarify the meaning of + 'no VLAN' (i.e., the special value 0)." + SYNTAX Integer32 (0 | 1..4094) + + + +VlanIdOrAnyOrNone ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The VLAN-ID that uniquely identifies a specific VLAN, + any VLAN, or no VLAN. The special values 0 and 4095 + have the same meaning as described in the VlanIdOrAny + and VlanIdOrNone TEXTUAL-CONVENTIONs. + + Note that a MIB object that is defined using this + TEXTUAL-CONVENTION should clarify the meaning of + 'any VLAN' and 'no VLAN' (i.e., the special values + 0 and 4095)." + SYNTAX Integer32 (0 | 1..4094 | 4095) + +-- ------------------------------------------------------------- +-- subtrees in the Q-BRIDGE MIB +-- ------------------------------------------------------------- + +dot1qBase OBJECT IDENTIFIER ::= { qBridgeMIBObjects 1 } +dot1qTp OBJECT IDENTIFIER ::= { qBridgeMIBObjects 2 } +dot1qStatic OBJECT IDENTIFIER ::= { qBridgeMIBObjects 3 } +dot1qVlan OBJECT IDENTIFIER ::= { qBridgeMIBObjects 4 } +dot1vProtocol OBJECT IDENTIFIER ::= { qBridgeMIBObjects 5 } + +-- ------------------------------------------------------------- +-- dot1qBase subtree +-- ------------------------------------------------------------- + +dot1qVlanVersionNumber OBJECT-TYPE + SYNTAX INTEGER { + version1(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of IEEE 802.1Q that this device + supports." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.1" + ::= { dot1qBase 1 } + +dot1qMaxVlanId OBJECT-TYPE + SYNTAX VlanId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum IEEE 802.1Q VLAN-ID that this device + + + + supports." + REFERENCE + "IEEE 802.1Q/D11 Section 9.3.2.3" + ::= { dot1qBase 2 } + +dot1qMaxSupportedVlans OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of IEEE 802.1Q VLANs that this + device supports." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.1" + ::= { dot1qBase 3 } + +dot1qNumVlans OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of IEEE 802.1Q VLANs that are + configured in this device." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.1.1" + ::= { dot1qBase 4 } + +dot1qGvrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status requested by management for + GVRP. The value enabled(1) indicates that GVRP should + be enabled on this device, on all ports for which it has + not been specifically disabled. When disabled(2), GVRP + is disabled on all ports, and all GVRP packets will be + forwarded transparently. This object affects all GVRP + Applicant and Registrar state machines. A transition + from disabled(2) to enabled(1) will cause a reset of all + GVRP state machines on all ports. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { enabled } + ::= { dot1qBase 5 } + +-- ------------------------------------------------------------- + + + +-- the dot1qTp subtree +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- the current Filtering Database Table +-- ------------------------------------------------------------- + +dot1qFdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains configuration and control + information for each Filtering Database currently + operating on this device. Entries in this table appear + automatically when VLANs are assigned FDB IDs in the + dot1qVlanCurrentTable." + ::= { dot1qTp 1 } + +dot1qFdbEntry OBJECT-TYPE + SYNTAX Dot1qFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a specific Filtering Database." + INDEX { dot1qFdbId } + ::= { dot1qFdbTable 1 } + +Dot1qFdbEntry ::= + SEQUENCE { + dot1qFdbId + Unsigned32, + dot1qFdbDynamicCount + Counter32 + } + +dot1qFdbId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identity of this Filtering Database." + ::= { dot1qFdbEntry 1 } + +dot1qFdbDynamicCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current number of dynamic entries in this + Filtering Database." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.1.1.3" + ::= { dot1qFdbEntry 2 } + +-- ------------------------------------------------------------- +-- Multiple Forwarding Databases for 802.1Q Transparent Devices +-- This table is an alternative to the dot1dTpFdbTable, +-- previously defined for 802.1D devices that only support a +-- single Forwarding Database. +-- ------------------------------------------------------------- + +dot1qTpFdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about unicast entries + for which the device has forwarding and/or filtering + information. This information is used by the + transparent bridging function in determining how to + propagate a received frame." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7" + ::= { dot1qTp 2 } + +dot1qTpFdbEntry OBJECT-TYPE + SYNTAX Dot1qTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a specific unicast MAC address for + which the device has some forwarding and/or filtering + information." + INDEX { dot1qFdbId, dot1qTpFdbAddress } + ::= { dot1qTpFdbTable 1 } + +Dot1qTpFdbEntry ::= + SEQUENCE { + dot1qTpFdbAddress + MacAddress, + dot1qTpFdbPort + Integer32, + dot1qTpFdbStatus + INTEGER + } + + + +dot1qTpFdbAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unicast MAC address for which the device has + forwarding and/or filtering information." + ::= { dot1qTpFdbEntry 1 } + +dot1qTpFdbPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Either the value '0', or the port number of the port on + which a frame having a source address equal to the value + of the corresponding instance of dot1qTpFdbAddress has + been seen. A value of '0' indicates that the port + number has not been learned but that the device does + have some forwarding/filtering information about this + address (e.g., in the dot1qStaticUnicastTable). + Implementors are encouraged to assign the port value to + this object whenever it is learned, even for addresses + for which the corresponding value of dot1qTpFdbStatus is + not learned(3)." + ::= { dot1qTpFdbEntry 2 } + +dot1qTpFdbStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + learned(3), + self(4), + mgmt(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this entry. The meanings of the values + are: + other(1) - none of the following. This may include + the case where some other MIB object (not the + corresponding instance of dot1qTpFdbPort, nor an + entry in the dot1qStaticUnicastTable) is being + used to determine if and how frames addressed to + the value of the corresponding instance of + dot1qTpFdbAddress are being forwarded. + invalid(2) - this entry is no longer valid (e.g., it + + + + was learned but has since aged out), but has not + yet been flushed from the table. + learned(3) - the value of the corresponding instance + of dot1qTpFdbPort was learned and is being used. + self(4) - the value of the corresponding instance of + dot1qTpFdbAddress represents one of the device's + addresses. The corresponding instance of + dot1qTpFdbPort indicates which of the device's + ports has this address. + mgmt(5) - the value of the corresponding instance of + dot1qTpFdbAddress is also the value of an + existing instance of dot1qStaticAddress." + ::= { dot1qTpFdbEntry 3 } + +-- ------------------------------------------------------------- +-- Dynamic Group Registration Table +-- ------------------------------------------------------------- + +dot1qTpGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qTpGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information for VLANs + configured into the bridge by (local or network) + management, or learned dynamically, specifying the set of + ports to which frames received on a VLAN for this FDB + and containing a specific Group destination address are + allowed to be forwarded." + ::= { dot1qTp 3 } + +dot1qTpGroupEntry OBJECT-TYPE + SYNTAX Dot1qTpGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the bridge by + management, or learned dynamically, specifying the set of + ports to which frames received on a VLAN and containing + a specific Group destination address are allowed to be + forwarded. The subset of these ports learned dynamically + is also provided." + INDEX { dot1qVlanIndex, dot1qTpGroupAddress } + ::= { dot1qTpGroupTable 1 } + +Dot1qTpGroupEntry ::= + SEQUENCE { + dot1qTpGroupAddress + + + + MacAddress, + dot1qTpGroupEgressPorts + PortList, + dot1qTpGroupLearnt + PortList + } + +dot1qTpGroupAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination Group MAC address in a frame to which + this entry's filtering information applies." + ::= { dot1qTpGroupEntry 1 } + +dot1qTpGroupEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports, in this VLAN, to which + frames destined for this Group MAC address are currently + being explicitly forwarded. This does not include ports + for which this address is only implicitly forwarded, in + the dot1qForwardAllPorts list." + ::= { dot1qTpGroupEntry 2 } + +dot1qTpGroupLearnt OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subset of ports in dot1qTpGroupEgressPorts that + were learned by GMRP or some other dynamic mechanism, in + this Filtering database." + ::= { dot1qTpGroupEntry 3 } + +-- ------------------------------------------------------------- +-- Service Requirements subtree +-- ------------------------------------------------------------- + +dot1qForwardAllTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qForwardAllEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing forwarding information for each + + + + VLAN, specifying the set of ports to which forwarding of + all multicasts applies, configured statically by + management or dynamically by GMRP. An entry appears in + this table for all VLANs that are currently + instantiated." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.2, 12.7.7" + ::= { dot1qTp 4 } + +dot1qForwardAllEntry OBJECT-TYPE + SYNTAX Dot1qForwardAllEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Forwarding information for a VLAN, specifying the set + of ports to which all multicasts should be forwarded, + configured statically by management or dynamically by + GMRP." + INDEX { dot1qVlanIndex } + ::= { dot1qForwardAllTable 1 } + +Dot1qForwardAllEntry ::= + SEQUENCE { + dot1qForwardAllPorts + PortList, + dot1qForwardAllStaticPorts + PortList, + dot1qForwardAllForbiddenPorts + PortList + } + +dot1qForwardAllPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports in this VLAN to which all + multicast group-addressed frames are to be forwarded. + This includes ports for which this need has been + determined dynamically by GMRP, or configured statically + by management." + ::= { dot1qForwardAllEntry 1 } + +dot1qForwardAllStaticPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The set of ports configured by management in this VLAN + to which all multicast group-addressed frames are to be + forwarded. Ports entered in this list will also appear + in the complete set shown by dot1qForwardAllPorts. This + value will be restored after the device is reset. This + only applies to ports that are members of the VLAN, + defined by dot1qVlanCurrentEgressPorts. A port may not + be added in this set if it is already a member of the + set of ports in dot1qForwardAllForbiddenPorts. The + default value is a string of ones of appropriate length, + to indicate the standard behaviour of using basic + filtering services, i.e., forward all multicasts to all + ports. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardAllEntry 2 } + +dot1qForwardAllForbiddenPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports configured by management in this VLAN + for which the Service Requirement attribute Forward All + Multicast Groups may not be dynamically registered by + GMRP. This value will be restored after the device is + reset. A port may not be added in this set if it is + already a member of the set of ports in + dot1qForwardAllStaticPorts. The default value is a + string of zeros of appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardAllEntry 3 } + +dot1qForwardUnregisteredTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qForwardUnregisteredEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing forwarding information for each + VLAN, specifying the set of ports to which forwarding of + multicast group-addressed frames for which no + more specific forwarding information applies. This is + configured statically by management and determined + dynamically by GMRP. An entry appears in this table for + all VLANs that are currently instantiated." + + + + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.2, 12.7.7" + ::= { dot1qTp 5 } + +dot1qForwardUnregisteredEntry OBJECT-TYPE + SYNTAX Dot1qForwardUnregisteredEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Forwarding information for a VLAN, specifying the set + of ports to which all multicasts for which there is no + more specific forwarding information shall be forwarded. + This is configured statically by management or + dynamically by GMRP." + INDEX { dot1qVlanIndex } + ::= { dot1qForwardUnregisteredTable 1 } + +Dot1qForwardUnregisteredEntry ::= + SEQUENCE { + dot1qForwardUnregisteredPorts + PortList, + dot1qForwardUnregisteredStaticPorts + PortList, + dot1qForwardUnregisteredForbiddenPorts + PortList + } + +dot1qForwardUnregisteredPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete set of ports in this VLAN to which + multicast group-addressed frames for which there is no + more specific forwarding information will be forwarded. + This includes ports for which this need has been + determined dynamically by GMRP, or configured statically + by management." + ::= { dot1qForwardUnregisteredEntry 1 } + +dot1qForwardUnregisteredStaticPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports configured by management, in this + VLAN, to which multicast group-addressed frames for + which there is no more specific forwarding information + + + + are to be forwarded. Ports entered in this list will + also appear in the complete set shown by + dot1qForwardUnregisteredPorts. This value will be + restored after the device is reset. A port may not be + added in this set if it is already a member of the set + of ports in dot1qForwardUnregisteredForbiddenPorts. The + default value is a string of zeros of appropriate + length, although this has no effect with the default + value of dot1qForwardAllStaticPorts. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardUnregisteredEntry 2 } + +dot1qForwardUnregisteredForbiddenPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports configured by management in this VLAN + for which the Service Requirement attribute Forward + Unregistered Multicast Groups may not be dynamically + registered by GMRP. This value will be restored after + the device is reset. A port may not be added in this + set if it is already a member of the set of ports in + dot1qForwardUnregisteredStaticPorts. The default value + is a string of zeros of appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qForwardUnregisteredEntry 3 } + +-- ------------------------------------------------------------- +-- The Static (Destination-Address Filtering) Database +-- ------------------------------------------------------------- + +dot1qStaticUnicastTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qStaticUnicastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information for Unicast + MAC addresses for each Filtering Database, configured + into the device by (local or network) management + specifying the set of ports to which frames received + from specific ports and containing specific unicast + destination addresses are allowed to be forwarded. A + value of zero in this table (as the port number from + + + + which frames with a specific destination address are + received) is used to specify all ports for which there + is no specific entry in this table for that particular + destination address. Entries are valid for unicast + addresses only." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7, + ISO/IEC 15802-3 Section 7.9.1" + ::= { dot1qStatic 1 } + +dot1qStaticUnicastEntry OBJECT-TYPE + SYNTAX Dot1qStaticUnicastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the device by + (local or network) management specifying the set of + ports to which frames received from a specific port and + containing a specific unicast destination address are + allowed to be forwarded." + INDEX { + dot1qFdbId, + dot1qStaticUnicastAddress, + dot1qStaticUnicastReceivePort + } + ::= { dot1qStaticUnicastTable 1 } + +Dot1qStaticUnicastEntry ::= + SEQUENCE { + dot1qStaticUnicastAddress + MacAddress, + dot1qStaticUnicastReceivePort + Integer32, + dot1qStaticUnicastAllowedToGoTo + PortList, + dot1qStaticUnicastStatus + INTEGER + } + +dot1qStaticUnicastAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination MAC address in a frame to which this + entry's filtering information applies. This object must + take the value of a unicast address." + ::= { dot1qStaticUnicastEntry 1 } + + + +dot1qStaticUnicastReceivePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Either the value '0' or the port number of the port + from which a frame must be received in order for this + entry's filtering information to apply. A value of zero + indicates that this entry applies on all ports of the + device for which there is no other applicable entry." + ::= { dot1qStaticUnicastEntry 2 } + +dot1qStaticUnicastAllowedToGoTo OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports for which a frame with a specific + unicast address will be flooded in the event that it + has not been learned. It also specifies the set of + ports on which a specific unicast address may be dynamically + learned. The dot1qTpFdbTable will have an equivalent + entry with a dot1qTpFdbPort value of '0' until this + address has been learned, at which point it will be updated + with the port the address has been seen on. This only + applies to ports that are members of the VLAN, defined + by dot1qVlanCurrentEgressPorts. The default value of + this object is a string of ones of appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Table 8-5, ISO/IEC 15802-3 Table 7-5" + ::= { dot1qStaticUnicastEntry 3 } + +dot1qStaticUnicastStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + permanent(3), + deleteOnReset(4), + deleteOnTimeout(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + other(1) - this entry is currently in use, but + + + + the conditions under which it will remain + so differ from the following values. + invalid(2) - writing this value to the object + removes the corresponding entry. + permanent(3) - this entry is currently in use + and will remain so after the next reset of + the bridge. + deleteOnReset(4) - this entry is currently in + use and will remain so until the next + reset of the bridge. + deleteOnTimeout(5) - this entry is currently in + use and will remain so until it is aged out. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { permanent } + ::= { dot1qStaticUnicastEntry 4 } + +dot1qStaticMulticastTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qStaticMulticastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information for Multicast + and Broadcast MAC addresses for each VLAN, configured + into the device by (local or network) management + specifying the set of ports to which frames received + from specific ports and containing specific Multicast + and Broadcast destination addresses are allowed to be + forwarded. A value of zero in this table (as the port + number from which frames with a specific destination + address are received) is used to specify all ports for + which there is no specific entry in this table for that + particular destination address. Entries are valid for + Multicast and Broadcast addresses only." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7, + ISO/IEC 15802-3 Section 7.9.1" + ::= { dot1qStatic 2 } + +dot1qStaticMulticastEntry OBJECT-TYPE + SYNTAX Dot1qStaticMulticastEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the device by + (local or network) management specifying the set of + ports to which frames received from this specific port + + + + for this VLAN and containing this Multicast or Broadcast + destination address are allowed to be forwarded." + INDEX { + dot1qVlanIndex, + dot1qStaticMulticastAddress, + dot1qStaticMulticastReceivePort + } + ::= { dot1qStaticMulticastTable 1 } + +Dot1qStaticMulticastEntry ::= + SEQUENCE { + dot1qStaticMulticastAddress + MacAddress, + dot1qStaticMulticastReceivePort + Integer32, + dot1qStaticMulticastStaticEgressPorts + PortList, + dot1qStaticMulticastForbiddenEgressPorts + PortList, + dot1qStaticMulticastStatus + INTEGER + } + +dot1qStaticMulticastAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination MAC address in a frame to which this + entry's filtering information applies. This object must + take the value of a Multicast or Broadcast address." + ::= { dot1qStaticMulticastEntry 1 } + +dot1qStaticMulticastReceivePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Either the value '0' or the port number of the port + from which a frame must be received in order for this + entry's filtering information to apply. A value of zero + indicates that this entry applies on all ports of the + device for which there is no other applicable entry." + ::= { dot1qStaticMulticastEntry 2 } + +dot1qStaticMulticastStaticEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The set of ports to which frames received from a + specific port and destined for a specific Multicast or + Broadcast MAC address must be forwarded, regardless of + any dynamic information, e.g., from GMRP. A port may not + be added in this set if it is already a member of the + set of ports in dot1qStaticMulticastForbiddenEgressPorts. + The default value of this object is a string of ones of + appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qStaticMulticastEntry 3 } + +dot1qStaticMulticastForbiddenEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The set of ports to which frames received from a + specific port and destined for a specific Multicast or + Broadcast MAC address must not be forwarded, regardless + of any dynamic information, e.g., from GMRP. A port may + not be added in this set if it is already a member of the + set of ports in dot1qStaticMulticastStaticEgressPorts. + The default value of this object is a string of zeros of + appropriate length. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qStaticMulticastEntry 4 } + +dot1qStaticMulticastStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + permanent(3), + deleteOnReset(4), + deleteOnTimeout(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + other(1) - this entry is currently in use, but + the conditions under which it will remain + so differ from the following values. + + + + invalid(2) - writing this value to the object + removes the corresponding entry. + permanent(3) - this entry is currently in use + and will remain so after the next reset of + the bridge. + deleteOnReset(4) - this entry is currently in + use and will remain so until the next + reset of the bridge. + deleteOnTimeout(5) - this entry is currently in + use and will remain so until it is aged out. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { permanent } + ::= { dot1qStaticMulticastEntry 5 } + +-- ------------------------------------------------------------- +-- The Current VLAN Database +-- ------------------------------------------------------------- + +dot1qVlanNumDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a VLAN entry has been deleted from + the dot1qVlanCurrentTable (for any reason). If an entry + is deleted, then inserted, and then deleted, this + counter will be incremented by 2." + ::= { dot1qVlan 1 } + +dot1qVlanCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qVlanCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing current configuration information + for each VLAN currently configured into the device by + (local or network) management, or dynamically created + as a result of GVRP requests received." + ::= { dot1qVlan 2 } + +dot1qVlanCurrentEntry OBJECT-TYPE + SYNTAX Dot1qVlanCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information for a VLAN configured into the device by + + + + (local or network) management, or dynamically created + as a result of GVRP requests received." + INDEX { dot1qVlanTimeMark, dot1qVlanIndex } + ::= { dot1qVlanCurrentTable 1 } + +Dot1qVlanCurrentEntry ::= + SEQUENCE { + dot1qVlanTimeMark + TimeFilter, + dot1qVlanIndex + VlanIndex, + dot1qVlanFdbId + Unsigned32, + dot1qVlanCurrentEgressPorts + PortList, + dot1qVlanCurrentUntaggedPorts + PortList, + dot1qVlanStatus + INTEGER, + dot1qVlanCreationTime + TimeTicks + } + +dot1qVlanTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter + textual convention to see how this works." + ::= { dot1qVlanCurrentEntry 1 } + +dot1qVlanIndex OBJECT-TYPE + SYNTAX VlanIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VLAN-ID or other identifier referring to this VLAN." + ::= { dot1qVlanCurrentEntry 2 } + +dot1qVlanFdbId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Filtering Database used by this VLAN. This is one + of the dot1qFdbId values in the dot1qFdbTable. This + value is allocated automatically by the device whenever + + + + the VLAN is created: either dynamically by GVRP, or by + management, in dot1qVlanStaticTable. Allocation of this + value follows the learning constraints defined for this + VLAN in dot1qLearningConstraintsTable." + ::= { dot1qVlanCurrentEntry 3 } + +dot1qVlanCurrentEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of ports that are transmitting traffic for + this VLAN as either tagged or untagged frames." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanCurrentEntry 4 } + +dot1qVlanCurrentUntaggedPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of ports that are transmitting traffic for + this VLAN as untagged frames." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanCurrentEntry 5 } + +dot1qVlanStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + permanent(2), + dynamicGvrp(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + other(1) - this entry is currently in use, but the + conditions under which it will remain so differ + from the following values. + permanent(2) - this entry, corresponding to an entry + in dot1qVlanStaticTable, is currently in use and + will remain so after the next reset of the + device. The port lists for this entry include + ports from the equivalent dot1qVlanStaticTable + entry and ports learned dynamically. + dynamicGvrp(3) - this entry is currently in use + + + + and will remain so until removed by GVRP. There + is no static entry for this VLAN, and it will be + removed when the last port leaves the VLAN." + ::= { dot1qVlanCurrentEntry 6 } + +dot1qVlanCreationTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this VLAN was created." + ::= { dot1qVlanCurrentEntry 7 } + +-- ------------------------------------------------------------- +-- The Static VLAN Database +-- ------------------------------------------------------------- + +dot1qVlanStaticTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qVlanStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing static configuration information for + each VLAN configured into the device by (local or + network) management. All entries are permanent and will + be restored after the device is reset." + ::= { dot1qVlan 3 } + +dot1qVlanStaticEntry OBJECT-TYPE + SYNTAX Dot1qVlanStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Static information for a VLAN configured into the + device by (local or network) management." + INDEX { dot1qVlanIndex } + ::= { dot1qVlanStaticTable 1 } + +Dot1qVlanStaticEntry ::= + SEQUENCE { + dot1qVlanStaticName + SnmpAdminString, + dot1qVlanStaticEgressPorts + PortList, + dot1qVlanForbiddenEgressPorts + PortList, + dot1qVlanStaticUntaggedPorts + PortList, + + + + dot1qVlanStaticRowStatus + RowStatus + } + +dot1qVlanStaticName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned string, which may be used + to identify the VLAN." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanStaticEntry 1 } + +dot1qVlanStaticEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports that are permanently assigned to the + egress list for this VLAN by management. Changes to a + bit in this object affect the per-port, per-VLAN + Registrar control for Registration Fixed for the + relevant GVRP state machine on each port. A port may + not be added in this set if it is already a member of + the set of ports in dot1qVlanForbiddenEgressPorts. The + default value of this object is a string of zeros of + appropriate length, indicating not fixed." + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7.3, 11.2.3.2.3" + ::= { dot1qVlanStaticEntry 2 } + +dot1qVlanForbiddenEgressPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports that are prohibited by management + from being included in the egress list for this VLAN. + Changes to this object that cause a port to be included + or excluded affect the per-port, per-VLAN Registrar + control for Registration Forbidden for the relevant GVRP + state machine on each port. A port may not be added in + this set if it is already a member of the set of ports + in dot1qVlanStaticEgressPorts. The default value of + this object is a string of zeros of appropriate length, + excluding all ports from the forbidden set." + + + + REFERENCE + "IEEE 802.1Q/D11 Section 12.7.7.3, 11.2.3.2.3" + ::= { dot1qVlanStaticEntry 3 } + +dot1qVlanStaticUntaggedPorts OBJECT-TYPE + SYNTAX PortList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports that should transmit egress packets + for this VLAN as untagged. The default value of this + object for the default VLAN (dot1qVlanIndex = 1) is a string + of appropriate length including all ports. There is no + specified default for other VLANs. If a device agent cannot + support the set of ports being set, then it will reject the + set operation with an error. For example, a + manager might attempt to set more than one VLAN to be untagged + on egress where the device does not support this IEEE 802.1Q + option." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.2.1" + ::= { dot1qVlanStaticEntry 4 } + +dot1qVlanStaticRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the status of this entry." + ::= { dot1qVlanStaticEntry 5 } + +dot1qNextFreeLocalVlanIndex OBJECT-TYPE + SYNTAX Integer32 (0|4096..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next available value for dot1qVlanIndex of a local + VLAN entry in dot1qVlanStaticTable. This will report + values >=4096 if a new Local VLAN may be created or else + the value 0 if this is not possible. + + A row creation operation in this table for an entry with a local + VlanIndex value may fail if the current value of this object + is not used as the index. Even if the value read is used, + there is no guarantee that it will still be the valid index + when the create operation is attempted; another manager may + have already got in during the intervening time interval. + In this case, dot1qNextFreeLocalVlanIndex should be re-read + + + + and the creation re-tried with the new value. + + This value will automatically change when the current value is + used to create a new row." + ::= { dot1qVlan 4 } + +-- ------------------------------------------------------------- +-- The VLAN Port Configuration Table +-- ------------------------------------------------------------- + +dot1qPortVlanTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qPortVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing per-port control and status + information for VLAN configuration in the device." + ::= { dot1qVlan 5 } + +dot1qPortVlanEntry OBJECT-TYPE + SYNTAX Dot1qPortVlanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information controlling VLAN configuration for a port + on the device. This is indexed by dot1dBasePort." + AUGMENTS { dot1dBasePortEntry } + ::= { dot1qPortVlanTable 1 } + +Dot1qPortVlanEntry ::= + SEQUENCE { + dot1qPvid + VlanIndex, + dot1qPortAcceptableFrameTypes + INTEGER, + dot1qPortIngressFiltering + TruthValue, + dot1qPortGvrpStatus + EnabledStatus, + dot1qPortGvrpFailedRegistrations + Counter32, + dot1qPortGvrpLastPduOrigin + MacAddress, + dot1qPortRestrictedVlanRegistration + TruthValue + } + +dot1qPvid OBJECT-TYPE + + + + SYNTAX VlanIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The PVID, the VLAN-ID assigned to untagged frames or + Priority-Tagged frames received on this port. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.1" + DEFVAL { 1 } + ::= { dot1qPortVlanEntry 1 } + +dot1qPortAcceptableFrameTypes OBJECT-TYPE + SYNTAX INTEGER { + admitAll(1), + admitOnlyVlanTagged(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this is admitOnlyVlanTagged(2), the device will + discard untagged frames or Priority-Tagged frames + received on this port. When admitAll(1), untagged + frames or Priority-Tagged frames received on this port + will be accepted and assigned to a VID based on the + PVID and VID Set for this port. + + This control does not affect VLAN-independent Bridge + Protocol Data Unit (BPDU) frames, such as GVRP and + Spanning Tree Protocol (STP). It does affect VLAN- + dependent BPDU frames, such as GMRP. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.3" + DEFVAL { admitAll } + ::= { dot1qPortVlanEntry 2 } + +dot1qPortIngressFiltering OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this is true(1), the device will discard incoming + frames for VLANs that do not include this Port in its + + + + Member set. When false(2), the port will accept all + incoming frames. + + This control does not affect VLAN-independent BPDU + frames, such as GVRP and STP. It does affect VLAN- + dependent BPDU frames, such as GMRP. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1Q/D11 Section 12.10.1.4" + DEFVAL { false } + ::= { dot1qPortVlanEntry 3 } + +dot1qPortGvrpStatus OBJECT-TYPE + SYNTAX EnabledStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of GVRP operation on this port. The value + enabled(1) indicates that GVRP is enabled on this port, + as long as dot1qGvrpStatus is also enabled for this + device. When disabled(2) but dot1qGvrpStatus is still + enabled for the device, GVRP is disabled on this port: + any GVRP packets received will be silently discarded, and + no GVRP registrations will be propagated from other + ports. This object affects all GVRP Applicant and + Registrar state machines on this port. A transition + from disabled(2) to enabled(1) will cause a reset of all + GVRP state machines on this port. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { enabled } + ::= { dot1qPortVlanEntry 4 } + +dot1qPortGvrpFailedRegistrations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of failed GVRP registrations, for any + reason, on this port." + ::= { dot1qPortVlanEntry 5 } + +dot1qPortGvrpLastPduOrigin OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The Source MAC Address of the last GVRP message + received on this port." + ::= { dot1qPortVlanEntry 6 } + +dot1qPortRestrictedVlanRegistration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of Restricted VLAN Registration on this port. + If the value of this control is true(1), then creation + of a new dynamic VLAN entry is permitted only if there + is a Static VLAN Registration Entry for the VLAN concerned, + in which the Registrar Administrative Control value for + this port is Normal Registration. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1u clause 11.2.3.2.3, 12.10.1.7." + DEFVAL { false } + ::= { dot1qPortVlanEntry 7 } + +-- ------------------------------------------------------------- +-- Per port VLAN Statistics Table +-- ------------------------------------------------------------- + +dot1qPortVlanStatisticsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qPortVlanStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing per-port, per-VLAN statistics for + traffic received. Separate objects are provided for both the + most-significant and least-significant bits of statistics + counters for ports that are associated with this transparent + bridge. The most-significant bit objects are only required on + high-capacity interfaces, as defined in the conformance clauses + for these objects. This mechanism is provided as a way to read + 64-bit counters for agents that support only SNMPv1. + + Note that the reporting of most-significant and least- + significant counter bits separately runs the risk of missing + an overflow of the lower bits in the interval between sampling. + The manager must be aware of this possibility, even within the + same varbindlist, when interpreting the results of a request or + + + + asynchronous notification." + ::= { dot1qVlan 6 } + +dot1qPortVlanStatisticsEntry OBJECT-TYPE + SYNTAX Dot1qPortVlanStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Traffic statistics for a VLAN on an interface." + INDEX { dot1dBasePort, dot1qVlanIndex } + ::= { dot1qPortVlanStatisticsTable 1 } + +Dot1qPortVlanStatisticsEntry ::= + SEQUENCE { + dot1qTpVlanPortInFrames + Counter32, + dot1qTpVlanPortOutFrames + Counter32, + dot1qTpVlanPortInDiscards + Counter32, + dot1qTpVlanPortInOverflowFrames + Counter32, + dot1qTpVlanPortOutOverflowFrames + Counter32, + dot1qTpVlanPortInOverflowDiscards + Counter32 + } + +dot1qTpVlanPortInFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN. Note that a frame received on this port is + counted by this object if and only if it is for a + protocol being processed by the local forwarding process + for this VLAN. This object includes received bridge + management frames classified as belonging to this VLAN + (e.g., GMRP, but not GVRP or STP." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(a)" + ::= { dot1qPortVlanStatisticsEntry 1 } + +dot1qTpVlanPortOutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of valid frames transmitted by this port to + its segment from the local forwarding process for this + VLAN. This includes bridge management frames originated + by this device that are classified as belonging to this + VLAN (e.g., GMRP, but not GVRP or STP)." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(d)" + ::= { dot1qPortVlanStatisticsEntry 2 } + +dot1qTpVlanPortInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN and that were discarded due to VLAN-related reasons. + Specifically, the IEEE 802.1Q counters for Discard + Inbound and Discard on Ingress Filtering." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 3 } + +dot1qTpVlanPortInOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1qTpVlanPortInFrames counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 4 } + +dot1qTpVlanPortOutOverflowFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1qTpVlanPortOutFrames counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 5 } + +dot1qTpVlanPortInOverflowDiscards OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + dot1qTpVlanPortInDiscards counter has overflowed." + REFERENCE + "ISO/IEC 15802-3 Section 14.6.1.1.3" + ::= { dot1qPortVlanStatisticsEntry 6 } + +dot1qPortVlanHCStatisticsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qPortVlanHCStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing per-port, per-VLAN statistics for + traffic on high-capacity interfaces." + ::= { dot1qVlan 7 } + +dot1qPortVlanHCStatisticsEntry OBJECT-TYPE + SYNTAX Dot1qPortVlanHCStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Traffic statistics for a VLAN on a high-capacity + interface." + INDEX { dot1dBasePort, dot1qVlanIndex } + ::= { dot1qPortVlanHCStatisticsTable 1 } + +Dot1qPortVlanHCStatisticsEntry ::= + SEQUENCE { + dot1qTpVlanPortHCInFrames + Counter64, + dot1qTpVlanPortHCOutFrames + Counter64, + dot1qTpVlanPortHCInDiscards + Counter64 + } + +dot1qTpVlanPortHCInFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN. Note that a frame received on this port is + counted by this object if and only if it is for a + + + + protocol being processed by the local forwarding process + for this VLAN. This object includes received bridge + management frames classified as belonging to this VLAN + (e.g., GMRP, but not GVRP or STP)." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(a)" + ::= { dot1qPortVlanHCStatisticsEntry 1 } + +dot1qTpVlanPortHCOutFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames transmitted by this port to + its segment from the local forwarding process for this + VLAN. This includes bridge management frames originated + by this device that are classified as belonging to this + VLAN (e.g., GMRP, but not GVRP or STP)." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3(d)" + ::= { dot1qPortVlanHCStatisticsEntry 2 } + +dot1qTpVlanPortHCInDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid frames received by this port from + its segment that were classified as belonging to this + VLAN and that were discarded due to VLAN-related reasons. + Specifically, the IEEE 802.1Q counters for Discard + Inbound and Discard on Ingress Filtering." + REFERENCE + "IEEE 802.1Q/D11 Section 12.6.1.1.3" + ::= { dot1qPortVlanHCStatisticsEntry 3 } + +-- ------------------------------------------------------------- +-- The VLAN Learning Constraints Table +-- ------------------------------------------------------------- + +dot1qLearningConstraintsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1qLearningConstraintsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing learning constraints for sets of + Shared and Independent VLANs." + REFERENCE + + + + "IEEE 802.1Q/D11 Section 12.10.3.1" + ::= { dot1qVlan 8 } + +dot1qLearningConstraintsEntry OBJECT-TYPE + SYNTAX Dot1qLearningConstraintsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A learning constraint defined for a VLAN." + INDEX { dot1qConstraintVlan, dot1qConstraintSet } + ::= { dot1qLearningConstraintsTable 1 } + +Dot1qLearningConstraintsEntry ::= + SEQUENCE { + dot1qConstraintVlan + VlanIndex, + dot1qConstraintSet + Integer32, + dot1qConstraintType + INTEGER, + dot1qConstraintStatus + RowStatus + } + +dot1qConstraintVlan OBJECT-TYPE + SYNTAX VlanIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the row in dot1qVlanCurrentTable for the + VLAN constrained by this entry." + ::= { dot1qLearningConstraintsEntry 1 } + +dot1qConstraintSet OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identity of the constraint set to which + dot1qConstraintVlan belongs. These values may be chosen + by the management station." + ::= { dot1qLearningConstraintsEntry 2 } + +dot1qConstraintType OBJECT-TYPE + SYNTAX INTEGER { + independent(1), + shared(2) + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of constraint this entry defines. + independent(1) - the VLAN, dot1qConstraintVlan, + uses a filtering database independent from all + other VLANs in the same set, defined by + dot1qConstraintSet. + shared(2) - the VLAN, dot1qConstraintVlan, shares + the same filtering database as all other VLANs + in the same set, defined by dot1qConstraintSet." + ::= { dot1qLearningConstraintsEntry 3 } + +dot1qConstraintStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry." + ::= { dot1qLearningConstraintsEntry 4 } + +dot1qConstraintSetDefault OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The identity of the constraint set to which a VLAN + belongs, if there is not an explicit entry for that VLAN + in dot1qLearningConstraintsTable. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1qVlan 9 } + +dot1qConstraintTypeDefault OBJECT-TYPE + SYNTAX INTEGER { + independent(1), + shared(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of constraint set to which a VLAN belongs, if + there is not an explicit entry for that VLAN in + dot1qLearningConstraintsTable. The types are as defined + for dot1qConstraintType. + + The value of this object MUST be retained across + + + + reinitializations of the management system." + ::= { dot1qVlan 10 } + +-- ------------------------------------------------------------- +-- dot1vProtocol subtree +-- ------------------------------------------------------------- + +dot1vProtocolGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1vProtocolGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains mappings from Protocol + Templates to Protocol Group Identifiers used for + Port-and-Protocol-based VLAN Classification." + REFERENCE + "IEEE 802.1v clause 8.6.4" + ::= { dot1vProtocol 1 } + +dot1vProtocolGroupEntry OBJECT-TYPE + SYNTAX Dot1vProtocolGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A mapping from a Protocol Template to a Protocol + Group Identifier." + INDEX { dot1vProtocolTemplateFrameType, + dot1vProtocolTemplateProtocolValue } + ::= { dot1vProtocolGroupTable 1 } + +Dot1vProtocolGroupEntry ::= + SEQUENCE { + dot1vProtocolTemplateFrameType + INTEGER, + dot1vProtocolTemplateProtocolValue + OCTET STRING, + dot1vProtocolGroupId + Integer32, + dot1vProtocolGroupRowStatus + RowStatus + } + +dot1vProtocolTemplateFrameType OBJECT-TYPE + SYNTAX INTEGER { + ethernet (1), + rfc1042 (2), + snap8021H (3), + snapOther (4), + + + + llcOther (5) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The data-link encapsulation format or the + 'detagged_frame_type' in a Protocol Template." + REFERENCE + "IEEE 802.1v clause 8.6.2" + ::= { dot1vProtocolGroupEntry 1 } + +dot1vProtocolTemplateProtocolValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2 | 5)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identification of the protocol above the data-link + layer in a Protocol Template. Depending on the + frame type, the octet string will have one of the + following values: + + For 'ethernet', 'rfc1042' and 'snap8021H', + this is the 16-bit (2-octet) IEEE 802.3 Type Field. + For 'snapOther', + this is the 40-bit (5-octet) PID. + For 'llcOther', + this is the 2-octet IEEE 802.2 Link Service Access + Point (LSAP) pair: first octet for Destination Service + Access Point (DSAP) and second octet for Source Service + Access Point (SSAP)." + REFERENCE + "IEEE 802.1v clause 8.6.2" + ::= { dot1vProtocolGroupEntry 2 } + +dot1vProtocolGroupId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Represents a group of protocols that are associated + together when assigning a VID to a frame." + REFERENCE + "IEEE 802.1v clause 8.6.3, 12.10.2.1" + ::= { dot1vProtocolGroupEntry 3 } + +dot1vProtocolGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object indicates the status of this entry." + ::= { dot1vProtocolGroupEntry 4 } + +dot1vProtocolPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1vProtocolPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains VID sets used for + Port-and-Protocol-based VLAN Classification." + REFERENCE + "IEEE 802.1v clause 8.4.4" + ::= { dot1vProtocol 2 } + +dot1vProtocolPortEntry OBJECT-TYPE + SYNTAX Dot1vProtocolPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A VID set for a port." + INDEX { dot1dBasePort, + dot1vProtocolPortGroupId } + ::= { dot1vProtocolPortTable 1 } + +Dot1vProtocolPortEntry ::= + SEQUENCE { + dot1vProtocolPortGroupId + Integer32, + dot1vProtocolPortGroupVid + Integer32, + dot1vProtocolPortRowStatus + RowStatus + } + +dot1vProtocolPortGroupId OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Designates a group of protocols in the Protocol + Group Database." + REFERENCE + "IEEE 802.1v clause 8.6.3, 12.10.1.2" + ::= { dot1vProtocolPortEntry 1 } + +dot1vProtocolPortGroupVid OBJECT-TYPE + + + + SYNTAX Integer32 (1..4094) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VID associated with a group of protocols for + each port." + REFERENCE + "IEEE 802.1v clause 8.4.4, 12.10.1.2" + ::= { dot1vProtocolPortEntry 2 } + +dot1vProtocolPortRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the status of this entry." + ::= { dot1vProtocolPortEntry 3 } + +-- ------------------------------------------------------------- +-- IEEE 802.1Q MIB - Conformance Information +-- ------------------------------------------------------------- + +qBridgeConformance OBJECT IDENTIFIER ::= { qBridgeMIB 2 } + +qBridgeGroups OBJECT IDENTIFIER ::= { qBridgeConformance 1 } + +qBridgeCompliances OBJECT IDENTIFIER ::= { qBridgeConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +qBridgeBaseGroup OBJECT-GROUP + OBJECTS { + dot1qVlanVersionNumber, + dot1qMaxVlanId, + dot1qMaxSupportedVlans, + dot1qNumVlans, + dot1qGvrpStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing device-level control + and status information for the Virtual LAN bridge + services." + ::= { qBridgeGroups 1 } + +qBridgeFdbUnicastGroup OBJECT-GROUP + + + + OBJECTS { + dot1qFdbDynamicCount, + dot1qTpFdbPort, + dot1qTpFdbStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + unicast addresses, learned dynamically or statically + configured by management, in each Filtering Database." + ::= { qBridgeGroups 2 } + +qBridgeFdbMulticastGroup OBJECT-GROUP + OBJECTS { + dot1qTpGroupEgressPorts, + dot1qTpGroupLearnt + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + multicast addresses, learned dynamically or statically + configured by management, in each Filtering Database." + ::= { qBridgeGroups 3 } + +qBridgeServiceRequirementsGroup OBJECT-GROUP + OBJECTS { + dot1qForwardAllPorts, + dot1qForwardAllStaticPorts, + dot1qForwardAllForbiddenPorts, + dot1qForwardUnregisteredPorts, + dot1qForwardUnregisteredStaticPorts, + dot1qForwardUnregisteredForbiddenPorts + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + service requirements, learned dynamically or statically + configured by management, in each Filtering Database." + ::= { qBridgeGroups 4 } + +qBridgeFdbStaticGroup OBJECT-GROUP + OBJECTS { + dot1qStaticUnicastAllowedToGoTo, + dot1qStaticUnicastStatus, + dot1qStaticMulticastStaticEgressPorts, + dot1qStaticMulticastForbiddenEgressPorts, + dot1qStaticMulticastStatus + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about + unicast and multicast addresses statically configured by + management, in each Filtering Database or VLAN." + ::= { qBridgeGroups 5 } + +qBridgeVlanGroup OBJECT-GROUP + OBJECTS { + dot1qVlanNumDeletes, + dot1qVlanFdbId, + dot1qVlanCurrentEgressPorts, + dot1qVlanCurrentUntaggedPorts, + dot1qVlanStatus, + dot1qVlanCreationTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + all VLANs currently configured on this device." + ::= { qBridgeGroups 6 } + +qBridgeVlanStaticGroup OBJECT-GROUP + OBJECTS { + dot1qVlanStaticName, + dot1qVlanStaticEgressPorts, + dot1qVlanForbiddenEgressPorts, + dot1qVlanStaticUntaggedPorts, + dot1qVlanStaticRowStatus, + dot1qNextFreeLocalVlanIndex + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + VLANs statically configured by management." + ::= { qBridgeGroups 7 } + +qBridgePortGroup OBJECT-GROUP + OBJECTS { + dot1qPvid, + dot1qPortAcceptableFrameTypes, + dot1qPortIngressFiltering, + dot1qPortGvrpStatus, + dot1qPortGvrpFailedRegistrations, + dot1qPortGvrpLastPduOrigin + } + STATUS deprecated + DESCRIPTION + + + + "A collection of objects providing port-level VLAN + control and status information for all ports." + ::= { qBridgeGroups 8 } + +qBridgeVlanStatisticsGroup OBJECT-GROUP + OBJECTS { + dot1qTpVlanPortInFrames, + dot1qTpVlanPortOutFrames, + dot1qTpVlanPortInDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing per-port packet + statistics for all VLANs currently configured on this + device." + ::= { qBridgeGroups 9 } + +qBridgeVlanStatisticsOverflowGroup OBJECT-GROUP + OBJECTS { + dot1qTpVlanPortInOverflowFrames, + dot1qTpVlanPortOutOverflowFrames, + dot1qTpVlanPortInOverflowDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing overflow counters for + per-port packet statistics for all VLANs currently configured + on this device for high-capacity interfaces, defined as those + that have the value of the corresponding instance of + ifSpeed greater than 650,000,000 bits/second." + ::= { qBridgeGroups 10 } + +qBridgeVlanHCStatisticsGroup OBJECT-GROUP + OBJECTS { + dot1qTpVlanPortHCInFrames, + dot1qTpVlanPortHCOutFrames, + dot1qTpVlanPortHCInDiscards + } + STATUS current + DESCRIPTION + "A collection of objects providing per-port packet + statistics for all VLANs currently configured on this + device for high-capacity interfaces, defined as those + that have the value of the corresponding instance of + ifSpeed greater than 650,000,000 bits/second." + ::= { qBridgeGroups 11 } + +qBridgeLearningConstraintsGroup OBJECT-GROUP + + + + OBJECTS { + dot1qConstraintType, + dot1qConstraintStatus + } + STATUS current + DESCRIPTION + "A collection of objects defining the Filtering Database + constraints all VLANs have with each other." + ::= { qBridgeGroups 12 } + +qBridgeLearningConstraintDefaultGroup OBJECT-GROUP + OBJECTS { + dot1qConstraintSetDefault, + dot1qConstraintTypeDefault + } + STATUS current + DESCRIPTION + "A collection of objects defining the default Filtering + Database constraints for VLANs that have no specific + constraints defined." + ::= { qBridgeGroups 13 } + +qBridgeClassificationDeviceGroup OBJECT-GROUP + OBJECTS { + dot1vProtocolGroupId, + dot1vProtocolGroupRowStatus + } + STATUS current + DESCRIPTION + "VLAN classification information for the bridge." + ::= { qBridgeGroups 14 } + +qBridgeClassificationPortGroup OBJECT-GROUP + OBJECTS { + dot1vProtocolPortGroupVid, + dot1vProtocolPortRowStatus + } + STATUS current + DESCRIPTION + "VLAN classification information for individual ports." + ::= { qBridgeGroups 15 } + +qBridgePortGroup2 OBJECT-GROUP + OBJECTS { + dot1qPvid, + dot1qPortAcceptableFrameTypes, + dot1qPortIngressFiltering, + dot1qPortGvrpStatus, + + + + dot1qPortGvrpFailedRegistrations, + dot1qPortGvrpLastPduOrigin, + dot1qPortRestrictedVlanRegistration + } + STATUS current + DESCRIPTION + "A collection of objects providing port-level VLAN + control and status information for all ports." + ::= { qBridgeGroups 16 } + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +qBridgeCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for device support of Virtual + LAN Bridge services. + + RFC2674 was silent about the expected persistence of the + read-write objects in this MIB module. Applications MUST + NOT assume that the values of the read-write objects are + persistent across reinitializations of the management + system and MUST NOT assume that the values are not + persistent across reinitializations of the management + system." + + MODULE + MANDATORY-GROUPS { + qBridgeBaseGroup, + qBridgeVlanGroup, + qBridgeVlanStaticGroup, + qBridgePortGroup + } + + GROUP qBridgeFdbUnicastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + GROUP qBridgeFdbMulticastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + GROUP qBridgeServiceRequirementsGroup + DESCRIPTION + + + + "This group is mandatory for bridges that implement + extended filtering services. All objects must be + read-write if extended-filtering services are + enabled." + + GROUP qBridgeFdbStaticGroup + DESCRIPTION + "This group is optional." + + GROUP qBridgeVlanStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support." + + GROUP qBridgeVlanStatisticsOverflowGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces where the SNMP agent + supports only SNMPv1." + + GROUP qBridgeVlanHCStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces." + + GROUP qBridgeLearningConstraintsGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + GROUP qBridgeLearningConstraintDefaultGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + OBJECT dot1qPortAcceptableFrameTypes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qPortIngressFiltering + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintSetDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintTypeDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + ::= { qBridgeCompliances 1 } + +qBridgeCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of Virtual + LAN Bridge services. + + This document clarifies the persistence requirements for + the read-write objects in this MIB module. All + implementations claiming compliance to qBridgeCompliance2 + MUST retain the values of those read-write objects that + specify this requirement." + + MODULE + MANDATORY-GROUPS { + qBridgeBaseGroup, + qBridgeVlanGroup, + qBridgeVlanStaticGroup, + qBridgePortGroup2 + } + + GROUP qBridgeFdbUnicastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + GROUP qBridgeFdbMulticastGroup + DESCRIPTION + "This group is mandatory for bridges that implement + 802.1Q transparent bridging." + + + + GROUP qBridgeServiceRequirementsGroup + DESCRIPTION + "This group is mandatory for bridges that implement + extended filtering services. All objects must be + read-write if extended-filtering services are + enabled." + + GROUP qBridgeFdbStaticGroup + DESCRIPTION + "This group is optional." + + GROUP qBridgeVlanStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support." + + GROUP qBridgeVlanStatisticsOverflowGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces where the SNMP agent + supports only SNMPv1." + + GROUP qBridgeVlanHCStatisticsGroup + DESCRIPTION + "This group is optional as there may be significant + implementation cost associated with its support. It is most + relevant for high-capacity interfaces." + + GROUP qBridgeLearningConstraintsGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + GROUP qBridgeLearningConstraintDefaultGroup + DESCRIPTION + "This group is mandatory for devices implementing + both Independent VLAN Learning (IVL) and Shared + VLAN Learning (SVL) modes of operation of the + filtering database, as defined by IEEE 802.1Q." + + GROUP qBridgeClassificationDeviceGroup + DESCRIPTION + "This group is mandatory ONLY for devices implementing + VLAN Classification as specified in IEEE 802.1v." + + + + + GROUP qBridgeClassificationPortGroup + DESCRIPTION + "This group is mandatory ONLY for devices implementing + VLAN Classification as specified in IEEE 802.1v." + + OBJECT dot1qPortAcceptableFrameTypes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qPortIngressFiltering + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintSetDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1qConstraintTypeDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1Q." + + OBJECT dot1vProtocolGroupId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1v." + + OBJECT dot1vProtocolGroupRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required as this is an optional + capability in IEEE 802.1v." + + ::= { qBridgeCompliances 2 } + +END \ No newline at end of file diff --git a/mibs/lldp-mibs/RMON2-MIB.my b/mibs/lldp-mibs/RMON2-MIB.my new file mode 100644 index 0000000..fb238d5 --- /dev/null +++ b/mibs/lldp-mibs/RMON2-MIB.my @@ -0,0 +1,5781 @@ +RMON2-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Gauge32, IpAddress, TimeTicks FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2, ifIndex FROM RFC1213-MIB + OwnerString, statistics, history, hosts, + matrix, filter, etherStatsEntry, historyControlEntry, + hostControlEntry, matrixControlEntry, filterEntry, + channelEntry FROM RMON-MIB + tokenRing, tokenRingMLStatsEntry, tokenRingPStatsEntry, + ringStationControlEntry, sourceRoutingStatsEntry + FROM TOKEN-RING-RMON-MIB; +-- Remote Network Monitoring MIB + +rmon MODULE-IDENTITY + LAST-UPDATED "9605270000Z" + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Steve Waldbusser (WG Editor) + Postal: International Network Services + 650 Castro Street, Suite 260 + Mountain View, CA 94041 + Phone: +1 415 254 4251 + Email: waldbusser@ins.com + + + Andy Bierman (WG Chair) + Phone: +1 805 648 2028 + Email: abierman@west.net" + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + augments the original RMON MIB as specified in + RFC 1757." + ::= { mib-2 16 } + +-- { rmon 1 } through { rmon 10 } are defined in RMON and +-- the Token Ring RMON MIB [RFC 1513] + + + + + + + protocolDir OBJECT IDENTIFIER ::= { rmon 11 } + protocolDist OBJECT IDENTIFIER ::= { rmon 12 } + addressMap OBJECT IDENTIFIER ::= { rmon 13 } + nlHost OBJECT IDENTIFIER ::= { rmon 14 } + nlMatrix OBJECT IDENTIFIER ::= { rmon 15 } + alHost OBJECT IDENTIFIER ::= { rmon 16 } + alMatrix OBJECT IDENTIFIER ::= { rmon 17 } + usrHistory OBJECT IDENTIFIER ::= { rmon 18 } + probeConfig OBJECT IDENTIFIER ::= { rmon 19 } + rmonConformance OBJECT IDENTIFIER ::= { rmon 20 } + +-- Textual Conventions + +ZeroBasedCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object which counts events with the + following semantics: objects of this type will be set to + zero(0) on creation and will thereafter count appropriate + events, wrapping back to zero(0) when the value 2^32 is + reached. + + Provided that an application discovers the new object within + the minimum time to wrap it can use the initial value as a + delta since it last polled the table of which this object is + part. It is important for a management station to be aware of + this minimum time and the actual time between polls, and to + discard data if the actual time is too long or there is no + defined minimum time. + + Typically this TC is used in tables where the INDEX space is + constantly changing and/or the TimeFilter mechanism is in use." + SYNTAX Gauge32 + +LastCreateTime ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that stores the last time its + entry was created. + + This can be used for polling applications to determine that an + entry has been deleted and re-created between polls, causing + an otherwise undetectable discontinuity in the data." + SYNTAX TimeStamp + +TimeFilter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + + + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + A row is considered changed if the value of any object in the + row changes or if the row is created or deleted. + + When sysUpTime is equal to zero, this table shall be empty. + + One entry exists for each past value of sysUpTime, except that + the whole table is purged should sysUpTime wrap. + + As this basic row is updated new conceptual rows are created + (which still share the now updated object values with all + other instances). The number of instances which are created + is determined by the value of sysUpTime at which the basic row + was last updated. One instance will exist for each value of + sysUpTime at the last update time for the row. A new + timeMark instance is created for each new sysUpTime value. + Each new conceptual row will be associated with the timeMark + instance which was created at the value of sysUpTime with + which the conceptual row is to be associated. + + By definition all conceptual rows were updated at or after + time zero and so at least one conceptual row (associated with + timeMark.0) must exist for each underlying (basic) row. + + See the appendix for further discussion of this variable. + + Consider the following fooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + fooTimeMark TimeFilter + fooIndex INTEGER, + fooCounts Counter + } + + Should there be two basic rows in this table (fooIndex == 1, + fooIndex == 2) and row 1 was updated most recently at time 6, + while row 2 was updated most recently at time 8, and both rows + had been updated on several earlier occasions such that the + current values were 5 and 9 respectively then the following + fooCounts instances would exist. + + fooCounts.0.1 5 + fooCounts.0.2 9 + fooCounts.1.1 5 + + + + + + fooCounts.1.2 9 + fooCounts.2.1 5 + fooCounts.2.2 9 + fooCounts.3.1 5 + fooCounts.3.2 9 + fooCounts.4.1 5 + fooCounts.4.2 9 + fooCounts.5.1 5 + fooCounts.5.2 9 + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 -- note that row 1 doesn't exist for + fooCounts.8.2 9 -- times 7 and 8" + SYNTAX TimeTicks + +DataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated + function is configured to analyze. This source can be any + interface on this device. + + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [3,5], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1." + SYNTAX OBJECT IDENTIFIER +-- +-- Protocol Directory Group +-- +-- Lists the inventory of protocols the probe has the capability of +-- monitoring and allows the addition, deletion, and configuration of +-- entries in this list. + +protocolDirLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of either the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig." + ::= { protocolDir 1 } + + + + + + +protocolDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the protocols that this agent has the + capability to decode and count. There is one entry in this + table for each such protocol. These protocols represent + different network layer, transport layer, and higher-layer + protocols. The agent should boot up with this table + preconfigured with those protocols that it knows about and + wishes to monitor. Implementations are strongly encouraged to + support protocols higher than the network layer (at least for + the protocol distribution group), even for implementations + that don't support the application layer groups." + ::= { protocolDir 2 } + +protocolDirEntry OBJECT-TYPE + SYNTAX ProtocolDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDirTable. + + An example of the indexing of this entry is + protocolDirLocalIndex.8.0.0.0.1.0.0.8.0.2.0.0, which is the + encoding of a length of 8, followed by 8 subids encoding the + protocolDirID of 1.2048, followed by a length of 2 and the + 2 subids encoding zero-valued parameters." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType OCTET STRING, +-- protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + + + + + + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in a manner such that they + can often be used as specifications for new protocols - i.e. + a tree-structured assignment mechanism that matches the + protocol encapsulation `tree' and which has algorithmic + assignment mechanisms for certain subtrees. See RFC XXX for + more details. + + Despite the algorithmic mechanism, the probe will only place + entries in here for those protocols it chooses to collect. In + other words, it need not populate this table with all of the + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether or not it does these + things is a matter of product definition (cost/benefit, + usability), and is up to the designer of the product. + + If an entry is written to this table with a protocolDirID that + the agent doesn't understand, either directly or + algorithmically, the SET request will be rejected with an + inconsistentName or badValue (for SNMPv1) error." + ::= { protocolDirEntry 1 } + +protocolDirParameters OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for the associated protocolDirID. + See the associated RMON2 Protocol Identifiers document + for a description of the possible parameters. There + will be one octet in this string for each sub-identifier in + the protocolDirID, and the parameters will appear here in the + same order as the associated sub-identifiers appear in the + protocolDirID. + + Every node in the protocolDirID tree has a different, optional + set of parameters defined (that is, the definition of + parameters for a node is optional). The proper parameter + value for each node is included in this string. Note that the + inclusion of a parameter value in this string for each node is + not optional - what is optional is that a node may have no + parameters defined, in which case the parameter field for that + node will be zero." + ::= { protocolDirEntry 2 } + +protocolDirLocalIndex OBJECT-TYPE + + + + + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this protocolDir entry. + + The value for each supported protocol must remain constant at + least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if a protocol is deleted and re-created, it must be re-created + with a new value that has not been used since the last + re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A protocolDirLocalIndex must not be re-used until the + next agent-restart in the event the protocol directory entry + is deleted." + ::= { protocolDirEntry 3 } + +protocolDirDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the protocol encapsulation. + A probe may choose to describe only a subset of the + entire encapsulation (e.g. only the highest layer). + + This object is intended for human consumption only. + + This object may not be modified if the associated + protocolDirStatus object is equal to active(1)." + ::= { protocolDirEntry 4 } + +protocolDirType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) +-- SYNTAX BITS { +-- extensible(0), +-- addressRecognitionCapable(1) +-- } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the `extensible' bit describes + whether or not this protocol directory entry can be extended + + + + + + by the user by creating protocol directory entries which are + children of this protocol. + + An example of an entry that will often allow extensibility is + `ip.udp'. The probe may automatically populate some children + of this node such as `ip.udp.snmp' and `ip.udp.dns'. + A probe administrator or user may also populate additional + children via remote SNMP requests that create entries in this + table. When a child node is added for a protocol for which the + probe has no built in support, extending a parent node (for + which the probe does have built in support), + that child node is not extendible. This is termed `limited + extensibility'. + + When a child node is added through this extensibility + mechanism, the values of protocolDirLocalIndex and + protocolDirType shall be assigned by the agent. + + The other objects in the entry will be assigned by the + manager who is creating the new entry. + + This object also describes whether or not this agent can + recognize addresses for this protocol, should it be a network + level protocol. That is, while a probe may be able to + recognize packets of a particular network layer protocol and + count them, it takes additional logic to be able to recognize + the addresses in this protocol and to populate network layer + or application layer tables with the addresses in this + protocol. If this bit is set, the agent will recognize + network layer addresses for this protoocl and populate the + network and application layer host and matrix tables with + these protocols. + + Note that when an entry is created, the agent will supply + values for the bits that match the capabilities of the agent + with respect to this protocol. Note that since row creations + usually exercise the limited extensibility feature, these + bits will usually be set to zero." + ::= { protocolDirEntry 5 } + +protocolDirAddressMapConfig OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + supportedOff(2), + supportedOn(3) + } + MAX-ACCESS read-create + STATUS current + + + + + + DESCRIPTION + "This object describes and configures the probe's support for + address mapping for this protocol. When the probe creates + entries in this table for all protocols that it understands, + it will set the entry to notSupported(1) if it doesn't have + the capability to perform address mapping for the protocol or + if this protocol is not a network-layer protocol. When + an entry is created in this table by a management operation as + part of the limited extensibility feature, the probe must set + this value to notSupported(1), because limited extensibility + of the protocolDirTable does not extend to interpreting + addresses of the extended protocols. + + If the value of this object is notSupported(1), the probe + will not perform address mapping for this protocol and + shall not allow this object to be changed to any other value. + If the value of this object is supportedOn(3), the probe + supports address mapping for this protocol and is configured + to perform address mapping for this protocol for all + addressMappingControlEntries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports address mapping for this protocol but is configured + to not perform address mapping for this protocol for any + addressMappingControlEntries and all interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the addressMappingTable." + ::= { protocolDirEntry 6 } + +protocolDirHostConfig OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + supportedOff(2), + supportedOn(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network layer and application layer host tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlHostTable for this protocol or if the alHostTable is + implemented but doesn't have the capability to track this + protocol. Note that if the alHostTable is implemented, the + probe may only support a protocol if it is supported in both + the nlHostTable and the alHostTable. + + + + + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network + layer protocol for which the probe recognizes addresses, and + thus the probe will populate the nlHostTable and alHostTable + with addresses it discovers for this protocol. + + If the value of this object is notSupported(1), the probe + will not track the nlHostTable or alHostTable for this + protocol and shall not allow this object to be changed to any + other value. If the value of this object is supportedOn(3), + the probe supports tracking of the nlHostTable and alHostTable + for this protocol and is configured to track both tables + for this protocol for all control entries and all interfaces. + If the value of this object is supportedOff(2), the probe + supports tracking of the nlHostTable and alHostTable for this + protocol but is configured to not track these tables + for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlHostTable and alHostTable. + + Note that since each alHostEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, that an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 7 } + +protocolDirMatrixConfig OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + supportedOff(2), + supportedOn(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes and configures the probe's support for + the network layer and application layer matrix tables for this + protocol. When the probe creates entries in this table for + all protocols that it understands, it will set the entry to + notSupported(1) if it doesn't have the capability to track the + nlMatrixTables for this protocol or if the alMatrixTables are + implemented but don't have the capability to track this + protocol. Note that if the alMatrix tables are implemented, + the probe may only support a protocol if it is supported in + the the both of the nlMatrixTables and both of the + alMatrixTables. + + + + + + If the associated protocolDirType object has the + addressRecognitionCapable bit set, then this is a network + layer protocol for which the probe recognizes addresses, and + thus the probe will populate both of the nlMatrixTables and + both of the alMatrixTables with addresses it discovers for + this protocol. + + If the value of this object is notSupported(1), the probe + will not track either of the nlMatrixTables or the + alMatrixTables for this protocol and shall not allow this + object to be changed to any other value. If the value of this + object is supportedOn(3), the probe supports tracking of both + of the nlMatrixTables and (if implemented) both of the + alMatrixTables for this protocol and is configured to track + these tables for this protocol for all control entries and all + interfaces. If the value of this object is supportedOff(2), + the probe supports tracking of both of the nlMatrixTables and + (if implemented) both of the alMatrixTables for this protocol + but is configured to not track these tables for this + protocol for any control entries or interfaces. + Whenever this value changes from supportedOn(3) to + supportedOff(2), the probe shall delete all related entries in + the nlMatrixTables and the alMatrixTables. + + Note that since each alMatrixEntry references 2 protocol + directory entries, one for the network address and one for the + type of the highest protocol recognized, that an entry will + only be created in that table if this value is supportedOn(3) + for both protocols." + ::= { protocolDirEntry 8 } + +protocolDirOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDirEntry 9 } + +protocolDirStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this protocol directory entry. + + 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 nlHostTable, nlMatrixSDTable, nlMatrixDSTable, + alHostTable, alMatrixSDTable, and alMatrixDSTable shall be + deleted." + ::= { protocolDirEntry 10 } + +-- +-- Protocol Distribution Group (protocolDist) +-- +-- Collects the relative amounts of octets and packets for the +-- different protocols detected on a network segment. +-- protocolDistControlTable, +-- protocolDistStatsTable + +protocolDistControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of protocol type distribution statistics + tables. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of protocol statistics is available. + + Rationale: + This table controls collection of very basic statistics + for any or all of the protocols detected on a given interface. + An NMS can use this table to quickly determine bandwidth + allocation utilized by different protocols. + + A media-specific statistics collection could also + be configured (e.g. etherStats, trPStats) to easily obtain + total frame, octet, and droppedEvents for the same + interface." + ::= { protocolDist 1 } + +protocolDistControlEntry OBJECT-TYPE + SYNTAX ProtocolDistControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + + + + + + protocolDistControlDroppedFrames.7" + INDEX { protocolDistControlIndex } + ::= { protocolDistControlTable 1 } + +ProtocolDistControlEntry ::= SEQUENCE { + protocolDistControlIndex Integer32, + protocolDistControlDataSource DataSource, + protocolDistControlDroppedFrames Counter32, + protocolDistControlCreateTime LastCreateTime, + protocolDistControlOwner OwnerString, + protocolDistControlStatus RowStatus +} + +protocolDistControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this protocolDistControlEntry." + ::= { protocolDistControlEntry 1 } + +protocolDistControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the this protocol distribution. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + protocolDistControlStatus object is equal to active(1)." + ::= { protocolDistControlEntry 2 } + +protocolDistControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + + + + + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { protocolDistControlEntry 3 } + +protocolDistControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { protocolDistControlEntry 4 } + +protocolDistControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDistControlEntry 5 } + +protocolDistControlStatus 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 protocolDistStatsTable shall be deleted." + ::= { protocolDistControlEntry 6 } + +-- per interface protocol distribution statistics table +protocolDistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry is made in this table for every protocol in the + + + + + + protocolDirTable which has been seen in at least one packet. + Counters are updated in this table for every protocol type + that is encountered when parsing a packet, but no counters are + updated for packets with MAC-layer errors. + + Note that if a protocolDirEntry is deleted, all associated + entries in this table are removed." + ::= { protocolDist 2 } + +protocolDistStatsEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the protocolDistStatsTable. + + The index is composed of the protocolDistControlIndex of the + associated protocolDistControlEntry followed by the + protocolDirLocalIndex of the associated protocol that this + entry represents. In other words, the index identifies the + protocol distribution an entry is a part of as well as the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsTable 1 } + +ProtocolDistStatsEntry ::= SEQUENCE { + protocolDistStatsPkts ZeroBasedCounter32, + protocolDistStatsOctets ZeroBasedCounter32 +} + +protocolDistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors received of this + protocol type. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { protocolDistStatsEntry 1 } + +protocolDistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + + + + + + STATUS current + DESCRIPTION + "The number of octets in packets received of this protocol + type since it was added to the protocolDistStatsTable + (excluding framing bits but including FCS octets), except for + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { protocolDistStatsEntry 2 } + +-- +-- Address Map Group (addressMap) +-- +-- Lists MAC address to network address bindings discovered by the +-- probe and what interface they were last seen on. +-- addressMapControlTable +-- addressMapTable + +addressMapInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + inserted into the addressMapTable. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 1 } + +addressMapDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an address mapping entry has been + deleted from the addressMapTable (for any reason). If + an entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. + + Note that the table size can be determined by subtracting + addressMapDeletes from addressMapInserts." + ::= { addressMap 2 } + + + + + + +addressMapMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + addressMapTable. The probe will not create more than + this number of entries in the table, but may choose to create + fewer entries in this table for any reason including the lack + of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { addressMap 3 } + +addressMapControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table to control the collection of network layer address to + physical address to interface mappings. + + Note that this is not like the typical RMON + controlTable and dataTable in which each entry creates + its own data table. Each entry in this table enables the + discovery of addresses on a new interface and the placement + of address mappings into the central addressMapTable. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of address mappings is available." + ::= { addressMap 4 } + +addressMapControlEntry OBJECT-TYPE + SYNTAX AddressMapControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapControlTable. + + + + + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1" + INDEX { addressMapControlIndex } + ::= { addressMapControlTable 1 } + +AddressMapControlEntry ::= SEQUENCE { + addressMapControlIndex Integer32, + addressMapControlDataSource DataSource, + addressMapControlDroppedFrames Counter32, + addressMapControlOwner OwnerString, + addressMapControlStatus RowStatus +} + +addressMapControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this entry in the addressMapControlTable." + ::= { addressMapControlEntry 1 } + +addressMapControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this addressMapControlEntry." + ::= { addressMapControlEntry 2 } + +addressMapControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { addressMapControlEntry 3 } + + + + + + +addressMapControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { addressMapControlEntry 4 } + +addressMapControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this addressMap control entry. + + 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 addressMapTable shall be deleted." + ::= { addressMapControlEntry 5 } + +addressMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of network layer address to physical address to + interface mappings. + + The probe will add entries to this table based on the source + MAC and network addresses seen in packets without MAC-level + errors. The probe will populate this table for all protocols + in the protocol directory table whose value of + protocolDirAddressMapConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirAddressMapConfig value of supportedOff(2)." + ::= { addressMap 5 } + +addressMapEntry OBJECT-TYPE + SYNTAX AddressMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the addressMapTable. + The protocolDirLocalIndex in the index identifies the network + layer protocol of the addressMapNetworkAddress. + + + + + + An example of the indexing of this entry is + addressMapSource.783495.18.4.128.2.6.6.11.1.3.6.1.2.1.2.2.1.1.1" + INDEX { addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource } + ::= { addressMapTable 1 } + +AddressMapEntry ::= SEQUENCE { + addressMapTimeMark TimeFilter, + addressMapNetworkAddress OCTET STRING, + addressMapSource OBJECT IDENTIFIER, + addressMapPhysicalAddress OCTET STRING, + addressMapLastChange TimeStamp +} + +addressMapTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { addressMapEntry 1 } + +addressMapNetworkAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this relation. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the + index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { addressMapEntry 2 } + +addressMapSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface or port on which the associated network + address was most recently seen. + + + + + + If this address mapping was discovered on an interface, this + object shall identify the instance of the ifIndex + object, defined in [3,5], for the desired interface. + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + If this address mapping was discovered on a port, this + object shall identify the instance of the rptrGroupPortIndex + object, defined in [RFC1516], for the desired port. + For example, if an entry were to receive data from + group #1, port #1, this object would be set to + rptrGroupPortIndex.1.1. + + Note that while the dataSource associated with this entry + may only point to index objects, this object may at times + point to repeater port objects. This situation occurs when + the dataSource points to an interface which is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater." + ::= { addressMapEntry 3 } + +addressMapPhysicalAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last source physical address on which the associated + network address was seen. If the protocol of the associated + network address was encapsulated inside of a network-level or + higher protocol, this will be the address of the next-lower + protocol with the addressRecognitionCapable bit enabled and + will be formatted as specified for that protocol." + ::= { addressMapEntry 4 } + +addressMapLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + created or the values of the physical address changed. + + This can be used to help detect duplicate address problems, in + which case this object will be updated frequently." + ::= { addressMapEntry 5 } + +-- +-- Network Layer Host Group + + + + + +-- +-- Counts the amount of traffic sent from and to each network address +-- discovered by the probe. +-- Note that while the hlHostControlTable also has objects that +-- control an optional alHostTable, implementation of the alHostTable is +-- not required to fully implement this group. + +hlHostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher layer (i.e. non-MAC) host table control entries. + + These entries will enable the collection of the network and + application level host tables indexed by network addresses. + Both the network and application level host tables are + controlled by this table is so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore (note that + if an implementation stores application layer host records in + memory, it can derive network layer host records from them). + + Entries in the nlHostTable will be created on behalf of each + entry in this table. Additionally, if this probe implements + the alHostTable, entries in the alHostTable will be created on + behalf of each entry in this table. + + Implementations are encouraged to add an entry per monitored + interface upon initialization so that a default collection + of host statistics is available." + ::= { nlHost 1 } + +hlHostControlEntry OBJECT-TYPE + SYNTAX HlHostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + hlHostControlNlDroppedFrames.1" + INDEX { hlHostControlIndex } + ::= { hlHostControlTable 1 } + +HlHostControlEntry ::= SEQUENCE { + hlHostControlIndex Integer32, + hlHostControlDataSource DataSource, + + + + + + hlHostControlNlDroppedFrames Counter32, + hlHostControlNlInserts Counter32, + hlHostControlNlDeletes Counter32, + hlHostControlNlMaxDesiredEntries Integer32, + hlHostControlAlDroppedFrames Counter32, + hlHostControlAlInserts Counter32, + hlHostControlAlDeletes Counter32, + hlHostControlAlMaxDesiredEntries Integer32, + hlHostControlOwner OwnerString, + hlHostControlStatus RowStatus +} + +hlHostControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlHostControlTable. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + nlHostTable, and optionally in the alHostTable, on + behalf of this hlHostControlEntry." + ::= { hlHostControlEntry 1 } + +hlHostControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the associated host tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hlHostControlStatus object is equal to active(1)." + ::= { hlHostControlEntry 2 } + +hlHostControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for the associated + + + + + + nlHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlHostTable is inactive because no protocols + are enabled in the protocol directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 3 } + +hlHostControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + inserted into the nlHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 4 } + +hlHostControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlHost entry has been + deleted from the nlHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + + + + + + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlNlDeletes from hlHostControlNlInserts." + ::= { hlHostControlEntry 5 } + +hlHostControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlHostTable on behalf of this control entry. The probe will + not create more than this number of associated entries in the + table, but may choose to create fewer entries in this table + for any reason including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to `active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 6 } + +hlHostControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for the associated + alHost entries for whatever reason. Most often, this event + occurs when the probe is out of some resources and decides to + shed load from this collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + + + + + + Note that if the alHostTable is not implemented or is inactive + because no protocols are enabled in the protocol directory, + this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlHostControlEntry 7 } + +hlHostControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + inserted into the alHost table. If an entry is inserted, then + deleted, and then inserted, this counter will be incremented + by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + ::= { hlHostControlEntry 8 } + +hlHostControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alHost entry has been + deleted from the alHost table (for any reason). If an entry + is deleted, then inserted, and then deleted, this counter will + be incremented by 2. + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlHostControlAlDeletes from hlHostControlAlInserts." + + + + + + ::= { hlHostControlEntry 9 } + +hlHostControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the alHost + table on behalf of this control entry. The probe will not + create more than this number of associated entries in the + table, but may choose to create fewer entries in this table + for any reason including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + hlHostControlStatus object is equal to `active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlHostControlEntry 10 } + +hlHostControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlHostControlEntry 11 } + +hlHostControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlHostControlEntry. + + 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 nlHostTable and alHostTable shall be deleted." + + + + + + ::= { hlHostControlEntry 12 } + +nlHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular network layer + address that has been discovered on an interface of this + device. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses seen + as the source or destination address in all packets with no + MAC errors, and will increment octet and packet counts in the + table for all packets with no MAC errors." +::= { nlHost 2 } + +nlHostEntry OBJECT-TYPE + SYNTAX NlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlHostAddress. + + An example of the indexing of this entry is + nlHostOutPkts.1.783495.18.4.128.2.6.6." + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostTable 1 } + +NlHostEntry ::= SEQUENCE { + nlHostTimeMark TimeFilter, + nlHostAddress OCTET STRING, + nlHostInPkts ZeroBasedCounter32, + nlHostOutPkts ZeroBasedCounter32, + nlHostInOctets ZeroBasedCounter32, + nlHostOutOctets ZeroBasedCounter32, + + + + + + nlHostOutMacNonUnicastPkts ZeroBasedCounter32, + nlHostCreateTime LastCreateTime +} + +nlHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlHostEntry 1 } + +nlHostAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this nlHostEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlHostEntry 2 } + +nlHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 3 } + +nlHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by + + + + + + this address since it was added to the nlHostTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { nlHostEntry 4 } + +nlHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits but including FCS octets), excluding + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 5 } + +nlHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits but including FCS octets), excluding + those octets in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { nlHostEntry 6 } + +nlHostOutMacNonUnicastPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by this + address that were directed to any MAC broadcast addresses + or to any MAC multicast addresses since this host was + added to the nlHostTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + + + + + + ::= { nlHostEntry 7 } + +nlHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlHostEntry 8 } + +-- +-- Network Layer Matrix Group +-- +-- Counts the amount of traffic sent between each pair of network +-- addresses discovered by the probe. +-- Note that while the hlMatrixControlTable also has objects that +-- control optional alMatrixTables, implementation of the +-- alMatrixTables is not required to fully implement this group. + +hlMatrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlMatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of higher layer (i.e. non-MAC) matrix control entries. + + These entries will enable the collection of the network and + application level matrix tables containing conversation + statistics indexed by pairs of network addresses. + Both the network and application level matrix tables are + controlled by this table is so that they will both be created + and deleted at the same time, further increasing the ease with + which they can be implemented as a single datastore (note that + if an implementation stores application layer matrix records + in memory, it can derive network layer matrix records from + them). + + Entries in the nlMatrixSDTable and nlMatrixDSTable will be + created on behalf of each entry in this table. Additionally, + if this probe implements the alMatrix tables, entries in the + alMatrix tables will be created on behalf of each entry in + this table." + ::= { nlMatrix 1 } + +hlMatrixControlEntry OBJECT-TYPE + SYNTAX HlMatrixControlEntry + + + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1" + INDEX { hlMatrixControlIndex } + ::= { hlMatrixControlTable 1 } + +HlMatrixControlEntry ::= SEQUENCE { + hlMatrixControlIndex Integer32, + hlMatrixControlDataSource DataSource, + hlMatrixControlNlDroppedFrames Counter32, + hlMatrixControlNlInserts Counter32, + hlMatrixControlNlDeletes Counter32, + hlMatrixControlNlMaxDesiredEntries Integer32, + hlMatrixControlAlDroppedFrames Counter32, + hlMatrixControlAlInserts Counter32, + hlMatrixControlAlDeletes Counter32, + hlMatrixControlAlMaxDesiredEntries Integer32, + hlMatrixControlOwner OwnerString, + hlMatrixControlStatus RowStatus +} + +hlMatrixControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hlMatrixControlTable. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + nlMatrixSDTable and the nlMatrixDSTable, and optionally the + alMatrixSDTable and alMatrixDSTable, on behalf of this + hlMatrixControlEntry." + ::= { hlMatrixControlEntry 1 } + +hlMatrixControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of the data for the associated matrix tables. + + The statistics in this group reflect all packets + on the local network segment attached to the + + + + + + identified interface. + + This object may not be modified if the associated + hlMatrixControlStatus object is equal to active(1)." + ::= { hlMatrixControlEntry 2 } + +hlMatrixControlNlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the nlMatrixTables are inactive because no + protocols are enabled in the protocol directory, this value + should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 3 } + +hlMatrixControlNlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + inserted into the nlMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the nlMatrixSDTable and nlMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + + + + + Note that the sum of then nlMatrixSDTable and nlMatrixDSTable + sizes can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 4 } + +hlMatrixControlNlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an nlMatrix entry has been + deleted from the nlMatrix tables (for any reason). If an + entry is deleted, then inserted, and then deleted, this + counter will be incremented by 2. The deletion of a + conversation from both the nlMatrixSDTable and nlMatrixDSTable + shall be counted as two deletions (even though every deletion + from one table must be accompanied by a deletion from the + other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlNlDeletes from hlMatrixControlNlInserts." + ::= { hlMatrixControlEntry 5 } + +hlMatrixControlNlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + nlMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table, but may choose to create fewer entries in this + table for any reason including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + + + + + + hlMatrixControlStatus object is equal to `active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 6 } + +hlMatrixControlAlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that if the alMatrixTables are not implemented or are + inactive because no protocols are enabled in the protocol + directory, this value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { hlMatrixControlEntry 7 } + +hlMatrixControlAlInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + inserted into the alMatrix tables. If an entry is inserted, + then deleted, and then inserted, this counter will be + incremented by 2. The addition of a conversation into both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two insertions (even though every addition into one table must + be accompanied by an insertion into the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + + + + + + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 8 } + +hlMatrixControlAlDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an alMatrix entry has been + deleted from the alMatrix tables. If an entry is deleted, + then inserted, and then deleted, this counter will be + incremented by 2. The deletion of a conversation from both + the alMatrixSDTable and alMatrixDSTable shall be counted as + two deletions (even though every deletion from one table must + be accompanied by a deletion from the other). + + To allow for efficient implementation strategies, agents may + delay updating this object for short periods of time. For + example, an implementation strategy may allow internal + data structures to differ from those visible via SNMP for + short periods of time. This counter may reflect the internal + data structures for those short periods of time. + + Note that the table size can be determined by subtracting + hlMatrixControlAlDeletes from hlMatrixControlAlInserts." + ::= { hlMatrixControlEntry 9 } + +hlMatrixControlAlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + alMatrix tables on behalf of this control entry. The probe + will not create more than this number of associated entries in + the table, but may choose to create fewer entries in this + table for any reason including the lack of resources. + + If this object is set to a value less than the current number + of entries, enough entries are chosen in an + implementation-dependent manner and deleted so that the number + of entries in the table equals the value of this object. + + If this value is set to -1, the probe may create any number + of entries in this table. If the associated + + + + + + hlMatrixControlStatus object is equal to `active', this + object may not be modified. + + This object may be used to control how resources are allocated + on the probe for the various RMON functions." + ::= { hlMatrixControlEntry 10 } + +hlMatrixControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlMatrixControlEntry 11 } + +hlMatrixControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hlMatrixControlEntry. + + 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 nlMatrixSDTable, + nlMatrixDSTable, alMatrixSDTable, and the alMatrixDSTable + shall be deleted by the agent." + ::= { hlMatrixControlEntry 12 } + +nlMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries which collect statistics for + conversations between two network-level addresses. This table + is indexed first by the source address and then by the + destination address to make it convenient to collect all + conversations from a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + + + + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors, and will increment + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixDSTable with the same + source address and destination address." + ::= { nlMatrix 2 } + +nlMatrixSDEntry OBJECT-TYPE + SYNTAX NlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + + An example of the indexing of this table is + nlMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7" + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress } + ::= { nlMatrixSDTable 1 } + +NlMatrixSDEntry ::= SEQUENCE { + nlMatrixSDTimeMark TimeFilter, + nlMatrixSDSourceAddress OCTET STRING, + nlMatrixSDDestAddress OCTET STRING, + nlMatrixSDPkts ZeroBasedCounter32, + nlMatrixSDOctets ZeroBasedCounter32, + nlMatrixSDCreateTime LastCreateTime +} + +nlMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixSDEntry 1 } + + + + + + +nlMatrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixSDEntry 2 } + +nlMatrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixSDEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixSDEntry 3 } + +nlMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixSDTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixSDEntry 4 } + + + + + + +nlMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address to + the destination address since this entry was added to the + nlMatrixSDTable (excluding framing bits but + including FCS octets), excluding those octets in packets that + contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { nlMatrixSDEntry 5 } + +nlMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixSDEntry 6 } + + +-- Traffic matrix tables from destination to source + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries which collect statistics for + conversations between two network-level addresses. This table + is indexed first by the destination address and then by the + source address to make it convenient to collect all + conversations to a particular address. + + The probe will populate this table for all network layer + protocols in the protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses + seen in all packets with no MAC errors, and will increment + + + + + + octet and packet counts in the table for all packets with no + MAC errors. + + Further, this table will only contain entries that have a + corresponding entry in the nlMatrixSDTable with the same + source address and destination address." + ::= { nlMatrix 3 } + +nlMatrixDSEntry OBJECT-TYPE + SYNTAX NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The protocolDirLocalIndex value in the index identifies the + network layer protocol of the nlMatrixDSSourceAddress and + nlMatrixDSDestAddress. + + An example of the indexing of this table is + nlMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6" + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress } + ::= { nlMatrixDSTable 1 } + +NlMatrixDSEntry ::= SEQUENCE { + nlMatrixDSTimeMark TimeFilter, + nlMatrixDSSourceAddress OCTET STRING, + nlMatrixDSDestAddress OCTET STRING, + nlMatrixDSPkts ZeroBasedCounter32, + nlMatrixDSOctets ZeroBasedCounter32, + nlMatrixDSCreateTime LastCreateTime +} + +nlMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixDSEntry 1 } + +nlMatrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + + + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixDSEntry 2 } + +nlMatrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this + nlMatrixDSEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixDSEntry 3 } + +nlMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted from the + source address to the destination address since this entry was + added to the nlMatrixDSTable. Note that this is the number of + link-layer packets, so if a single network-layer packet is + fragmented into several link-layer frames, this counter is + incremented several times." + ::= { nlMatrixDSEntry 4 } + +nlMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + + + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted from the source address + to the destination address since this entry was added to the + nlMatrixDSTable (excluding framing bits but + including FCS octets), excluding those octets in packets that + contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { nlMatrixDSEntry 5 } + +nlMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { nlMatrixDSEntry 6 } + +nlMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { nlMatrix 4 } + +nlMatrixTopNControlEntry OBJECT-TYPE + SYNTAX NlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3" + INDEX { nlMatrixTopNControlIndex } + ::= { nlMatrixTopNControlTable 1 } + +NlMatrixTopNControlEntry ::= SEQUENCE { + nlMatrixTopNControlIndex Integer32, + + + + + + nlMatrixTopNControlMatrixIndex Integer32, + nlMatrixTopNControlRateBase INTEGER, + nlMatrixTopNControlTimeRemaining Integer32, + nlMatrixTopNControlGeneratedReports Counter32, + nlMatrixTopNControlDuration Integer32, + nlMatrixTopNControlRequestedSize Integer32, + nlMatrixTopNControlGrantedSize Integer32, + nlMatrixTopNControlStartTime TimeStamp, + nlMatrixTopNControlOwner OwnerString, + nlMatrixTopNControlStatus RowStatus +} + +nlMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one top N report prepared for + one interface." + ::= { nlMatrixTopNControlEntry 1 } + +nlMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The nlMatrix[SD/DS] table for which a top N report will be + prepared on behalf of this entry. The nlMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)." + ::= { nlMatrixTopNControlEntry 2 } + +nlMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { + nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by. + + + + + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1)." + ::= { nlMatrixTopNControlEntry 3 } + +nlMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report, and is immediately loaded into the associated + nlMatrixTopNControlDuration object. + When the report finishes, the probe will automatically + start another collection with the same initial value + of nlMatrixTopNControlTimeRemaining. Thus the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the nlMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the nlMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used in + the hostTopNTable)." + DEFVAL { 1800 } + ::= { nlMatrixTopNControlEntry 4 } + +nlMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { nlMatrixTopNControlEntry 5 } + +nlMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + + + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated nlMatrixTopNControlTimeRemaining object is + set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the nlMatrixTopNControlTimeRemaining is set. + This value shall be zero if no reports have been + requested for this nlMatrixTopNControlEntry." + ::= { nlMatrixTopNControlEntry 6 } + +nlMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set nlMatrixTopNControlGrantedSize as closely to this + object as is possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { nlMatrixTopNControlEntry 7 } + +nlMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated nlMatrixTopNControlRequestedSize object is + created or modified, the probe should set this + object as closely to the requested value as is + possible for the particular implementation and + available resources. The probe must not lower this + value except as a result of a set to the associated + nlMatrixTopNControlRequestedSize object. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNPktRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + + + + + + matrix entries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, when the next topN report is generated, + matrix entries with the highest value of nlMatrixTopNOctetRate + shall be placed in this table in decreasing order of this rate + until there is no more room or until there are no more + matrix entries. + + It is an implementation-specific matter how entries with the + same value of nlMatrixTopNPktRate or nlMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether or not zero-valued entries are available." + ::= { nlMatrixTopNControlEntry 8 } + +nlMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated nlMatrixTopNControlTimeRemaining object was + modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine if a report was missed or not." + ::= { nlMatrixTopNControlEntry 9 } + +nlMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { nlMatrixTopNControlEntry 10 } + +nlMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this nlMatrixTopNControlEntry. + + 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 nlMatrixTopNTable shall be deleted + by the agent." + ::= { nlMatrixTopNControlEntry 11 } + +nlMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those network layer matrix entries + that have counted the highest number of octets or packets." + ::= { nlMatrix 5 } + +nlMatrixTopNEntry OBJECT-TYPE + SYNTAX NlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the nlMatrixTopNTable. + + The nlMatrixTopNControlIndex value in the index identifies the + nlMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + nlMatrixTopNPktRate.3.10" + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNTable 1 } + +NlMatrixTopNEntry ::= SEQUENCE { + nlMatrixTopNIndex Integer32, + nlMatrixTopNProtocolDirLocalIndex Integer32, + nlMatrixTopNSourceAddress OCTET STRING, + nlMatrixTopNDestAddress OCTET STRING, + nlMatrixTopNPktRate Gauge32, + nlMatrixTopNReversePktRate Gauge32, + nlMatrixTopNOctetRate Gauge32, + nlMatrixTopNReverseOctetRate Gauge32 +} + +nlMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the nlMatrixTopNTable among those in the same report. + + + + + + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNPkts, increasing values of nlMatrixTopNIndex shall + be assigned to entries with decreasing values of + nlMatrixTopNPktRate until index N is assigned or there are no + more nlMatrixTopNEntries. + + If the value of nlMatrixTopNControlRateBase is equal to + nlMatrixTopNOctets, increasing values of nlMatrixTopNIndex + shall be assigned to entries with decreasing values of + nlMatrixTopNOctetRate until index N is assigned or there are + no more nlMatrixTopNEntries." + ::= { nlMatrixTopNEntry 1 } + +nlMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network layer protocol of + this entry's network address." + ::= { nlMatrixTopNEntry 2 } + +nlMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the source host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the protocolDirLocalIndex indicates an + encapsulation of ip, this object is encoded as a length + octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixTopNEntry 3 } + +nlMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + + + "The network layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated nlMatrixTopNProtocolDirLocalIndex. + + For example, if the nlMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of ip, this object is encoded as a + length octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { nlMatrixTopNEntry 4 } + +nlMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object. + If the value of nlMatrixTopNControlRateBase is + nlMatrixTopNPkts, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 5 } + +nlMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixSDPkts object (note + that the corresponding nlMatrixSDPkts object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNPkts, the sort of topN entries is based + entirely on nlMatrixTopNPktRate, and not on the value of this + object." + ::= { nlMatrixTopNEntry 6 } + +nlMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + + + + + + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, counted + using the rules for counting the nlMatrixSDOctets object. If + the value of nlMatrixTopNControlRateBase is + nlMatrixTopNOctets, this variable will be used to sort this + report." + ::= { nlMatrixTopNEntry 7 } + +nlMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, counted + using the rules for counting the nlMatrixDSOctets object (note + that the corresponding nlMatrixSDOctets object selected is the + one whose source address is equal to nlMatrixTopNDestAddress + and whose destination address is equal to + nlMatrixTopNSourceAddress.) + + Note that if the value of nlMatrixTopNControlRateBase is equal + to nlMatrixTopNOctets, the sort of topN entries is based + entirely on nlMatrixTopNOctetRate, and not on the value of + this object." + ::= { nlMatrixTopNEntry 8 } + +-- Application Layer Functions +-- +-- The application layer host, matrix, and matrixTopN functions report +-- on protocol usage at the network layer or higher. Note that the +-- use of the term application layer does not imply that only +-- application-layer protocols are counted, rather it means that +-- protocols up to and including the application layer are supported. + +-- +-- Application Layer Host Group +-- +-- Counts the amount of traffic, by protocol, sent from and to each +-- network address discovered by the probe. +-- Implementation of this group requires implementation of the Network +-- Layer Host Group. + +alHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostEntry + MAX-ACCESS not-accessible + + + + + + STATUS current + DESCRIPTION + "A collection of statistics for a particular protocol from a + particular network address that has been discovered on an + interface of this device. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirHostConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirHostConfig value of supportedOff(2). + + The probe will add to this table all addresses + seen as the source or destination address in all packets with + no MAC errors, and will increment octet and packet counts in + the table for all packets with no MAC errors. Further, + entries will only be added to this table if their address + exists in the nlHostTable and will be deleted from this table + if their address is deleted from the nlHostTable." + ::= { alHost 1 } + +alHostEntry OBJECT-TYPE + SYNTAX AlHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alHostTable. + + The hlHostControlIndex value in the index identifies the + hlHostControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network layer protocol of the address. + The nlHostAddress value in the index identifies the network + layer address of this entry. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing in this entry is + alHostOutPkts.1.783495.18.4.128.2.6.6.34" + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostTable 1 } + +AlHostEntry ::= SEQUENCE { + alHostTimeMark TimeFilter, + alHostInPkts ZeroBasedCounter32, + alHostOutPkts ZeroBasedCounter32, + + + + + + alHostInOctets ZeroBasedCounter32, + alHostOutOctets ZeroBasedCounter32, + alHostCreateTime LastCreateTime +} + +alHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alHostEntry 1 } + +alHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted to this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 2 } + +alHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted by this address since it was added to the + alHostTable. Note that this is the number of link-layer + packets, so if a single network-layer packet is fragmented + into several link-layer frames, this counter is incremented + several times." + ::= { alHostEntry 3 } + +alHostInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + of this protocol type since it was added to the + alHostTable (excluding framing bits but including + + + + + + FCS octets), excluding those octets in packets that + contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alHostEntry 4 } + +alHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + of this protocol type since it was added to the + alHostTable (excluding framing bits but including + FCS octets), excluding those octets in packets that + contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alHostEntry 5 } + +alHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alHostEntry 6 } + +-- +-- Application Layer Matrix Group +-- +-- Counts the amount of traffic, by protocol, sent between each pair +-- of network addresses discovered by the probe. +-- Implementation of this group requires implementation of the Network +-- Layer Matrix Group. + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries which collect + + + + + + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the source address and then by the destination address to make + it convenient to collect all statistics from a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors, and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixSDTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixSDTable." + ::= { alMatrix 1 } + +alMatrixSDEntry OBJECT-TYPE + SYNTAX AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixSDTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network layer protocol of the nlMatrixSDSourceAddress and + nlMatrixSDDestAddress. + The nlMatrixSDSourceAddress value in the index identifies the + network layer address of the source host in this conversation. + The nlMatrixSDDestAddress value in the index identifies the + network layer address of the destination host in this + conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixSDPkts.1.783495.18.4.128.2.6.6.4.128.2.6.7.34" + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress, + protocolDirLocalIndex } + ::= { alMatrixSDTable 1 } + + + + + +AlMatrixSDEntry ::= SEQUENCE { + alMatrixSDTimeMark TimeFilter, + alMatrixSDPkts ZeroBasedCounter32, + alMatrixSDOctets ZeroBasedCounter32, + alMatrixSDCreateTime LastCreateTime +} + +alMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixSDEntry 1 } + +alMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixSDEntry 2 } + +alMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDTable (excluding + framing bits but including FCS octets), excluding those octets + in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alMatrixSDEntry 3 } + +alMatrixSDCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + + + + + + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixSDEntry 4 } + +-- Traffic matrix tables from destination to source + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries which collect + statistics for conversations of a particular protocol between + two network-level addresses. This table is indexed first by + the destination address and then by the source address to make + it convenient to collect all statistics to a particular + address. + + The probe will populate this table for all protocols in the + protocol directory table whose value of + protocolDirMatrixConfig is equal to supportedOn(3), and + will delete any entries whose protocolDirEntry is deleted or + has a protocolDirMatrixConfig value of supportedOff(2). + + The probe will add to this table all pairs of addresses for + all protocols seen in all packets with no MAC errors, and will + increment octet and packet counts in the table for all packets + with no MAC errors. Further, entries will only be added to + this table if their address pair exists in the nlMatrixDSTable + and will be deleted from this table if the address pair is + deleted from the nlMatrixDSTable." + ::= { alMatrix 2 } + +alMatrixDSEntry OBJECT-TYPE + SYNTAX AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixDSTable. + + The hlMatrixControlIndex value in the index identifies the + hlMatrixControlEntry on whose behalf this entry was created. + The first protocolDirLocalIndex value in the index identifies + the network layer protocol of the alMatrixDSSourceAddress and + alMatrixDSDestAddress. + + + + + + The nlMatrixDSDestAddress value in the index identifies the + network layer address of the destination host in this + conversation. + The nlMatrixDSSourceAddress value in the index identifies the + network layer address of the source host in this conversation. + The second protocolDirLocalIndex value in the index identifies + the protocol that is counted by this entry. + + An example of the indexing of this entry is + alMatrixDSPkts.1.783495.18.4.128.2.6.7.4.128.2.6.6.34" + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress, + protocolDirLocalIndex } + ::= { alMatrixDSTable 1 } + +AlMatrixDSEntry ::= SEQUENCE { + alMatrixDSTimeMark TimeFilter, + alMatrixDSPkts ZeroBasedCounter32, + alMatrixDSOctets ZeroBasedCounter32, + alMatrixDSCreateTime LastCreateTime +} + +alMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixDSEntry 1 } + +alMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type without errors + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable. Note that + this is the number of link-layer packets, so if a single + network-layer packet is fragmented into several link-layer + frames, this counter is incremented several times." + ::= { alMatrixDSEntry 2 } + +alMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + + + + + + STATUS current + DESCRIPTION + "The number of octets in packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSTable (excluding + framing bits but including FCS octets), excluding those octets + in packets that contained errors. + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alMatrixDSEntry 3 } + +alMatrixDSCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last activated. + This can be used by the management station to ensure that the + entry has not been deleted and recreated between polls." + ::= { alMatrixDSEntry 4 } + +alMatrixTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric." + ::= { alMatrix 3 } + +alMatrixTopNControlEntry OBJECT-TYPE + SYNTAX AlMatrixTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3" + INDEX { alMatrixTopNControlIndex } + ::= { alMatrixTopNControlTable 1 } + +AlMatrixTopNControlEntry ::= SEQUENCE { + alMatrixTopNControlIndex Integer32, + alMatrixTopNControlMatrixIndex Integer32, + + + + + + alMatrixTopNControlRateBase INTEGER, + alMatrixTopNControlTimeRemaining Integer32, + alMatrixTopNControlGeneratedReports Counter32, + alMatrixTopNControlDuration Integer32, + alMatrixTopNControlRequestedSize Integer32, + alMatrixTopNControlGrantedSize Integer32, + alMatrixTopNControlStartTime TimeStamp, + alMatrixTopNControlOwner OwnerString, + alMatrixTopNControlStatus RowStatus +} + +alMatrixTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one top N report prepared for + one interface." + ::= { alMatrixTopNControlEntry 1 } + +alMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alMatrix[SD/DS] table for which a top N report will be + prepared on behalf of this entry. The alMatrix[SD/DS] table + is identified by the value of the hlMatrixControlIndex + for that table - that value is used here to identify the + particular table. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 2 } + +alMatrixTopNControlRateBase OBJECT-TYPE + SYNTAX INTEGER { + alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each alMatrix[SD/DS] entry that the + + + + + + alMatrixTopNEntries are sorted by, as well as the + selector of the view of the matrix table that will be + used. + + The values alMatrixTopNTerminalsPkts and + alMatrixTopNTerminalsOctets cause collection only from + protocols that have no child protocols that are counted. The + values alMatrixTopNAllPkts and alMatrixTopNAllOctets cause + collection from all alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)." + ::= { alMatrixTopNControlEntry 3 } + +alMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds left in the report currently + being collected. When this object is modified by + the management station, a new collection is started, + possibly aborting a currently running report. The + new value is used as the requested duration of this + report, and is immediately loaded into the associated + alMatrixTopNControlDuration object. + When the report finishes, the probe will automatically + start another collection with the same initial value + of alMatrixTopNControlTimeRemaining. Thus the management + station may simply read the resulting reports repeatedly, + checking the startTime and duration each time to ensure that a + report was not missed or that the report parameters were not + changed. + + While the value of this object is non-zero, it decrements + by one per second until it reaches zero. At the time + that this object decrements to zero, the report is made + accessible in the alMatrixTopNTable, overwriting any report + that may be there. + + When this object is modified by the management station, any + associated entries in the alMatrixTopNTable shall be deleted. + + (Note that this is a different algorithm than the one used in + the hostTopNTable)." + DEFVAL { 1800 } + ::= { alMatrixTopNControlEntry 4 } + + + + + + +alMatrixTopNControlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { alMatrixTopNControlEntry 5 } + +alMatrixTopNControlDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval. + + When the associated alMatrixTopNControlTimeRemaining object + is set, this object shall be set by the probe to the + same value and shall not be modified until the next + time the alMatrixTopNControlTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this alMatrixTopNControlEntry." + ::= { alMatrixTopNControlEntry 6 } + +alMatrixTopNControlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of matrix entries requested for this report. + + When this object is created or modified, the probe + should set alMatrixTopNControlGrantedSize as closely to this + object as is possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { alMatrixTopNControlEntry 7 } + +alMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of matrix entries in this report. + + When the associated alMatrixTopNControlRequestedSize object + is created or modified, the probe should set this + + + + + + object as closely to the requested value as is + possible for the particular implementation and + available resources. The probe must not lower this + value except as a result of a set to the associated + alMatrixTopNControlRequestedSize object. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNPktRate shall be placed in this table in + decreasing order of this rate until there is no more room or + until there are no more matrix entries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, when the + next topN report is generated, matrix entries with the highest + value of alMatrixTopNOctetRate shall be placed in this table + in decreasing order of this rate until there is no more room + or until there are no more matrix entries. + + It is an implementation-specific matter how entries with the + same value of alMatrixTopNPktRate or alMatrixTopNOctetRate are + sorted. It is also an implementation-specific matter as to + whether or not zero-valued entries are available." + ::= { alMatrixTopNControlEntry 8 } + +alMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated alMatrixTopNControlTimeRemaining object + was modified to start the requested report or the time + the report was last automatically (re)started. + + This object may be used by the management station to + determine if a report was missed or not." + ::= { alMatrixTopNControlEntry 9 } + +alMatrixTopNControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + + + + + + ::= { alMatrixTopNControlEntry 10 } + +alMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this alMatrixTopNControlEntry. + + 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 alMatrixTopNTable shall be + deleted by the agent." + ::= { alMatrixTopNControlEntry 11 } + +alMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those application layer matrix + entries that have counted the highest number of octets or + packets." + ::= { alMatrix 4 } + +alMatrixTopNEntry OBJECT-TYPE + SYNTAX AlMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the alMatrixTopNTable. + + The alMatrixTopNControlIndex value in the index identifies + the alMatrixTopNControlEntry on whose behalf this entry was + created. + + An example of the indexing of this table is + alMatrixTopNPktRate.3.10" + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNTable 1 } + +AlMatrixTopNEntry ::= SEQUENCE { + alMatrixTopNIndex Integer32, + alMatrixTopNProtocolDirLocalIndex Integer32, + alMatrixTopNSourceAddress OCTET STRING, + alMatrixTopNDestAddress OCTET STRING, + + + + + + alMatrixTopNAppProtocolDirLocalIndex Integer32, + alMatrixTopNPktRate Gauge32, + alMatrixTopNReversePktRate Gauge32, + alMatrixTopNOctetRate Gauge32, + alMatrixTopNReverseOctetRate Gauge32 + } + +alMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the alMatrixTopNTable among those in the same report. + This index is between 1 and N, where N is the + number of entries in this report. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, increasing + values of alMatrixTopNIndex shall be assigned to entries with + decreasing values of alMatrixTopNPktRate until index N is + assigned or there are no more alMatrixTopNEntries. + + If the value of alMatrixTopNControlRateBase is equal to + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, + increasing values of alMatrixTopNIndex shall be assigned to + entries with decreasing values of alMatrixTopNOctetRate until + index N is assigned or there are no more alMatrixTopNEntries." + ::= { alMatrixTopNEntry 1 } + +alMatrixTopNProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex of the network layer protocol of + this entry's network address." + ::= { alMatrixTopNEntry 2 } + +alMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the source host in this + conversation. + This is represented as an octet string with + specific semantics and length as identified + + + + + + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of ip, this object is encoded as a + length octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { alMatrixTopNEntry 3 } + +alMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network layer address of the destination host in this + conversation. + + This is represented as an octet string with + specific semantics and length as identified + by the associated alMatrixTopNProtocolDirLocalIndex. + + For example, if the alMatrixTopNProtocolDirLocalIndex + indicates an encapsulation of ip, this object is encoded as a + length octet of 4, followed by the 4 octets of the ip address, + in network byte order." + ::= { alMatrixTopNEntry 4 } + +alMatrixTopNAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the protocol counted by this matrix entry." + ::= { alMatrixTopNEntry 5 } + +alMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDPkts + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 6 } + + + + + +alMatrixTopNReversePktRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSPkts object (note that the corresponding + alMatrixSDPkts object selected is the one whose source address + is equal to alMatrixTopNDestAddress and whose destination + address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + to alMatrixTopNTerminalsPkts or alMatrixTopNAllPkts, the sort + of topN entries is based entirely on alMatrixTopNPktRate, and + not on the value of this object." + ::= { alMatrixTopNEntry 7 } + +alMatrixTopNOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the source + host to the destination host during this sampling interval, + counted using the rules for counting the alMatrixSDOctets + object. + + If the value of alMatrixTopNControlRateBase is + alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, this + variable will be used to sort this report." + ::= { alMatrixTopNEntry 8 } + +alMatrixTopNReverseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen of this protocol from the + destination host to the source host during this sampling + interval, counted using the rules for counting the + alMatrixDSOctets object (note that the corresponding + alMatrixSDOctets object selected is the one whose source + address is equal to alMatrixTopNDestAddress and whose + destination address is equal to alMatrixTopNSourceAddress.) + + Note that if the value of alMatrixTopNControlRateBase is equal + + + + + + to alMatrixTopNTerminalsOctets or alMatrixTopNAllOctets, the + sort of topN entries is based entirely on + alMatrixTopNOctetRate, and not on the value of this object." + ::= { alMatrixTopNEntry 9 } + +-- +-- User History Collection Group (usrHistory) +-- +-- The usrHistory group combines mechanisms seen in the alarm and +-- history groups to provide user-specified history collection, +-- utilizing two additional control tables and one additional data +-- table. This function has traditionally been done by NMS +-- applications, via periodic polling. The usrHistory group allows +-- this task to be offloaded to an RMON probe. +-- +-- Data (an ASN.1 INTEGER based object) is collected in the same +-- manner as any history data table (e.g. etherHistoryTable) except +-- that the user specifies the MIB instances to be collected. Objects +-- are collected in bucket-groups, with the intent that all MIB +-- instances in the same bucket-group are collected as atomically as +-- possible by the RMON probe. +-- +-- The usrHistoryControlTable is a one-dimensional read-create table. +-- Each row configures a collection of user history buckets, much +-- the same as a historyControlEntry, except that the creation of a +-- row in this table will cause one or more associated instances in +-- the usrHistoryObjectTable to be created. The user specifies the +-- number of bucket elements (rows in the usrHistoryObjectTable) +-- requested, as well as the number of buckets requested. +-- +-- The usrHistoryObjectTable is a 2-d read-write table. +-- Each row configures a single MIB instance to be collected. +-- All rows with the same major index constitute a bucket-group. +-- +-- The usrHistoryTable is a 3-d read-only table containing +-- the data of associated usrHistoryControlEntries. Each +-- entry represents the value of a single MIB instance +-- during a specific sampling interval (or the rate of +-- change during the interval). +-- +-- A sample value is stored in two objects - an absolute value and +-- a status object. This allows numbers from -(2G-1) to +4G to be +-- stored. The status object also indicates whether a sample is +-- valid. This allows data collection to continue if periodic +-- retrieval of a particular instance fails for any reason. +-- +-- Row Creation Order Relationships +-- + + + + + +-- The static nature of the usrHistoryObjectTable creates +-- some row creation/modification issues. The rows in this +-- table need to be set before the associated +-- usrHistoryControlEntry can be activated. +-- +-- Note that the usrHistoryObject entries associated with a +-- particular usrHistoryControlEntry are not required to +-- be active before the control entry is activated. However, +-- the usrHistory data entries associated with an inactive +-- usrHistoryObject entry will be inactive (i.e. +-- usrHistoryValStatus == valueNotAvailable). +-- + +usrHistoryControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 1 } + +usrHistoryControlEntry OBJECT-TYPE + SYNTAX UsrHistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a group of user-defined + MIB objects to be sampled periodically (called a + bucket-group). + + For example, an instance of usrHistoryControlInterval + might be named usrHistoryControlInterval.1" + INDEX { usrHistoryControlIndex } + ::= { usrHistoryControlTable 1 } + +UsrHistoryControlEntry ::= SEQUENCE { + usrHistoryControlIndex Integer32, + usrHistoryControlObjects Integer32, + usrHistoryControlBucketsRequested Integer32, + usrHistoryControlBucketsGranted Integer32, + usrHistoryControlInterval Integer32, + usrHistoryControlOwner OwnerString, + usrHistoryControlStatus RowStatus +} + +usrHistoryControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + + + + + + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + usrHistoryControlTable. Each such entry defines a + set of samples at a particular interval for a specified + set of MIB instances available from the managed system." + ::= { usrHistoryControlEntry 1 } + +usrHistoryControlObjects OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of MIB objects to be collected + in the portion of usrHistoryTable associated with this + usrHistoryControlEntry. + + This object may not be modified if the associated instance + of usrHistoryControlStatus is equal to active(1)." + ::= { usrHistoryControlEntry 2 } + +usrHistoryControlBucketsRequested OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + usrHistoryTable associated with this usrHistoryControlEntry. + + When this object is created or modified, the probe + should set usrHistoryControlBucketsGranted as closely to + this object as is possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { usrHistoryControlEntry 3 } + +usrHistoryControlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the usrHistoryTable associated with this + usrHistoryControlEntry. + + When the associated usrHistoryControlBucketsRequested + + + + + + object is created or modified, the probe should set + this object as closely to the requested value as is + possible for the particular probe implementation and + available resources. The probe must not lower this + value except as a result of a modification to the associated + usrHistoryControlBucketsRequested object. + + The associated usrHistoryControlBucketsRequested object + should be set before or at the same time as this object + to allow the probe to accurately estimate the resources + required for this usrHistoryControlEntry. + + There will be times when the actual number of buckets + associated with this entry is less than the value of + this object. In this case, at the end of each sampling + interval, a new bucket will be added to the usrHistoryTable. + + When the number of buckets reaches the value of this object + and a new bucket is to be added to the usrHistoryTable, + the oldest bucket associated with this usrHistoryControlEntry + shall be deleted by the agent so that the new bucket can be + added. + + When the value of this object changes to a value less than + the current value, entries are deleted from the + usrHistoryTable associated with this usrHistoryControlEntry. + Enough of the oldest of these entries shall be deleted by the + agent so that their number remains less than or equal to the + new value of this object. + + When the value of this object changes to a value greater + than the current value, the number of associated usrHistory + entries may be allowed to grow." + ::= { usrHistoryControlEntry 4 } + + +usrHistoryControlInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the usrHistory + table associated with this usrHistoryControlEntry. + + Because the counters in a bucket may overflow at their + maximum value with no indication, a prudent manager will + take into account the possibility of overflow in any of + + + + + + the associated counters. It is important to consider the + minimum time in which any counter could overflow on a + particular media type and set the usrHistoryControlInterval + object to a value less than this interval. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + DEFVAL { 1800 } + ::= { usrHistoryControlEntry 5 } + +usrHistoryControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { usrHistoryControlEntry 6 } + +usrHistoryControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this variable history control entry. + + 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 usrHistoryTable shall be deleted." + ::= { usrHistoryControlEntry 7 } + +-- Object table + +usrHistoryObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 2 } + +usrHistoryObjectEntry OBJECT-TYPE + SYNTAX UsrHistoryObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + + + "A list of MIB instances to be sampled periodically. + + Entries in this table are created when an associated + usrHistoryControlObjects object is created. + + The usrHistoryControlIndex value in the index is + that of the associated usrHistoryControlEntry. + + For example, an instance of usrHistoryObjectVariable might be + usrHistoryObjectVariable.1.3" + INDEX { usrHistoryControlIndex, usrHistoryObjectIndex } + ::= { usrHistoryObjectTable 1 } + +UsrHistoryObjectEntry ::= SEQUENCE { + usrHistoryObjectIndex Integer32, + usrHistoryObjectVariable OBJECT IDENTIFIER, + usrHistoryObjectSampleType INTEGER +} + +usrHistoryObjectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically." + ::= { usrHistoryObjectEntry 1 } + + +usrHistoryObjectVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the particular variable to be + sampled. + + Only variables that resolve to an ASN.1 primitive type of + Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be + sampled. + + Because SNMP access control is articulated entirely in terms + of the contents of MIB views, no access control mechanism + exists that can restrict the value of this object to identify + only those objects that exist in a particular MIB view. + Because there is thus no acceptable means of restricting the + read access that could be obtained through the user history + + + + + + mechanism, the probe must only grant write access to this + object in those views that have read access to all objects on + the probe. + + During a set operation, if the supplied variable name is not + available in the selected MIB view, a badValue error must be + returned. + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 2 } + +usrHistoryObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable for storage in + the usrHistoryTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the history + bucket. + + If the value of this object is deltaValue(2), the value of the + selected variable at the last sample will be subtracted from + the current value, and the difference will be stored in the + history bucket. If the associated usrHistoryObjectVariable + instance could not be obtained at the previous sample + interval, then a delta sample is not possible, and the value + of the associated usrHistoryValStatus object for this interval + will be valueNotAvailable(1). + + This object may not be modified if the associated + usrHistoryControlStatus object is equal to active(1)." + ::= { usrHistoryObjectEntry 3 } + +-- data table + +usrHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of user defined history entries." + + + + + + ::= { usrHistory 3 } + +usrHistoryEntry OBJECT-TYPE + SYNTAX UsrHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry which set up the + parameters for a regular collection of these samples. + + The usrHistoryControlIndex value in the index identifies the + usrHistoryControlEntry on whose behalf this entry was created. + + The usrHistoryObjectIndex value in the index identifies the + usrHistoryObjectEntry on whose behalf this entry was created. + + For example, an instance of usrHistoryAbsValue, which represents + the 14th sample of a variable collected as specified by + usrHistoryControlEntry.1 and usrHistoryObjectEntry.1.5, + would be named usrHistoryAbsValue.1.14.5" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryTable 1 } + +UsrHistoryEntry ::= SEQUENCE { + usrHistorySampleIndex Integer32, + usrHistoryIntervalStart TimeStamp, + usrHistoryIntervalEnd TimeStamp, + usrHistoryAbsValue Gauge32, + usrHistoryValStatus INTEGER +} + +usrHistorySampleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies the particular sample this + entry represents among all samples associated with the same + usrHistoryControlEntry. This index starts at 1 and increases + by one as each new sample is taken." + ::= { usrHistoryEntry 1 } + +usrHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + + + + + + DESCRIPTION + "The value of sysUpTime at the start of the interval over + which this sample was measured. If the probe keeps track of + the time of day, it should start the first sample of the + history at a time such that when the next hour of the day + begins, a sample is started at that instant. + + Note that following this rule may require the probe to delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample which + is currently being collected is not accessible in this table + until the end of its interval." + ::= { usrHistoryEntry 2 } + +usrHistoryIntervalEnd OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the end of the interval over which + this sample was measured." + ::= { usrHistoryEntry 3 } + +usrHistoryAbsValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e. unsigned value) of the + user-specified statistic during the last sampling period. The + value during the current sampling period is not made available + until the period is completed. + + To obtain the true value for this sampling interval, the + associated instance of usrHistoryValStatus must be checked, + and usrHistoryAbsValue adjusted as necessary. + + If the MIB instance could not be accessed during the sampling + interval, then this object will have a value of zero and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'." + ::= { usrHistoryEntry 4 } + + +usrHistoryValStatus OBJECT-TYPE + SYNTAX INTEGER { + valueNotAvailable(1), + valuePositive(2), + + + + + + valueNegative(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the validity and sign of the data in + the associated instance of usrHistoryAbsValue. + + If the MIB instance could not be accessed during the sampling + interval, then 'valueNotAvailable(1)' will be returned. + + If the sample is valid and actual value of the sample is + greater than or equal to zero then 'valuePositive(2)' is + returned. + + If the sample is valid and the actual value of the sample is + less than zero, 'valueNegative(3)' will be returned. The + associated instance of usrHistoryAbsValue should be multiplied + by -1 to obtain the true sample value." + ::= { usrHistoryEntry 5 } + +-- The Probe Configuration Group +-- +-- This group controls the configuration of various operating +-- parameters of the probe. + +ControlString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to communicate with a modem or a + serial data switch. A ControlString contains embedded + commands to control how the device will interact with the + remote device through the serial interface. Commands are + represented as two character sequences beginning with + the `^' character. + + The following commands are recognized by the device (note + that command characters are case sensitive): + + ^s Send string that follows which is terminated by the + next command or the end of string. + ^c Delay for the number of seconds that follows. Toss + out any data received rather than storing it in a + buffer for parsing. + ^t Set timeout to the value represented by the decimal + digits that follow. The default timeout is 20 + seconds. Note that this timeout may be overridden + by a smaller serialTimeout configured for the + + + + + + associated serial interface (see serialConfigTable). + ^w Wait for the reply string that follows which is + terminated by the next command or the end of string. + Partial and case insensitive matching is applied, ie. + if the reply string (any case combination) is found + anywhere in the received string, then the a match is + found. If the current timeout elapses without a match, + then the remaining control string is ignored. + ^! The ^ character. + ^d Delay the number of seconds specified by the decimal + digits that follow. + ^b Send break for the number of milliseconds specified by + the decimal digits that follow. If no digits follow, + break will be enforced for 250 milliseconds by default. + + The following ASCII control characters may be inserted into + the `^s' send string or the `^w' reply string: + + ^@ 0x00 + ^A 0x01 + .. + ^M 0x0D + .. + ^Z 0x1A + ^[ 0x1B + ^ 0x1C + ^] 0x1D + ^^ 0x1E + ^_ 0x1F + + Binary data may also be inserted into the data stream. The + control sequence for each byte of binary data is ^0x##, where + ## is the hexadecimal representation of the data byte. Two + ASCII characters (0-9, a-f, A-F) must follow the `^0x' + control prefix. For example, `^0x0D^0x0A' is interpreted as a + carriage return followed by a line feed." + SYNTAX DisplayString + +probeCapabilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) +-- SYNTAX BITS { +-- etherStats(0), +-- historyControl(1), +-- etherHistory(2), +-- alarm(3), +-- hosts(4), +-- hostTopN(5), +-- matrix(6), +-- filter(7), +-- capture(8), +-- event(9), +-- tokenRingMLStats(10), +-- tokenRingPStats(11), +-- tokenRingMLHistory(12), +-- tokenRingPHistory(13), +-- ringStation(14), +-- ringStationOrder(15), +-- ringStationConfig(16), +-- sourceRouting(17), +-- protocolDirectory(18), +-- protocolDistribution(19), +-- addressMapping(20), +-- nlHost(21), +-- nlMatrix(22), +-- alHost(23), +-- alMatrix(24), +-- usrHistory(25), +-- probeConfig(26) +-- } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 1 } + +probeSoftwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The software revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 2 } + +probeHardwareRev OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hardware revision of this device. This string will have + a zero length if the revision is unknown." + ::= { probeConfig 3 } + +probeDateTime OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8 | 11)) + MAX-ACCESS read-write + + + + + + STATUS current + DESCRIPTION + "Probe's current date and time. + + field octets contents range + ----- ------ -------- ----- + 1 1-2 year 0..65536 + 2 3 month 1..12 + 3 4 day 1..31 + 4 5 hour 0..23 + 5 6 minutes 0..59 + 6 7 seconds 0..60 + (use 60 for leap-second) + 7 8 deci-seconds 0..9 + 8 9 direction from UTC '+' / '-' + 9 10 hours from UTC 0..11 + 10 11 minutes from UTC 0..59 + + For example, Tuesday May 26, 1992 at 1:30:15 PM + EDT would be displayed as: + + 1992-5-26,13:30:15.0,-4:0 + + Note that if only local time is known, then + timezone information (fields 8-10) is not + present, and if no time information is known, the null + string is returned." + ::= { probeConfig 4 } + +probeResetControl OBJECT-TYPE + SYNTAX INTEGER { + running(1), + warmBoot(2), + coldBoot(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to warmBoot(2) causes the device to + restart the application software with current configuration + parameters saved in non-volatile memory. Setting this + object to coldBoot(3) causes the device to reinitialize + configuration parameters in non-volatile memory to default + values and restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + + + + + + +-- The following download objects do not restrict an implementation +-- from implementing additional download mechanisms (controlled in an +-- implementation-specific manner). Further, in the case where the RMON +-- agent shares a processor with other types of systems, the +-- implementation is not required to download those non-RMON functions +-- with this mechanism. + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The file name to be downloaded from the TFTP server when a + download is next requested via this MIB. This value is set to + the zero length string when no file name has been specified." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP address of the TFTP server that contains the boot + image to load when a download is next requested via this MIB. + This value is set to `0.0.0.0' when no IP address has been + specified." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { + notDownloading(1), + downloadToPROM(2), + downloadToRAM(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this object is set to downloadToRAM(2) or + downloadToPROM(3), the device will discontinue its + normal operation and begin download of the image specified + by probeDownloadFile from the server specified by + probeDownloadTFTPServer using the TFTP protocol. If + downloadToRAM(2) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(3) is specified + the new image is written to the flash EPROM + memory after its checksum has been verified to be correct. + When the download process is completed, the device will + + + + + + warm boot to restart the newly loaded application. + When the device is not downloading, this object will have + a value of notDownloading(1)." + ::= { probeConfig 8 } + +probeDownloadStatus OBJECT-TYPE + SYNTAX INTEGER { + downloadSuccess(1), + downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the last download procedure, if any. This + object will have a value of downloadStatusUnknown(2) if no + download process has been performed." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of configuration parameters for a particular + serial interface on this device. If the device has no serial + interfaces, this table is empty. + + The index is composed of the ifIndex assigned to this serial + line interface." + INDEX { ifIndex } + ::= { serialConfigTable 1 } + + + + + + +SerialConfigEntry ::= SEQUENCE { + serialMode INTEGER, + serialProtocol INTEGER, + serialTimeout Integer32 (1..65535), + serialModemInitString ControlString (SIZE (0..255)), + serialModemHangUpString ControlString (SIZE (0..255)), + serialModemConnectResp DisplayString (SIZE (0..255)), + serialModemNoConnectResp DisplayString (SIZE (0..255)), + serialDialoutTimeout Integer32 (1..65535), + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + modem(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of incoming connection to expect on this serial + interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { + other(1), + slip(2), + ppp(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of data link encapsulation to be used on this + serial interface." + DEFVAL { slip } + ::= { serialConfigEntry 2 } + +serialTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This timeout value is used when the Management Station has + initiated the conversation over the serial link. This variable + represents the number of seconds of inactivity allowed before + terminating the connection on this serial interface. Use the + + + + + + serialDialoutTimeout in the case where the probe has initiated + the connection for the purpose of sending a trap." + DEFVAL { 300 } + ::= { serialConfigEntry 3 } + +serialModemInitString OBJECT-TYPE + SYNTAX ControlString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control string which controls how a modem attached to this + serial interface should be initialized. The initialization + is performed once during startup and again after each + connection is terminated if the associated serialMode has the + value of modem(2). + + A control string that is appropriate for a wide variety of + modems is: '^s^MATE0Q0V1X4 S0=1 S2=43^M'." + ::= { serialConfigEntry 4 } + +serialModemHangUpString OBJECT-TYPE + SYNTAX ControlString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control string which specifies how to disconnect a modem + connection on this serial interface. This object is only + meaningful if the associated serialMode has the value + of modem(2). + A control string that is appropriate for a wide variety of + modems is: '^d2^s+++^d2^sATH0^M^d2'." + ::= { serialConfigEntry 5 } + +serialModemConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An ASCII string containing substrings that describe the + expected modem connection response code and associated bps + rate. The substrings are delimited by the first character + in the string, for example: + /CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600 + will be interpreted as: + response code bps rate + CONNECT 300 + CONNECT 1200 1200 + + + + + + CONNECT 2400 2400 + CONNECT 4800 4800 + CONNECT 9600 9600 + The agent will use the information in this string to adjust + the bps rate of this serial interface once a modem connection + is established. + + A value that is appropriate for a wide variety of modems is: + '/CONNECT/300/CONNECT 1200/1200/CONNECT 2400/2400/ + CONNECT 4800/4800/CONNECT 9600/9600/CONNECT 14400/14400/ + CONNECT 19200/19200/CONNECT 38400/38400/'." + ::= { serialConfigEntry 6 } + +serialModemNoConnectResp OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An ASCII string containing response codes that may be + generated by a modem to report the reason why a connection + attempt has failed. The response codes are delimited by + the first character in the string, for example: + /NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/ + If one of these response codes is received via this serial + interface while attempting to make a modem connection, + the agent will issue the hang up command as specified by + serialModemHangUpString. + + A value that is appropriate for a wide variety of modems is: + '/NO CARRIER/BUSY/NO DIALTONE/NO ANSWER/ERROR/'." + ::= { serialConfigEntry 7 } + +serialDialoutTimeout OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This timeout value is used when the probe initiates the + serial connection with the intention of contacting a + management station. This variable represents the number + of seconds of inactivity allowed before terminating the + connection on this serial interface." + DEFVAL { 20 } + ::= { serialConfigEntry 8 } + +serialStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + + + STATUS current + DESCRIPTION + "The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConfigEntry 9 } + +netConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF NetConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of netConfigEntries." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of configuration parameters for a particular + network interface on this device. If the device has no network + interface, this table is empty. + + The index is composed of the ifIndex assigned to the + corresponding interface." + INDEX { ifIndex } + ::= { netConfigTable 1 } + +NetConfigEntry ::= SEQUENCE { + netConfigIPAddress IpAddress, + netConfigSubnetMask IpAddress, + netConfigStatus RowStatus +} + +netConfigIPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask are 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails, before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + + + + + + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask are 0.0.0.0, then when the device + boots, it may use BOOTP to try to figure out what these + values should be. If BOOTP fails, before the device + can talk on the network, this value must be configured + (e.g., through a terminal attached to the device). If BOOTP is + used, care should be taken to not send BOOTP broadcasts too + frequently and to eventually send very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { netConfigEntry 3 } + +netDefaultGateway OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0." + ::= { probeConfig 12 } + +-- Trap Destination Table +-- +-- This table defines the destination addresses for traps generated +-- from the device. This table maps a community to one or more trap +-- destination entries. +-- + + + + + +-- The same trap will be sent to all destinations specified in the +-- entries that have the same trapDestCommunity as the eventCommunity +-- (as defined by RMON MIB). Information in this table will be stored +-- in non-volatile memory. If the device has gone through a hard +-- restart, this information will be reset to its default state. + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry includes a destination IP address to which to send + traps for this community." + INDEX { trapDestIndex } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestIndex Integer32, + trapDestCommunity OCTET STRING, + trapDestProtocol INTEGER, + trapDestAddress OCTET STRING, + trapDestOwner OwnerString, + trapDestStatus RowStatus +} + +trapDestIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A community to which this destination address belongs. + This entry is associated with any eventEntries in the RMON + + + + + + MIB whose value of eventCommunity is equal to the value of + this object. Every time an associated event entry sends a + trap due to an event, that trap will be sent to each + address in the trapDestTable with a trapDestCommunity equal to + eventCommunity. + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 2 } + +trapDestProtocol OBJECT-TYPE + SYNTAX INTEGER { + ip(1), + ipx(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The protocol with which to send this trap." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address to send traps on behalf of this entry. + + If the associated trapDestProtocol object is equal to ip(1), + the encoding of this object is the same as the snmpUDPAddress + textual convention in [RFC1906]: + -- for a SnmpUDPAddress of length 6: + -- + -- octets contents encoding + -- 1-4 IP-address network-byte order + -- 5-6 UDP-port network-byte order + + If the associated trapDestProtocol object is equal to ipx(2), + the encoding of this object is the same as the snmpIPXAddress + textual convention in [RFC1906]: + -- for a SnmpIPXAddress of length 12: + -- + -- octets contents encoding + -- 1-4 network-number network-byte order + -- 5-10 physical-address network-byte order + -- 11-12 socket-number network-byte order + + This object may not be modified if the associated + + + + + + trapDestStatus object is equal to active(1)." + ::= { trapDestEntry 4 } + +trapDestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { trapDestEntry 5 } + +trapDestStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this trap destination entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { trapDestEntry 6 } + +-- Serial Connection Table +-- +-- The device may communicate with a management station using +-- SLIP. In order for the device to send traps via SLIP, it must +-- be able to initiate a connection over the serial interface. The +-- serialConnectionTable stores the parameters for such connection +-- initiation. + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of serialConnectionEntries." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration for a SLIP link over a serial line." + INDEX { serialConnectIndex } + ::= { serialConnectionTable 1 } + + + + + + +SerialConnectionEntry ::= SEQUENCE { + serialConnectIndex Integer32, + serialConnectDestIpAddress IpAddress, + serialConnectType INTEGER, + serialConnectDialString ControlString, + serialConnectSwitchConnectSeq ControlString, + serialConnectSwitchDisconnectSeq ControlString, + serialConnectSwitchResetSeq ControlString, + serialConnectOwner OwnerString, + serialConnectStatus RowStatus +} + +serialConnectIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Address that can be reached at the other end of this + serial connection. + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 2 } + + +serialConnectType OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + modem(2), + switch(3), + modemSwitch(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of outgoing connection to make. If this object + has the value direct(1), then a direct serial connection + is assumed. If this object has the value modem(2), + then serialConnectDialString will be used to make a modem + connection. If this object has the value switch(3), + + + + + + then serialConnectSwitchConnectSeq will be used to establish + the connection over a serial data switch, and + serialConnectSwitchDisconnectSeq will be used to terminate + the connection. If this object has the value + modem-switch(4), then a modem connection will be made first + followed by the switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + + DEFVAL { direct } + ::= { serialConnectionEntry 3 } + +serialConnectDialString OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control string which specifies how to dial the phone + number in order to establish a modem connection. The + string should include dialing prefix and suffix. For + example: ``^s^MATD9,888-1234^M'' will instruct the Probe + to send a carriage return followed by the dialing prefix + ``ATD'', the phone number ``9,888-1234'', and a carriage + return as the dialing suffix. + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 4 } + +serialConnectSwitchConnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control string which specifies how to establish a + data switch connection. + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 5 } + +serialConnectSwitchDisconnectSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control string which specifies how to terminate a + data switch connection. + This object may not be modified if the associated + + + + + + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 6 } + +serialConnectSwitchResetSeq OBJECT-TYPE + SYNTAX ControlString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control string which specifies how to reset a data + switch in the event of a timeout. + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)." + ::= { serialConnectionEntry 7 } + +serialConnectOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { serialConnectionEntry 8 } + +serialConnectStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this serialConnectionEntry. + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to modem(2) or modem-switch(4) + and the serialConnectDialString is a zero-length string or + cannot be correctly parsed as a ConnectString, the set + request will be rejected with badValue(3). + + If the manager attempts to set this object to active(1) when + the serialConnectType is set to switch(3) or modem-switch(4) + and the serialConnectSwitchConnectSeq, + the serialConnectSwitchDisconnectSeq, or + the serialConnectSwitchResetSeq are zero-length strings + or cannot be correctly parsed as ConnectStrings, the set + request will be rejected with badValue(3). + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value." + ::= { serialConnectionEntry 9 } + + + + + + +-- +-- Extensions to the RMON 1 MIB for RMON 2 devices +-- +-- These extensions include the standard LastCreateTime Textual +-- Convention for all control tables, as well as an augmentation of +-- the filter entry that provides variable-length offsets into +-- packets. + + +-- Each of the following, except for filterDroppedFrames, is a +-- read-only object which, if implemented, automatically appears when +-- the RMON1 row it is associated with is created. + +etherStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 4 } + +etherStats2Entry OBJECT-TYPE + SYNTAX EtherStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { etherStatsEntry } + ::= { etherStats2Table 1 } + +EtherStats2Entry ::= SEQUENCE { + etherStatsDroppedFrames Counter32, + etherStatsCreateTime LastCreateTime +} + +etherStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + + + + + + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { etherStats2Entry 1 } + +etherStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { etherStats2Entry 2 } + +historyControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { history 5 } + +historyControl2Entry OBJECT-TYPE + SYNTAX HistoryControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { historyControlEntry } + ::= { historyControl2Table 1 } + +HistoryControl2Entry ::= SEQUENCE { + historyControlDroppedFrames Counter32 +} + +historyControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + + + + + + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { historyControl2Entry 1 } + +hostControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { hosts 4 } + +hostControl2Entry OBJECT-TYPE + SYNTAX HostControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { hostControlEntry } + ::= { hostControl2Table 1 } + +HostControl2Entry ::= SEQUENCE { + hostControlDroppedFrames Counter32, + hostControlCreateTime LastCreateTime +} + +hostControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + + + + + + ::= { hostControl2Entry 1 } + +hostControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { hostControl2Entry 2 } + +matrixControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { matrix 4 } + +matrixControl2Entry OBJECT-TYPE + SYNTAX MatrixControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { matrixControlEntry } + ::= { matrixControl2Table 1 } + +MatrixControl2Entry ::= SEQUENCE { + matrixControlDroppedFrames Counter32, + matrixControlCreateTime LastCreateTime +} + +matrixControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + + + + + + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { matrixControl2Entry 1 } + +matrixControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { matrixControl2Entry 2 } + +channel2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { filter 3 } + +channel2Entry OBJECT-TYPE + SYNTAX Channel2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { channelEntry } + ::= { channel2Table 1 } + +Channel2Entry ::= SEQUENCE { + channelDroppedFrames Counter32, + channelCreateTime LastCreateTime +} + +channelDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + + + + + + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { channel2Entry 1 } + +channelCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This can be used by the management station to + ensure that the table has not been deleted and recreated + between polls." + ::= { channel2Entry 2 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingMLStatsEntry } + ::= { tokenRingMLStats2Table 1 } + +TokenRingMLStats2Entry ::= SEQUENCE { + tokenRingMLStatsDroppedFrames Counter32, + tokenRingMLStatsCreateTime LastCreateTime +} + +tokenRingMLStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + + + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingMLStats2Entry 1 } + +tokenRingMLStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last activated. + This can be used by the management station to ensure that the + table has not been deleted and recreated between polls." + ::= { tokenRingMLStats2Entry 2 } + +tokenRingPStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { tokenRingPStatsEntry } + ::= { tokenRingPStats2Table 1 } + +TokenRingPStats2Entry ::= SEQUENCE { + tokenRingPStatsDroppedFrames Counter32, + tokenRingPStatsCreateTime LastCreateTime +} + +tokenRingPStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + + + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { tokenRingPStats2Entry 1 } + +tokenRingPStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last activated. + This can be used by the management station to ensure that the + table has not been deleted and recreated between polls." + ::= { tokenRingPStats2Entry 2 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { ringStationControlEntry } + ::= { ringStationControl2Table 1 } + +RingStationControl2Entry ::= SEQUENCE { + ringStationControlDroppedFrames Counter32, + ringStationControlCreateTime LastCreateTime +} + + + + + +ringStationControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { ringStationControl2Entry 1 } + +ringStationControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last activated. + This can be used by the management station to ensure that the + table has not been deleted and recreated between polls." + ::= { ringStationControl2Entry 2 } + +sourceRoutingStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + AUGMENTS { sourceRoutingStatsEntry } + ::= { sourceRoutingStats2Table 1 } + +SourceRoutingStats2Entry ::= SEQUENCE { + sourceRoutingStatsDroppedFrames Counter32, + + + + + + sourceRoutingStatsCreateTime LastCreateTime +} + +sourceRoutingStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + for which the probe chose not to count for this entry for + whatever reason. Most often, this event occurs when the probe + is out of some resources and decides to shed load from this + collection. + + This count does not include packets that were not counted + because they had MAC-layer errors. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { sourceRoutingStats2Entry 1 } + +sourceRoutingStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last activated. + This can be used by the management station to ensure that the + table has not been deleted and recreated between polls." + ::= { sourceRoutingStats2Entry 2 } + +filter2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + ::= { filter 4 } + +filter2Entry OBJECT-TYPE + SYNTAX Filter2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + + + + + + AUGMENTS { filterEntry } + ::= { filter2Table 1 } + +Filter2Entry ::= SEQUENCE { + filterProtocolDirDataLocalIndex Integer32, + filterProtocolDirLocalIndex Integer32 +} + +filterProtocolDirDataLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with performs the following operations on + every packet: + + 1) - If the packet doesn't match the protocol directory entry + identified by this object, discard the packet and exit + (i.e., discard the packet if it is not of the identified + protocol). + 2) - If the associated filterProtocolDirLocalIndex is non-zero + and the packet doesn't match the protocol directory + entry identified by that object, discard the packet and + exit + 3) - If the packet matches, perform the regular filter + algorithm as if the beginning of this named protocol is + the beginning of the packet, potentially applying the + filterOffset value to move further into the packet." + DEFVAL { 0 } + ::= { filter2Entry 1 } + +filterProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this object is set to a non-zero value, the filter that + it is associated with will discard the packet if the packet + doesn't match this protocol directory entry." + DEFVAL { 0 } + ::= { filter2Entry 2 } + +-- Conformance Macros + +rmon2MIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 1 } +rmon2MIBGroups OBJECT IDENTIFIER ::= { rmonConformance 2 } + + + + + + +rmon2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB" + MODULE -- this module + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems which + implement RMON [RFC1757]" + ::= { rmon2MIBCompliances 1 } + +rmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the RMON2 MIB with Application Layer Enhancements." + MODULE -- this module + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + alHostGroup, + alMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems which + implement RMON [RFC1757]" + ::= { rmon2MIBCompliances 2 } + + +protocolDirectoryGroup OBJECT-GROUP + OBJECTS { protocolDirLastChange, + protocolDirLocalIndex, protocolDirDescr, + protocolDirType, protocolDirAddressMapConfig, + protocolDirHostConfig, protocolDirMatrixConfig, + + + + + + protocolDirOwner, protocolDirStatus } + STATUS current + DESCRIPTION + "Lists the inventory of protocols the probe has the capability + of monitoring and allows the addition, deletion, and + configuration of entries in this list." + ::= { rmon2MIBGroups 1 } + +protocolDistributionGroup OBJECT-GROUP + OBJECTS { protocolDistControlDataSource, + protocolDistControlDroppedFrames, + protocolDistControlCreateTime, + protocolDistControlOwner, protocolDistControlStatus, + protocolDistStatsPkts, protocolDistStatsOctets } + STATUS current + DESCRIPTION + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment." + ::= { rmon2MIBGroups 2 } + +addressMapGroup OBJECT-GROUP + OBJECTS { addressMapInserts, addressMapDeletes, + addressMapMaxDesiredEntries, + addressMapControlDataSource, + addressMapControlDroppedFrames, + addressMapControlOwner, addressMapControlStatus, + addressMapPhysicalAddress, + addressMapLastChange } + STATUS current + DESCRIPTION + "Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on." + ::= { rmon2MIBGroups 3 } + +nlHostGroup OBJECT-GROUP + OBJECTS { hlHostControlDataSource, + hlHostControlNlDroppedFrames, hlHostControlNlInserts, + hlHostControlNlDeletes, + hlHostControlNlMaxDesiredEntries, + hlHostControlAlDroppedFrames, hlHostControlAlInserts, + hlHostControlAlDeletes, + hlHostControlAlMaxDesiredEntries, hlHostControlOwner, + hlHostControlStatus, nlHostInPkts, nlHostOutPkts, + nlHostInOctets, nlHostOutOctets, + nlHostOutMacNonUnicastPkts, nlHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent from and to each network + + + + + + address discovered by the probe. Note that while the + hlHostControlTable also has objects that control an optional + alHostTable, implementation of the alHostTable is not required + to fully implement this group." + ::= { rmon2MIBGroups 4 } + +nlMatrixGroup OBJECT-GROUP + OBJECTS { hlMatrixControlDataSource, + hlMatrixControlNlDroppedFrames, + hlMatrixControlNlInserts, hlMatrixControlNlDeletes, + hlMatrixControlNlMaxDesiredEntries, + hlMatrixControlAlDroppedFrames, + hlMatrixControlAlInserts, hlMatrixControlAlDeletes, + hlMatrixControlAlMaxDesiredEntries, + hlMatrixControlOwner, hlMatrixControlStatus, + nlMatrixSDPkts, nlMatrixSDOctets, nlMatrixSDCreateTime, + nlMatrixDSPkts, nlMatrixDSOctets, nlMatrixDSCreateTime, + nlMatrixTopNControlMatrixIndex, + nlMatrixTopNControlRateBase, + nlMatrixTopNControlTimeRemaining, + nlMatrixTopNControlGeneratedReports, + nlMatrixTopNControlDuration, + nlMatrixTopNControlRequestedSize, + nlMatrixTopNControlGrantedSize, + nlMatrixTopNControlStartTime, + nlMatrixTopNControlOwner, nlMatrixTopNControlStatus, + nlMatrixTopNProtocolDirLocalIndex, + nlMatrixTopNSourceAddress, nlMatrixTopNDestAddress, + nlMatrixTopNPktRate, nlMatrixTopNReversePktRate, + nlMatrixTopNOctetRate, nlMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe. Note that while the + hlMatrixControlTable also has objects that control optional + alMatrixTables, implementation of the alMatrixTables is not + required to fully implement this group." + ::= { rmon2MIBGroups 5 } + +alHostGroup OBJECT-GROUP + OBJECTS { alHostInPkts, alHostOutPkts, + alHostInOctets, alHostOutOctets, alHostCreateTime } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe. Implementation + of this group requires implementation of the Network Layer + Host Group." + + + + + + ::= { rmon2MIBGroups 6 } + +alMatrixGroup OBJECT-GROUP + OBJECTS { alMatrixSDPkts, alMatrixSDOctets, alMatrixSDCreateTime, + alMatrixDSPkts, alMatrixDSOctets, alMatrixDSCreateTime, + alMatrixTopNControlMatrixIndex, + alMatrixTopNControlRateBase, + alMatrixTopNControlTimeRemaining, + alMatrixTopNControlGeneratedReports, + alMatrixTopNControlDuration, + alMatrixTopNControlRequestedSize, + alMatrixTopNControlGrantedSize, + alMatrixTopNControlStartTime, + alMatrixTopNControlOwner, alMatrixTopNControlStatus, + alMatrixTopNProtocolDirLocalIndex, + alMatrixTopNSourceAddress, alMatrixTopNDestAddress, + alMatrixTopNAppProtocolDirLocalIndex, + alMatrixTopNPktRate, alMatrixTopNReversePktRate, + alMatrixTopNOctetRate, alMatrixTopNReverseOctetRate } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe. Implementation of this group requires implementation of + the Network Layer Matrix Group." + ::= { rmon2MIBGroups 7 } + +usrHistoryGroup OBJECT-GROUP + OBJECTS { usrHistoryControlObjects, + usrHistoryControlBucketsRequested, + usrHistoryControlBucketsGranted, + usrHistoryControlInterval, + usrHistoryControlOwner, usrHistoryControlStatus, + usrHistoryObjectVariable, usrHistoryObjectSampleType, + usrHistoryIntervalStart, usrHistoryIntervalEnd, + usrHistoryAbsValue, usrHistoryValStatus } + STATUS current + DESCRIPTION + "The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe." + ::= { rmon2MIBGroups 8 } + +probeInformationGroup OBJECT-GROUP + OBJECTS { probeCapabilities, + probeSoftwareRev, probeHardwareRev, probeDateTime } + STATUS current + DESCRIPTION + "This group describes various operating parameters of the + + + + + + probe as well as controlling the local time of the probe." + ::= { rmon2MIBGroups 9 } + +probeConfigurationGroup OBJECT-GROUP + OBJECTS { probeResetControl, probeDownloadFile, + probeDownloadTFTPServer, probeDownloadAction, + probeDownloadStatus, + serialMode, serialProtocol, serialTimeout, + serialModemInitString, serialModemHangUpString, + serialModemConnectResp, serialModemNoConnectResp, + serialDialoutTimeout, serialStatus, + netConfigIPAddress, netConfigSubnetMask, + netConfigStatus, netDefaultGateway, + trapDestCommunity, trapDestProtocol, trapDestAddress, + trapDestOwner, trapDestStatus, + serialConnectDestIpAddress, serialConnectType, + serialConnectDialString, serialConnectSwitchConnectSeq, + serialConnectSwitchDisconnectSeq, + serialConnectSwitchResetSeq, + serialConnectOwner, serialConnectStatus } + STATUS current + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe." + ::= { rmon2MIBGroups 10 } + +rmon1EnhancementGroup OBJECT-GROUP + OBJECTS { historyControlDroppedFrames, hostControlDroppedFrames, + hostControlCreateTime, matrixControlDroppedFrames, + matrixControlCreateTime, channelDroppedFrames, + channelCreateTime, filterProtocolDirDataLocalIndex, + filterProtocolDirLocalIndex } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 11 } + +rmon1EthernetEnhancementGroup OBJECT-GROUP + OBJECTS { etherStatsDroppedFrames, etherStatsCreateTime } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 12 } + +rmon1TokenRingEnhancementGroup OBJECT-GROUP + OBJECTS { tokenRingMLStatsDroppedFrames, + + + + + + tokenRingMLStatsCreateTime, + tokenRingPStatsDroppedFrames, tokenRingPStatsCreateTime, + ringStationControlDroppedFrames, + ringStationControlCreateTime, + sourceRoutingStatsDroppedFrames, + sourceRoutingStatsCreateTime } + STATUS current + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations." + ::= { rmon2MIBGroups 13 } +END diff --git a/mibs/lldp-mibs/TOKEN-RING-RMON-MIB.my b/mibs/lldp-mibs/TOKEN-RING-RMON-MIB.my new file mode 100644 index 0000000..10ea7be --- /dev/null +++ b/mibs/lldp-mibs/TOKEN-RING-RMON-MIB.my @@ -0,0 +1,2580 @@ + TOKEN-RING-RMON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter, TimeTicks FROM RFC1155-SMI + OBJECT-TYPE FROM RFC-1212 + OwnerString, -- EntryStatus Textual Conventions + rmon, statistics, history + FROM RFC1271-MIB; + +-- OwnerString has the same semantics as used in RFC 1271 + + OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "This data type is used to model an administratively + assigned name of the owner of a resource. This + information is taken from the NVT ASCII character set. + It is suggested that this name contain one or more of + the following: ASCII form of the manager station's + transport address, management station name (e.g., + domain name), network management personnel's name, + location, or phone number. In some cases the agent + itself will be the owner of an entry. In these cases, + this string shall be set to a string starting with + 'agent'." + SYNTAX OCTET STRING (SIZE(0..255)) + -- InterfaceIndex contains the semantics of ifIndex and + -- should be used for any objects defined on other mib + -- modules that need these semantics. + + + -- All representations of MAC addresses in this MIB + -- Module use, as a textual convention (i.e. this + -- convention does not affect their encoding), the + -- data type: + + + MacAddress ::= OCTET STRING (SIZE (6)) -- a 6 octet + -- address in + -- the "canonical" + -- order + -- defined by IEEE 802.1a, i.e., as if it were + -- transmitted least significant bit first, even though + -- 802.5 (in contrast to other 802.x protocols) requires + -- MAC addresses to be transmitted most significant bit + -- first. + + TimeInterval ::= INTEGER + -- A period of time, measured in units of 0.01 seconds. + + -- This MIB module uses the extended OBJECT-TYPE macro as + -- defined in [2]. + + -- Token Ring Remote Network Monitoring MIB + + tokenRing OBJECT IDENTIFIER ::= { rmon 10 } + + EntryStatus ::= INTEGER + { valid(1), + createRequest(2), + underCreation(3), + invalid(4) + } + + + -- The Token Ring Mac-Layer Statistics Group + -- + -- Implementation of this group is optional + + tokenRingMLStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Mac-Layer Token Ring statistics + + + + + + entries." + ::= { statistics 2 } + + tokenRingMLStatsEntry OBJECT-TYPE + SYNTAX TokenRingMLStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of Mac-Layer statistics kept for a + particular Token Ring interface." + INDEX { tokenRingMLStatsIndex } + ::= { tokenRingMLStatsTable 1 } + + -- As an example, an instance of the + -- tokenRingMLStatsMacOctets object + -- might be named tokenRingMLStatsMacOctets.1 + + TokenRingMLStatsEntry ::= SEQUENCE { + tokenRingMLStatsIndex INTEGER, + tokenRingMLStatsDataSource OBJECT IDENTIFIER, + tokenRingMLStatsDropEvents Counter, + tokenRingMLStatsMacOctets Counter, + tokenRingMLStatsMacPkts Counter, + tokenRingMLStatsRingPurgeEvents Counter, + tokenRingMLStatsRingPurgePkts Counter, + tokenRingMLStatsBeaconEvents Counter, + tokenRingMLStatsBeaconTime TimeInterval, + tokenRingMLStatsBeaconPkts Counter, + tokenRingMLStatsClaimTokenEvents Counter, + tokenRingMLStatsClaimTokenPkts Counter, + tokenRingMLStatsNAUNChanges Counter, + tokenRingMLStatsLineErrors Counter, + tokenRingMLStatsInternalErrors Counter, + tokenRingMLStatsBurstErrors Counter, + tokenRingMLStatsACErrors Counter, + tokenRingMLStatsAbortErrors Counter, + tokenRingMLStatsLostFrameErrors Counter, + tokenRingMLStatsCongestionErrors Counter, + tokenRingMLStatsFrameCopiedErrors Counter, + tokenRingMLStatsFrequencyErrors Counter, + tokenRingMLStatsTokenErrors Counter, + tokenRingMLStatsSoftErrorReports Counter, + tokenRingMLStatsRingPollEvents Counter, + tokenRingMLStatsOwner OwnerString, + tokenRingMLStatsStatus EntryStatus + } + + + + + + + + tokenRingMLStatsIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies this + tokenRingMLStats entry." + ::= { tokenRingMLStatsEntry 1 } + + tokenRingMLStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data + that this tokenRingMLStats entry is configured to + analyze. This source can be any tokenRing + interface on this device. In order to identify a + particular interface, this object shall identify + the instance of the ifIndex object, defined in + MIB-II [3], for the desired interface. For + example, if an entry were to receive data from + interface #1, this object would be set to + ifIndex.1. + + The statistics in this group reflect all error + reports on the local network segment attached to + the identified interface. + + This object may not be modified if the associated + tokenRingMLStatsStatus object is equal to + valid(1)." + ::= { tokenRingMLStatsEntry 2 } + + tokenRingMLStatsDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe 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. This + value is the same as the corresponding + tokenRingPStatsDropEvents." + ::= { tokenRingMLStatsEntry 3 } + + + + + + + tokenRingMLStatsMacOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in MAC packets + (excluding those that were not good frames) + received on the network (excluding framing bits + but including FCS octets)." + ::= { tokenRingMLStatsEntry 4 } + + tokenRingMLStatsMacPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC packets (excluding + packets that were not good frames) received." + ::= { tokenRingMLStatsEntry 5 } + + tokenRingMLStatsRingPurgeEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters + the ring purge state from normal ring state. The + ring purge state that comes in response to the + claim token or beacon state is not counted." + ::= { tokenRingMLStatsEntry 6 } + + tokenRingMLStatsRingPurgePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ring purge MAC packets + detected by probe." + ::= { tokenRingMLStatsEntry 7 } + + tokenRingMLStatsBeaconEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters a + beaconing state (beaconFrameStreamingState, + beaconBitStreamingState, + + + + + + beaconSetRecoveryModeState, or + beaconRingSignalLossState) from a non-beaconing + state. Note that a change of the source address + of the beacon packet does not constitute a new + beacon event." + ::= { tokenRingMLStatsEntry 8 } + + tokenRingMLStatsBeaconTime OBJECT-TYPE + SYNTAX TimeInterval + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total amount of time that the ring has been + in the beaconing state." + ::= { tokenRingMLStatsEntry 9 } + + tokenRingMLStatsBeaconPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon MAC packets detected + by the probe." + ::= { tokenRingMLStatsEntry 10 } + + tokenRingMLStatsClaimTokenEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters + the claim token state from normal ring state or + ring purge state. The claim token state that + comes in response to a beacon state is not + counted." + ::= { tokenRingMLStatsEntry 11 } + + tokenRingMLStatsClaimTokenPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of claim token MAC packets + detected by the probe." + ::= { tokenRingMLStatsEntry 12 } + + + + + + + + + tokenRingMLStatsNAUNChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of NAUN changes detected by the + probe." + ::= { tokenRingMLStatsEntry 13 } + + tokenRingMLStatsLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported in error + reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 14 } + + tokenRingMLStatsInternalErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of adapter internal errors + reported in error reporting packets detected by + the probe." + ::= { tokenRingMLStatsEntry 15 } + + tokenRingMLStatsBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 16 } + + tokenRingMLStatsACErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AC (Address Copied) errors + reported in error reporting packets detected by + the probe." + ::= { tokenRingMLStatsEntry 17 } + + + + + + + + tokenRingMLStatsAbortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of abort delimiters reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 18 } + + tokenRingMLStatsLostFrameErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of lost frame errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 19 } + + tokenRingMLStatsCongestionErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of receive congestion errors + reported in error reporting packets detected by + the probe." + ::= { tokenRingMLStatsEntry 20 } + + tokenRingMLStatsFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frame copied errors reported + in error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 21 } + + tokenRingMLStatsFrequencyErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frequency errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 22 } + + + + + + + + + tokenRingMLStatsTokenErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of token errors reported in + error reporting packets detected by the probe." + ::= { tokenRingMLStatsEntry 23 } + + tokenRingMLStatsSoftErrorReports OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of soft error report frames + detected by the probe." + ::= { tokenRingMLStatsEntry 24 } + + tokenRingMLStatsRingPollEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ring poll events detected by + the probe (i.e. the number of ring polls initiated + by the active monitor that were detected)." + ::= { tokenRingMLStatsEntry 25 } + + tokenRingMLStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { tokenRingMLStatsEntry 26 } + + tokenRingMLStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this tokenRingMLStats entry." + ::= { tokenRingMLStatsEntry 27 } + + + + + + + + + + -- The Token Ring Promiscuous Statistics Group + -- + -- Implementation of this group is optional + + tokenRingPStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of promiscuous Token Ring statistics + entries." + ::= { statistics 3 } + + tokenRingPStatsEntry OBJECT-TYPE + SYNTAX TokenRingPStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of promiscuous statistics kept for + non-MAC packets on a particular Token Ring + interface." + INDEX { tokenRingPStatsIndex } + ::= { tokenRingPStatsTable 1 } + + -- As an example, an instance of the + -- tokenRingPStatsDataOctets object + -- might be named tokenRingPStatsDataOctets.1 + + TokenRingPStatsEntry ::= SEQUENCE { + tokenRingPStatsIndex INTEGER, + tokenRingPStatsDataSource OBJECT IDENTIFIER, + tokenRingPStatsDropEvents Counter, + tokenRingPStatsDataOctets Counter, + tokenRingPStatsDataPkts Counter, + tokenRingPStatsDataBroadcastPkts Counter, + tokenRingPStatsDataMulticastPkts Counter, + tokenRingPStatsDataPkts18to63Octets Counter, + tokenRingPStatsDataPkts64to127Octets Counter, + tokenRingPStatsDataPkts128to255Octets Counter, + tokenRingPStatsDataPkts256to511Octets Counter, + tokenRingPStatsDataPkts512to1023Octets Counter, + tokenRingPStatsDataPkts1024to2047Octets Counter, + tokenRingPStatsDataPkts2048to4095Octets Counter, + tokenRingPStatsDataPkts4096to8191Octets Counter, + tokenRingPStatsDataPkts8192to18000Octets Counter, + tokenRingPStatsDataPktsGreaterThan18000Octets Counter, + tokenRingPStatsOwner OwnerString, + tokenRingPStatsStatus EntryStatus + + + + + + } + + tokenRingPStatsIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies this + tokenRingPStats entry." + ::= { tokenRingPStatsEntry 1 } + + tokenRingPStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data + that this tokenRingPStats entry is configured to + analyze. This source can be any tokenRing + interface on this device. In order to identify a + particular interface, this object shall identify + the instance of the ifIndex object, defined in + MIB-II [3], for the desired interface. For + example, if an entry were to receive data from + interface #1, this object would be set to + ifIndex.1. + + The statistics in this group reflect all non-MAC + packets on the local network segment attached to + the identified interface. + + This object may not be modified if the associated + tokenRingPStatsStatus object is equal to + valid(1)." + ::= { tokenRingPStatsEntry 2 } + + tokenRingPStatsDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe 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. This + value is the same as the corresponding + tokenRingMLStatsDropEvents" + + + + + + ::= { tokenRingPStatsEntry 3 } + + tokenRingPStatsDataOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in good frames + received on the network (excluding framing bits + but including FCS octets) in non-MAC packets." + ::= { tokenRingPStatsEntry 4 } + + tokenRingPStatsDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of non-MAC packets in good + frames. received." + ::= { tokenRingPStatsEntry 5 } + + tokenRingPStatsDataBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were directed to an LLC broadcast address + (0xFFFFFFFFFFFF or 0xC000FFFFFFFF)." + ::= { tokenRingPStatsEntry 6 } + + tokenRingPStatsDataMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were directed to a local or global multicast + or functional address. Note that this number does + not include packets directed to the broadcast + address." + ::= { tokenRingPStatsEntry 7 } + + tokenRingPStatsDataPkts18to63Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + + + + + + "The total number of good non-MAC frames received + that were between 18 and 63 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 8 } + + tokenRingPStatsDataPkts64to127Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 64 and 127 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 9 } + + tokenRingPStatsDataPkts128to255Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 128 and 255 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 10 } + + tokenRingPStatsDataPkts256to511Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 256 and 511 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 11 } + + tokenRingPStatsDataPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 512 and 1023 octets in length + inclusive, excluding framing bits but including + FCS octets." + + + + + + ::= { tokenRingPStatsEntry 12 } + + tokenRingPStatsDataPkts1024to2047Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 1024 and 2047 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 13 } + + tokenRingPStatsDataPkts2048to4095Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 2048 and 4095 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 14 } + + tokenRingPStatsDataPkts4096to8191Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 4096 and 8191 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 15 } + + tokenRingPStatsDataPkts8192to18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were between 8192 and 18000 octets in length + inclusive, excluding framing bits but including + FCS octets." + ::= { tokenRingPStatsEntry 16 } + + tokenRingPStatsDataPktsGreaterThan18000Octets OBJECT-TYPE + SYNTAX Counter + + + + + + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + that were greater than 18000 octets in length, + excluding framing bits but including FCS octets." + ::= { tokenRingPStatsEntry 17 } + + tokenRingPStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { tokenRingPStatsEntry 18 } + + tokenRingPStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this tokenRingPStats entry." + ::= { tokenRingPStatsEntry 19 } + + + -- The Token Ring History Groups + + -- When an entry in the historyControlTable is created that + -- identifies a token ring interface as its + -- historyControlDataSource, the probe shall create + -- corresponding entries in the tokenRingMLHistoryTable + -- and/or the tokenRingPHistoryTable, depending on which + -- groups it supports. + + + -- The Token Ring Mac-Layer History Group + -- + -- Implementation of this group is optional. + -- Implementation of this group requires implementation of + -- the historyControl group from RFC1271. + + tokenRingMLHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Mac-Layer Token Ring statistics + + + + + + entries." + ::= { history 3 } + + tokenRingMLHistoryEntry OBJECT-TYPE + SYNTAX TokenRingMLHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of Mac-Layer statistics kept for a + particular Token Ring interface." + INDEX { tokenRingMLHistoryIndex, + tokenRingMLHistorySampleIndex } + ::= { tokenRingMLHistoryTable 1 } + + -- As an example, an instance of the + -- tokenRingMLHistoryMacOctets + -- object might be named tokenRingMLHistoryMacOctets.1.27 + + TokenRingMLHistoryEntry ::= SEQUENCE { + tokenRingMLHistoryIndex INTEGER, + tokenRingMLHistorySampleIndex INTEGER, + tokenRingMLHistoryIntervalStart TimeTicks, + tokenRingMLHistoryDropEvents Counter, + tokenRingMLHistoryMacOctets Counter, + tokenRingMLHistoryMacPkts Counter, + tokenRingMLHistoryRingPurgeEvents Counter, + tokenRingMLHistoryRingPurgePkts Counter, + tokenRingMLHistoryBeaconEvents Counter, + tokenRingMLHistoryBeaconTime TimeInterval, + tokenRingMLHistoryBeaconPkts Counter, + tokenRingMLHistoryClaimTokenEvents Counter, + tokenRingMLHistoryClaimTokenPkts Counter, + tokenRingMLHistoryNAUNChanges Counter, + tokenRingMLHistoryLineErrors Counter, + tokenRingMLHistoryInternalErrors Counter, + tokenRingMLHistoryBurstErrors Counter, + tokenRingMLHistoryACErrors Counter, + tokenRingMLHistoryAbortErrors Counter, + tokenRingMLHistoryLostFrameErrors Counter, + tokenRingMLHistoryCongestionErrors Counter, + tokenRingMLHistoryFrameCopiedErrors Counter, + tokenRingMLHistoryFrequencyErrors Counter, + tokenRingMLHistoryTokenErrors Counter, + tokenRingMLHistorySoftErrorReports Counter, + tokenRingMLHistoryRingPollEvents Counter, + tokenRingMLHistoryActiveStations INTEGER + } + + + + + + + tokenRingMLHistoryIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The history of which this entry is a part. The + history identified by a particular value of this + index is the same history as identified by the + same value of historyControlIndex." + ::= { tokenRingMLHistoryEntry 1 } + + tokenRingMLHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies the particular + Mac-Layer sample this entry represents among all + Mac-Layer samples associated with the same + historyControlEntry. This index starts at 1 and + increases by one as each new sample is taken." + ::= { tokenRingMLHistoryEntry 2 } + + tokenRingMLHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the start of the + interval over which this sample was measured. If + the probe keeps track of the time of day, it + should start the first sample of the history at a + time such that when the next hour of the day + begins, a sample is started at that instant. Note + that following this rule may require the probe to + delay collecting the first sample of the history, + as each sample must be of the same interval. Also + note that the sample which is currently being + collected is not accessible in this table until + the end of its interval." + ::= { tokenRingMLHistoryEntry 3 } + + tokenRingMLHistoryDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + + + + + + dropped by the probe due to lack of resources + during this sampling interval. Note that this + number is not necessarily the number of packets + dropped, it is just the number of times this + condition has been detected." + ::= { tokenRingMLHistoryEntry 4 } + + tokenRingMLHistoryMacOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in MAC packets + (excluding those that were not good frames) + received on the network during this sampling + interval (excluding framing bits but including FCS + octets)." + ::= { tokenRingMLHistoryEntry 5 } + + tokenRingMLHistoryMacPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC packets (excluding those + that were not good frames) received during this + sampling interval." + ::= { tokenRingMLHistoryEntry 6 } + + tokenRingMLHistoryRingPurgeEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring entered + the ring purge state from normal ring state during + this sampling interval. The ring purge state that + comes from the claim token or beacon state is not + counted." + ::= { tokenRingMLHistoryEntry 7 } + + tokenRingMLHistoryRingPurgePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Ring Purge MAC packets + detected by the probe during this sampling + + + + + + interval." + ::= { tokenRingMLHistoryEntry 8 } + + tokenRingMLHistoryBeaconEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters a + beaconing state (beaconFrameStreamingState, + beaconBitStreamingState, + beaconSetRecoveryModeState, or + beaconRingSignalLossState) during this sampling + interval. Note that a change of the source + address of the beacon packet does not constitute a + new beacon event." + ::= { tokenRingMLHistoryEntry 9 } + + tokenRingMLHistoryBeaconTime OBJECT-TYPE + SYNTAX TimeInterval + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The amount of time that the ring has been in the + beaconing state during this sampling interval." + ::= { tokenRingMLHistoryEntry 10 } + + tokenRingMLHistoryBeaconPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon MAC packets detected + by the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 11 } + + tokenRingMLHistoryClaimTokenEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times that the ring enters + the claim token state from normal ring state or + ring purge state during this sampling interval. + The claim token state that comes from the beacon + state is not counted." + ::= { tokenRingMLHistoryEntry 12 } + + + + + + + tokenRingMLHistoryClaimTokenPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of claim token MAC packets + detected by the probe during this sampling + interval." + ::= { tokenRingMLHistoryEntry 13 } + + tokenRingMLHistoryNAUNChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of NAUN changes detected by the + probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 14 } + + tokenRingMLHistoryLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported in error + reporting packets detected by the probe during + this sampling interval." + ::= { tokenRingMLHistoryEntry 15 } + + tokenRingMLHistoryInternalErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of adapter internal errors + reported in error reporting packets detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 16 } + + tokenRingMLHistoryBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 17 } + + + + + + tokenRingMLHistoryACErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AC (Address Copied) errors + reported in error reporting packets detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 18 } + + tokenRingMLHistoryAbortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of abort delimiters reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 19 } + + tokenRingMLHistoryLostFrameErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of lost frame errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 20 } + + tokenRingMLHistoryCongestionErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of receive congestion errors + reported in error reporting packets detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 21 } + + tokenRingMLHistoryFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frame copied errors reported + in error reporting packets detected by the probe + during this sampling interval." + + + + + + ::= { tokenRingMLHistoryEntry 22 } + + tokenRingMLHistoryFrequencyErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frequency errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 23 } + + tokenRingMLHistoryTokenErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of token errors reported in + error reporting packets detected by the probe + during this sampling interval." + ::= { tokenRingMLHistoryEntry 24 } + + tokenRingMLHistorySoftErrorReports OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of soft error report frames + detected by the probe during this sampling + interval." + ::= { tokenRingMLHistoryEntry 25 } + + tokenRingMLHistoryRingPollEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ring poll events detected by + the probe during this sampling interval." + ::= { tokenRingMLHistoryEntry 26 } + + tokenRingMLHistoryActiveStations OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of active stations on the ring + detected by the probe during this sampling + + + + + + interval." + ::= { tokenRingMLHistoryEntry 27} + + + -- The Token Ring Promiscuous History Group + -- + -- Implementation of this group is optional. + -- Implementation of this group requires the implementation + -- of the historyControl group from RFC1271. + + tokenRingPHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingPHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of promiscuous Token Ring statistics + entries." + ::= { history 4 } + + tokenRingPHistoryEntry OBJECT-TYPE + SYNTAX TokenRingPHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of promiscuous statistics kept for a + particular Token Ring interface." + INDEX { tokenRingPHistoryIndex, + tokenRingPHistorySampleIndex } + ::= { tokenRingPHistoryTable 1 } + + -- As an example, an instance of the + -- tokenRingPHistoryDataPkts object + -- might be named tokenRingPHistoryDataPkts.1.27 + + TokenRingPHistoryEntry ::= SEQUENCE { + tokenRingPHistoryIndex INTEGER, + tokenRingPHistorySampleIndex INTEGER, + tokenRingPHistoryIntervalStart TimeTicks, + tokenRingPHistoryDropEvents Counter, + tokenRingPHistoryDataOctets Counter, + tokenRingPHistoryDataPkts Counter, + tokenRingPHistoryDataBroadcastPkts Counter, + tokenRingPHistoryDataMulticastPkts Counter, + tokenRingPHistoryDataPkts18to63Octets Counter, + tokenRingPHistoryDataPkts64to127Octets Counter, + tokenRingPHistoryDataPkts128to255Octets Counter, + tokenRingPHistoryDataPkts256to511Octets Counter, + tokenRingPHistoryDataPkts512to1023Octets Counter, + + + + + + tokenRingPHistoryDataPkts1024to2047Octets Counter, + tokenRingPHistoryDataPkts2048to4095Octets Counter, + tokenRingPHistoryDataPkts4096to8191Octets Counter, + tokenRingPHistoryDataPkts8192to18000Octets Counter, + tokenRingPHistoryDataPktsGreaterThan18000Octets Counter + } + + tokenRingPHistoryIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The history of which this entry is a part. The + history identified by a particular value of this + index is the same history as identified by the + same value of historyControlIndex." + ::= { tokenRingPHistoryEntry 1 } + + tokenRingPHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies the particular + sample this entry represents among all samples + associated with the same historyControlEntry. + This index starts at 1 and increases by one as + each new sample is taken." + ::= { tokenRingPHistoryEntry 2 } + + tokenRingPHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the start of the + interval over which this sample was measured. If + the probe keeps track of the time of day, it + should start the first sample of the history at a + time such that when the next hour of the day + begins, a sample is started at that instant. Note + that following this rule may require the probe to + delay collecting the first sample of the history, + as each sample must be of the same interval. Also + note that the sample which is currently being + collected is not accessible in this table until + the end of its interval." + ::= { tokenRingPHistoryEntry 3 } + + + + + + tokenRingPHistoryDropEvents OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of events in which packets were + dropped by the probe due to lack of resources + during this sampling interval. Note that this + number is not necessarily the number of packets + dropped, it is just the number of times this + condition has been detected." + ::= { tokenRingPHistoryEntry 4 } + + tokenRingPHistoryDataOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data in good frames + received on the network (excluding framing bits + but including FCS octets) in non-MAC packets + during this sampling interval." + ::= { tokenRingPHistoryEntry 5 } + + tokenRingPHistoryDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval." + ::= { tokenRingPHistoryEntry 6 } + + tokenRingPHistoryDataBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were directed + to an LLC broadcast address (0xFFFFFFFFFFFF or + 0xC000FFFFFFFF)." + ::= { tokenRingPHistoryEntry 7 } + + tokenRingPHistoryDataMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + + + + + + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were directed + to a local or global multicast or functional + address. Note that this number does not include + packets directed to the broadcast address." + ::= { tokenRingPHistoryEntry 8 } + + tokenRingPHistoryDataPkts18to63Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between 18 + and 63 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 9 } + + tokenRingPHistoryDataPkts64to127Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between 64 + and 127 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 10 } + + tokenRingPHistoryDataPkts128to255Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 128 and 255 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 11 } + + tokenRingPHistoryDataPkts256to511Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + + + + + + 256 and 511 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 12 } + + tokenRingPHistoryDataPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 512 and 1023 octets in length inclusive, excluding + framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 13 } + + tokenRingPHistoryDataPkts1024to2047Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 1024 and 2047 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 14 } + + tokenRingPHistoryDataPkts2048to4095Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 2048 and 4095 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 15 } + + tokenRingPHistoryDataPkts4096to8191Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 4096 and 8191 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 16 } + + + + + + + tokenRingPHistoryDataPkts8192to18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were between + 8192 and 18000 octets in length inclusive, + excluding framing bits but including FCS octets." + ::= { tokenRingPHistoryEntry 17 } + + tokenRingPHistoryDataPktsGreaterThan18000Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good non-MAC frames received + during this sampling interval that were greater + than 18000 octets in length, excluding framing + bits but including FCS octets." + ::= { tokenRingPHistoryEntry 18 } + + + -- The Token Ring Ring Station Group + -- + -- Implementation of this group is optional + -- + -- Although the ringStationTable stores entries only for + -- those stations physically attached to the local ring and + -- the number of stations attached to a ring is limited, a + -- probe may still need to free resources when resources + -- grow tight. In such a situation, it is suggested that + -- the probe free only inactive stations, and to + -- first free the stations that have been inactive for the + -- longest time. + + ringStationControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ringStation table control entries." + ::= { tokenRing 1 } + + ringStationControlEntry OBJECT-TYPE + SYNTAX RingStationControlEntry + ACCESS not-accessible + STATUS mandatory + + + + + + DESCRIPTION + "A list of parameters that set up the discovery of + stations on a particular interface and the + collection of statistics about these stations." + INDEX { ringStationControlIfIndex } + ::= { ringStationControlTable 1 } + + -- As an example, an instance of the + -- ringStationControlIfIndex object + -- might be named ringStationControlIfIndex.1 + + RingStationControlEntry ::= SEQUENCE { + ringStationControlIfIndex INTEGER, + ringStationControlTableSize INTEGER, + ringStationControlActiveStations INTEGER, + ringStationControlRingState INTEGER, + ringStationControlBeaconSender MacAddress, + ringStationControlBeaconNAUN MacAddress, + ringStationControlActiveMonitor MacAddress, + ringStationControlOrderChanges Counter, + ringStationControlOwner OwnerString, + ringStationControlStatus EntryStatus + } + + ringStationControlIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + from which ringStation data is collected. The + interface identified by a particular value of this + object is the same interface as identified by the + same value of the ifIndex object, defined in MIB- + II [3]." + ::= { ringStationControlEntry 1 } + + ringStationControlTableSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ringStationEntries in the + ringStationTable associated with this + ringStationControlEntry." + ::= { ringStationControlEntry 2 } + + + + + + + ringStationControlActiveStations OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active ringStationEntries in the + ringStationTable associated with this + ringStationControlEntry." + ::= { ringStationControlEntry 3 } + + ringStationControlRingState OBJECT-TYPE + SYNTAX INTEGER { + normalOperation(1), + ringPurgeState(2), + claimTokenState(3), + beaconFrameStreamingState(4), + beaconBitStreamingState(5), + beaconRingSignalLossState(6), + beaconSetRecoveryModeState(7) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current status of this ring." + ::= { ringStationControlEntry 4 } + + ringStationControlBeaconSender OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the sender of the last beacon + frame received by the probe on this ring. If no + beacon frames have been received, this object + shall be equal to six octets of zero." + ::= { ringStationControlEntry 5 } + + ringStationControlBeaconNAUN OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the NAUN in the last beacon frame + received by the probe on this ring. If no beacon + frames have been received, this object shall be + equal to six octets of zero." + ::= { ringStationControlEntry 6 } + + + + + + + ringStationControlActiveMonitor OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the Active Monitor on this + segment. If this address is unknown, this object + shall be equal to six octets of zero." + ::= { ringStationControlEntry 7 } + + ringStationControlOrderChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of add and delete events in the + ringStationOrderTable optionally associated with + this ringStationControlEntry." + ::= { ringStationControlEntry 8 } + + ringStationControlOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { ringStationControlEntry 9 } + + ringStationControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this ringStationControl entry. + + If this object is not equal to valid(1), all + associated entries in the ringStationTable shall + be deleted by the agent." + ::= { ringStationControlEntry 10 } + + ringStationTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ring station entries. An entry will + exist for each station that is now or has + + + + + + previously been detected as physically present on + this ring." + ::= { tokenRing 2 } + + ringStationEntry OBJECT-TYPE + SYNTAX RingStationEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular + station that has been discovered on a ring + monitored by this device." + INDEX { ringStationIfIndex, ringStationMacAddress } + ::= { ringStationTable 1 } + + -- As an example, an instance of the + -- ringStationStationStatus object might be named + -- ringStationStationStatus.1.16.0.90.0.64.131 + + RingStationEntry ::= SEQUENCE { + ringStationIfIndex INTEGER, + ringStationMacAddress MacAddress, + ringStationLastNAUN MacAddress, + ringStationStationStatus INTEGER, + ringStationLastEnterTime TimeTicks, + ringStationLastExitTime TimeTicks, + ringStationDuplicateAddresses Counter, + ringStationInLineErrors Counter, + ringStationOutLineErrors Counter, + ringStationInternalErrors Counter, + ringStationInBurstErrors Counter, + ringStationOutBurstErrors Counter, + ringStationACErrors Counter, + ringStationAbortErrors Counter, + ringStationLostFrameErrors Counter, + ringStationCongestionErrors Counter, + ringStationFrameCopiedErrors Counter, + ringStationFrequencyErrors Counter, + ringStationTokenErrors Counter, + ringStationInBeaconErrors Counter, + ringStationOutBeaconErrors Counter, + ringStationInsertions Counter + } + + ringStationIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + + + + + + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationEntry 1 } + + ringStationMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationEntry 2 } + + ringStationLastNAUN OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of last known NAUN of this + station." + ::= { ringStationEntry 3 } + + ringStationStationStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), -- actively participating in ring poll. + inactive(2), -- Not participating in ring poll + forcedRemoval(3) -- Forced off ring by network + -- management. + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The status of this station on the ring." + ::= { ringStationEntry 4 } + + ringStationLastEnterTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this station + last entered the ring. If the time is unknown, + this value shall be zero." + ::= { ringStationEntry 5 } + + + + + + ringStationLastExitTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the probe + detected that this station last exited the ring. + If the time is unknown, this value shall be zero." + ::= { ringStationEntry 6 } + + ringStationDuplicateAddresses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this station experienced a + duplicate address error." + ::= { ringStationEntry 7 } + + ringStationInLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported by this + station in error reporting packets detected by the + probe." + ::= { ringStationEntry 8 } + + ringStationOutLineErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of line errors reported in error + reporting packets sent by the nearest active + downstream neighbor of this station and detected + by the probe." + ::= { ringStationEntry 9 } + + ringStationInternalErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of adapter internal errors + reported by this station in error reporting + packets detected by the probe." + + + + + + ::= { ringStationEntry 10 } + + ringStationInBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported by this + station in error reporting packets detected by the + probe." + ::= { ringStationEntry 11 } + + ringStationOutBurstErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of burst errors reported in + error reporting packets sent by the nearest active + downstream neighbor of this station and detected + by the probe." + ::= { ringStationEntry 12 } + + ringStationACErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AC (Address Copied) errors + reported in error reporting packets sent by the + nearest active downstream neighbor of this station + and detected by the probe." + ::= { ringStationEntry 13 } + + ringStationAbortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of abort delimiters reported by + this station in error reporting packets detected + by the probe." + ::= { ringStationEntry 14 } + + ringStationLostFrameErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + + + + + + DESCRIPTION + "The total number of lost frame errors reported by + this station in error reporting packets detected + by the probe." + ::= { ringStationEntry 15 } + + ringStationCongestionErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of receive congestion errors + reported by this station in error reporting + packets detected by the probe." + ::= { ringStationEntry 16 } + + ringStationFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frame copied errors reported + by this station in error reporting packets + detected by the probe." + ::= { ringStationEntry 17 } + + ringStationFrequencyErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frequency errors reported by + this station in error reporting packets detected + by the probe." + ::= { ringStationEntry 18 } + + ringStationTokenErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of token errors reported by this + station in error reporting frames detected by the + probe." + ::= { ringStationEntry 19 } + + ringStationInBeaconErrors OBJECT-TYPE + SYNTAX Counter + + + + + + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon frames sent by this + station and detected by the probe." + ::= { ringStationEntry 20 } + + ringStationOutBeaconErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of beacon frames detected by the + probe that name this station as the NAUN." + ::= { ringStationEntry 21 } + + ringStationInsertions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the probe detected this + station inserting onto the ring." + ::= { ringStationEntry 22 } + + + -- The Token Ring Ring Station Order Group + -- + -- Implementation of this group is optional + -- + + -- The ringStationOrderTable + + ringStationOrderTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationOrderEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ring station entries for stations in + the ring poll, ordered by their ring-order." + ::= { tokenRing 3 } + + ringStationOrderEntry OBJECT-TYPE + SYNTAX RingStationOrderEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular + + + + + + station that is active on a ring monitored by this + device. This table will contain information for + every interface that has a + ringStationControlStatus equal to valid." + INDEX { ringStationOrderIfIndex, + ringStationOrderOrderIndex } + ::= { ringStationOrderTable 1 } + + -- As an example, an instance of the + -- ringStationOrderMacAddress object might be named + -- ringStationOrderMacAddress.1.14 + + RingStationOrderEntry ::= SEQUENCE { + ringStationOrderIfIndex INTEGER, + ringStationOrderOrderIndex INTEGER, + ringStationOrderMacAddress MacAddress + } + + ringStationOrderIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationOrderEntry 1 } + + ringStationOrderOrderIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This index denotes the location of this station + with respect to other stations on the ring. This + index is one more than the number of hops + downstream that this station is from the rmon + probe. The rmon probe itself gets the value one." + ::= { ringStationOrderEntry 2 } + + ringStationOrderMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + + + + + + "The physical address of this station." + ::= { ringStationOrderEntry 3 } + + + -- The Token Ring Ring Station Config Group + -- + -- Implementation of this group is optional. + -- The ring station config group manages token ring nodes + -- through active means. + + ringStationConfigControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationConfigControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ring station configuration control + entries." + ::= { tokenRing 4 } + + ringStationConfigControlEntry OBJECT-TYPE + SYNTAX RingStationConfigControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entry controls active management of stations + by the probe. One entry exists in this table for + each active station in the ringStationTable." + INDEX { ringStationConfigControlIfIndex, + ringStationConfigControlMacAddress } + ::= { ringStationConfigControlTable 1 } + + -- As an example, an instance of the + -- ringStationConfigControlRemove object might be named + -- ringStationConfigControlRemove.1.16.0.90.0.64.131 + + RingStationConfigControlEntry ::= SEQUENCE { + ringStationConfigControlIfIndex INTEGER, + ringStationConfigControlMacAddress MacAddress, + ringStationConfigControlRemove INTEGER, + ringStationConfigControlUpdateStats INTEGER + } + + ringStationConfigControlIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + + + + + + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationConfigControlEntry 1 } + + ringStationConfigControlMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationConfigControlEntry 2 } + + ringStationConfigControlRemove OBJECT-TYPE + SYNTAX INTEGER { + stable(1), + removing(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to `removing(2)' causes a + Remove Station MAC frame to be sent. The agent + will set this object to `stable(1)' after + processing the request." + ::= { ringStationConfigControlEntry 3 } + + ringStationConfigControlUpdateStats OBJECT-TYPE + SYNTAX INTEGER { + stable(1), + updating(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to `updating(2)' causes the + configuration information associate with this + entry to be updated. The agent will set this + object to `stable(1)' after processing the + request." + ::= { ringStationConfigControlEntry 4 } + + + + + + + + + + + -- The ringStationConfig Table + -- + -- Entries exist in this table after an active + -- configuration query has completed successfully for + -- a station. This query is initiated by the associated + -- ringStationConfigControlUpdateStats variable. + + ringStationConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of configuration entries for stations on a + ring monitored by this probe." + ::= { tokenRing 5 } + + ringStationConfigEntry OBJECT-TYPE + SYNTAX RingStationConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular + station that has been discovered on a ring + monitored by this probe." + INDEX { ringStationConfigIfIndex, + ringStationConfigMacAddress } + ::= { ringStationConfigTable 1 } + + -- As an example, an instance of the + -- ringStationConfigLocation object might be named + -- ringStationConfigLocation.1.16.0.90.0.64.131 + + RingStationConfigEntry ::= SEQUENCE { + ringStationConfigIfIndex INTEGER, + ringStationConfigMacAddress MacAddress, + ringStationConfigUpdateTime TimeTicks, + ringStationConfigLocation OCTET STRING, + ringStationConfigMicrocode OCTET STRING, + ringStationConfigGroupAddress OCTET STRING, + ringStationConfigFunctionalAddress OCTET STRING + } + + ringStationConfigIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + + + + + + interface on this remote network monitoring device + on which this station was detected. The interface + identified by a particular value of this object is + the same interface as identified by the same value + of the ifIndex object, defined in MIB-II [3]." + ::= { ringStationConfigEntry 1 } + + ringStationConfigMacAddress OBJECT-TYPE + SYNTAX MacAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this station." + ::= { ringStationConfigEntry 2 } + + ringStationConfigUpdateTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this + configuration information was last updated + (completely)." + ::= { ringStationConfigEntry 3 } + + ringStationConfigLocation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The assigned physical location of this station." + ::= { ringStationConfigEntry 4 } + + ringStationConfigMicrocode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(10)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The microcode EC level of this station." + ::= { ringStationConfigEntry 5 } + + ringStationConfigGroupAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The low-order 4 octets of the group address + recognized by this station." + + + + + + ::= { ringStationConfigEntry 6 } + + ringStationConfigFunctionalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "the functional addresses recognized by this + station." + ::= { ringStationConfigEntry 7 } + + + -- The Token Ring Source Routing group + -- + -- Implementation of this group is optional. + -- The data in this group is collected from the source + -- routing information potentially present in any token ring + -- packet. This information will be valid only in a pure + -- source route bridging environment. In a transparent + -- bridging or a mixed bridging environment, this + -- information may not be accurate. + + sourceRoutingStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SourceRoutingStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of source routing statistics entries." + ::= { tokenRing 6 } + + sourceRoutingStatsEntry OBJECT-TYPE + SYNTAX SourceRoutingStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of source routing statistics kept + for a particular Token Ring interface." + INDEX { sourceRoutingStatsIfIndex } + ::= { sourceRoutingStatsTable 1 } + + -- As an example, an instance of the + -- sourceRoutingStatsInFrames object might be named + -- sourceRoutingStatsInFrames.1 + + SourceRoutingStatsEntry ::= SEQUENCE { + sourceRoutingStatsIfIndex INTEGER, + sourceRoutingStatsRingNumber INTEGER, + sourceRoutingStatsInFrames Counter, + + + + + + -- in to our net + + sourceRoutingStatsOutFrames Counter, + -- out from our net + + sourceRoutingStatsThroughFrames Counter, + -- through our net + + sourceRoutingStatsAllRoutesBroadcastFrames Counter, + sourceRoutingStatsSingleRouteBroadcastFrames Counter, + sourceRoutingStatsInOctets Counter, + sourceRoutingStatsOutOctets Counter, + sourceRoutingStatsThroughOctets Counter, + sourceRoutingStatsAllRoutesBroadcastOctets Counter, + sourceRoutingStatsSingleRoutesBroadcastOctets Counter, + sourceRoutingStatsLocalLLCFrames Counter, + sourceRoutingStats1HopFrames Counter, + sourceRoutingStats2HopsFrames Counter, + sourceRoutingStats3HopsFrames Counter, + sourceRoutingStats4HopsFrames Counter, + sourceRoutingStats5HopsFrames Counter, + sourceRoutingStats6HopsFrames Counter, + sourceRoutingStats7HopsFrames Counter, + sourceRoutingStats8HopsFrames Counter, + sourceRoutingStatsMoreThan8HopsFrames Counter, + sourceRoutingStatsOwner OwnerString, + sourceRoutingStatsStatus EntryStatus + } + + sourceRoutingStatsIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + on which source routing statistics will be + detected. The interface identified by a + particular value of this object is the same + interface as identified by the same value of the + ifIndex object, defined in MIB-II [3]." + ::= { sourceRoutingStatsEntry 1 } + + sourceRoutingStatsRingNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + + + + + + "The ring number of the ring monitored by this + entry. When any object in this entry is created, + the probe will attempt to discover the ring + number. Only after the ring number is discovered + will this object be created. After creating an + object in this entry, the management station + should poll this object to detect when it is + created. Only after this object is created can + the management station set the + sourceRoutingStatsStatus entry to valid(1)." + ::= { sourceRoutingStatsEntry 2 } + + sourceRoutingStatsInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of frames sent into this ring from + another ring." + ::= { sourceRoutingStatsEntry 3 } + + sourceRoutingStatsOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of frames sent from this ring to + another ring." + ::= { sourceRoutingStatsEntry 4 } + + sourceRoutingStatsThroughFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of frames sent from another ring, + through this ring, to another ring." + ::= { sourceRoutingStatsEntry 5 } + + sourceRoutingStatsAllRoutesBroadcastFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good frames received that + were All Routes Broadcast." + ::= { sourceRoutingStatsEntry 6 } + + + + + + + sourceRoutingStatsSingleRouteBroadcastFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good frames received that + were Single Route Broadcast." + ::= { sourceRoutingStatsEntry 7 } + + sourceRoutingStatsInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of octets in good frames sent into this + ring from another ring." + ::= { sourceRoutingStatsEntry 8 } + + sourceRoutingStatsOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of octets in good frames sent from this + ring to another ring." + ::= { sourceRoutingStatsEntry 9 } + + sourceRoutingStatsThroughOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of octets in good frames sent another + ring, through this ring, to another ring." + ::= { sourceRoutingStatsEntry 10 } + + sourceRoutingStatsAllRoutesBroadcastOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets in good frames + received that were All Routes Broadcast." + ::= { sourceRoutingStatsEntry 11 } + + sourceRoutingStatsSingleRoutesBroadcastOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + + + + + + STATUS mandatory + DESCRIPTION + "The total number of octets in good frames + received that were Single Route Broadcast." + ::= { sourceRoutingStatsEntry 12 } + + sourceRoutingStatsLocalLLCFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received who had no + RIF field (or had a RIF field that only included + the local ring's number) and were not All Route + Broadcast Frames." + ::= { sourceRoutingStatsEntry 13 } + + sourceRoutingStats1HopFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 1 hop, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 14 } + + sourceRoutingStats2HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 2 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 15 } + + sourceRoutingStats3HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + + + + + + "The total number of frames received whose route + had 3 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 16 } + + sourceRoutingStats4HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 4 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 17 } + + sourceRoutingStats5HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 5 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 18 } + + sourceRoutingStats6HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 6 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 19 } + + sourceRoutingStats7HopsFrames OBJECT-TYPE + + + + + + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 7 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 20 } + + sourceRoutingStats8HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had 8 hops, were not All Route Broadcast Frames, + and whose source or destination were on this ring + (i.e. frames that had a RIF field and had this + ring number in the first or last entry of the RIF + field)." + ::= { sourceRoutingStatsEntry 21 } + + sourceRoutingStatsMoreThan8HopsFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames received whose route + had more than 8 hops, were not All Route Broadcast + Frames, and whose source or destination were on + this ring (i.e. frames that had a RIF field and + had this ring number in the first or last entry of + the RIF field)." + ::= { sourceRoutingStatsEntry 22 } + + sourceRoutingStatsOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { sourceRoutingStatsEntry 23 } + + sourceRoutingStatsStatus OBJECT-TYPE + + + + + + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this sourceRoutingStats entry." + ::= { sourceRoutingStatsEntry 24 } + +END diff --git a/source/COPYING b/source/COPYING new file mode 100644 index 0000000..1f963da --- /dev/null +++ b/source/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + diff --git a/source/ChangeLog b/source/ChangeLog new file mode 100644 index 0000000..8bd6223 --- /dev/null +++ b/source/ChangeLog @@ -0,0 +1,10 @@ + Layer 2 Discovery Module for LLDP + Changes + +[2018-09-21] Changes for 1.0 + - initial version. + +[2018-09-21] Changes for 1.1 + - Modified version for specification changes of Zabbix 4.2 and 4.0.7 or later. + + diff --git a/source/INSTALL b/source/INSTALL new file mode 100644 index 0000000..81d4bd3 --- /dev/null +++ b/source/INSTALL @@ -0,0 +1,36 @@ + + Layer 2 Discovery Module for LLDP + Compile & Installation document + (Version 1.1, May 2019) + + --------- + Compile + --------- + + 1. Prepare the same version of Zabbix source as you are installing to. + Supported version will be 2.2 or later. + + 2. Extract the Zabbix sources, and configure with appropriate options. + (To generate config.h necessary for module compilation.) + + 3. Place the module source at anywhere, and rewrite Makefile. + Specify the zabbix source directory for top_srcdir. + (Either absolute path or relative path is acceptable.) + + ex) top_srcdir = /usr/local/src/zabbix/zabbix-3.4.13 + + 4. Run make to build, then it will be produced lldp_get.so. + + + --------- + Install + --------- + + 1. Copy lldp_get.so to the module directory specified in + Zabbix proxy / server configulation file. + + 2. Set "lldp_get.so" to LoadModule parameters in configuration file. + + 3. Restart Zabbix proxy / server. + + diff --git a/source/README b/source/README new file mode 100644 index 0000000..5dd5038 --- /dev/null +++ b/source/README @@ -0,0 +1,32 @@ + + Layer 2 Discovery Module for LLDP + Introduction document + (Version 1.1, May 2019) + + What is it? + ----------- + + The Layer 2 Discovery Module for LLDP is a Zabbix loadable module + that collects LLDP information accumulated in network equipment + by SNMP polling. + + + Requirements + ------------ + + Enough environment for which Zabbix can operate. + Libraries: Net-SNMP + + + Installation + ------------ + + Please see the file called INSTALL. + + + Licensing + --------- + + Please see the file called COPYING. + + diff --git a/source/modules/Makefile b/source/modules/Makefile new file mode 100644 index 0000000..f321aec --- /dev/null +++ b/source/modules/Makefile @@ -0,0 +1,26 @@ +# module_lldp_get Makefile + +TARGET_SO = lldp_get.so + +top_srcdir = /usr/local/src/zabbix/ + +CC = gcc +CFLAGS = -g -O2 -Wall -fPIC $(TARGET_FLAGS) +LDFLAGS = +LDFLAGS_SO = -shared +INCLUDES = -I$(top_srcdir)/include +LIBS = + +OBJS = \ + lldp_get.o + +all: $(TARGET_SO) + +$(TARGET_SO): $(OBJS) + $(CC) $(LDFLAGS_SO) -o $@ $(OBJS) $(LIBS) + +clean: + rm -f $(TARGET_SO) $(OBJS) + +.c.o: + $(CC) $(CFLAGS) $(INCLUDES) -c $< diff --git a/source/modules/lldp_get.c b/source/modules/lldp_get.c new file mode 100644 index 0000000..9c7326b --- /dev/null +++ b/source/modules/lldp_get.c @@ -0,0 +1,1858 @@ +/* +** L2 Discovery Module for LLDP +** Copyright (C) 2018 NTT Com Solutions Corporation +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +**/ + +#include "sysinc.h" +#include "module.h" +#include "common.h" +#include "log.h" +#include "sysinfo.h" +#include "zbxalgo.h" +#include "zbxjson.h" + +#define SNMP_NO_DEBUGGING /* disabling debugging messages from Net-SNMP library */ + +#include +#include + +#ifdef ZBX_PROGRAM_TYPE_SERVER +extern unsigned char program_type ; +#else /* ZBX_DAEMON_TYPE_SERVER (Zabbix2.x) */ +extern unsigned char daemon_type ; +#endif + +/****************************************************************************** + * * + * optional value process function prototype. * + * * + * Parameters: in - [IN] input value before process * + * out - [OUT] processed value * + * max_out_len - [IN] max length of the output buffer * + * * + ******************************************************************************/ +typedef void (*lldpmod_optproc_func)(void *in, char *out, size_t max_out_len); + +/* snmp discovery request structure */ +typedef struct +{ + int noid; /* number of all oid (include remote) */ + int noid_rem; /* number of remote oid */ + int noid_max; /* number of all oid (allocated memory size) */ + + char *lld_key_macro; /* lld_macro for index */ + char *lld_remkey_macro; /* lld_macro for remote index */ + char *lld_optvalue_macro; /* lld_macro for optional value */ + lldpmod_optproc_func opt_func; /* function pointer for process optional value */ + + int *rem_map; /* link oid array(that mixed local and remote) to remote values array */ + int *key_types; /* normal or remote: normal has index only, remote has index and remote_index */ + int *res_types; /* string / integer: type of the result */ + int *dump_flags; /* standard binary dump separator is space, but when mac address, separate by coron */ + char **oids; /* retrieve oids */ + char **lld_value_macros; /* lld_macro for value */ +} +lldpmod_discovery_request_t; + +/* discovered SNMP object, identified by its index */ +typedef struct +{ + oid index; /* object index */ + char **values; /* an array of OID values stored in the same order as defined in OID key */ + zbx_hashset_t *rem_objects; /* when get remote object, local object may have some remote objects indentified by remote index */ + /* remote hash recursively have same data structure as local */ +} +lldpmod_snmp_object_t; + +/* helper data structure used by snmp discovery */ +typedef struct +{ + int num; /* array index of snmp value getting then */ + zbx_hashset_t objects; /* local value hash identified by snmp index. it keeps snmp object */ + lldpmod_discovery_request_t request; /* request information */ +} +lldpmod_discovery_data_t; + +/* helper data structure used by snmp get */ +typedef struct +{ + int res_type; /* string / bitstring / integer: type of the result (when object is not found, there is no hint of type) */ + int dump_flag; /* standard binary dump separator is space, but when mac address, separate by coron */ + oid index; /* required oid */ + oid rem_index; /* required remote index */ + AGENT_RESULT *result; /* snmp get result */ +} +lldpmod_getrem_data_t; + +#define SNMP_NAME "lldp_get_module" +#define MODULE_NAME "lldp_get module" +#define SUCCEED_WITH_VALUE (100) + +/* key_type */ +#define KEY_TYPE_LOC (1) +#define KEY_TYPE_REM (2) + +/* res_type */ +#define RES_TYPE_STR (1) +#define RES_TYPE_INT (2) +#define RES_TYPE_BSTR (3) + +/* dump_flag */ +#define DUMP_NORMAL (1) +#define DUMP_WITH_MAC (2) + +/* return value when remote object is not found */ +#define NC_STRVAL "** No Information **" +#define NC_INTVAL "99" + +/* module keys */ +#define MODULE_KEY_DISCOVERY "lldp.discovery" +#define MODULE_KEY_GET_OID "lldp.rem.getoid" +#define MODULE_KEY_REM_PORT_TYPE "lldp.rem.port.type" +#define MODULE_KEY_REM_PORT_ID "lldp.rem.port.id" +#define MODULE_KEY_REM_PORTDESC "lldp.rem.port.desc" +#define MODULE_KEY_REM_SYSNAME "lldp.rem.sysname" +#define MODULE_KEY_REM_SYS_DESC "lldp.rem.sys.desc" + +/* retrieve oids */ +#define LOC_PORTID_OID ".1.0.8802.1.1.2.1.3.7.1.3" /* LLDP-MIB::lldpLocPortId */ +#define REM_TYPE_OID ".1.0.8802.1.1.2.1.4.1.1.6" /* LLDP-MIB::lldpRemPortIdSubtype */ +#define REM_PORTID_OID ".1.0.8802.1.1.2.1.4.1.1.7" /* LLDP-MIB::lldpRemPortId */ +#define REM_PORTDESC_OID ".1.0.8802.1.1.2.1.4.1.1.8" /* LLDP-MIB::lldpRemPortDesc */ +#define REM_SYSNAME_OID ".1.0.8802.1.1.2.1.4.1.1.9" /* LLDP-MIB::lldpRemSysName */ +#define REM_SYSDESC_OID ".1.0.8802.1.1.2.1.4.1.1.10" /* LLDP-MIB::lldpRemSysDesc */ +#define REM_CHASSIS_TYPE_OID ".1.0.8802.1.1.2.1.4.1.1.4" /* LLDP-MIB::lldpRemChassisIdSubtype */ +#define REM_CHASSIS_ID_OID ".1.0.8802.1.1.2.1.4.1.1.5" /* LLDP-MIB::lldpRemChassisId */ +#define REM_CAP_SUPPORTED_OID ".1.0.8802.1.1.2.1.4.1.1.11" /* LLDP-MIB::lldpRemSysCapSupported */ +#define REM_CAP_ENABLED_OID ".1.0.8802.1.1.2.1.4.1.1.12" /* LLDP-MIB::lldpRemSysCapEnabled */ + +#define IF_OID ".1.3.6.1.2.1.31.1.1.1.1" /* IF-MIB::ifName */ +#define IF_DESC_OID ".1.3.6.1.2.1.2.2.1.2" /* IF-MIB::ifDescr */ +#define IF_TYPE_OID ".1.3.6.1.2.1.2.2.1.3" /* IF-MIB::ifType */ + +/* lld macros */ +#define LLD_MACRO_PORT_INDEX "{#PORT_NUM}" +#define LLD_MACRO_REM_INDEX "{#REM_IDX}" +#define LLD_MACRO_PORT_NAME "{#PORT_NAME}" + +#define LLD_MACRO_PORT_IDENTIFIER "{#PORT_IDX}" +#define LLD_MACRO_PORT_DESC "{#PORT_DESC}" +#define LLD_MACRO_IF_TYPE "{#IF_TYPE}" + +/* the variable keeps timeout setting for item processing */ +static int item_timeout = 0; + +/****************************************************************************** + * * + * This is zbx_snmp_walk() callback function prototype. * + * * + * Parameters: arg - [IN] an user argument passed to lldpmod_snmp_walk() * + * function * + * var - [IN] the variable list processing now * + * * + ******************************************************************************/ +typedef int (lldpmod_snmpwalk_cb_func)(void *arg, const netsnmp_variable_list *var); + +/* function prototype */ +int lldpmod_lldp_discovery(AGENT_REQUEST *request, AGENT_RESULT *result); +int lldpmod_getrem_common(AGENT_REQUEST *request, AGENT_RESULT *result, const char *get_mib, lldpmod_getrem_data_t *getrem_data); +int lldpmod_getrem_port_type(AGENT_REQUEST *request, AGENT_RESULT *result); +int lldpmod_getrem_port_id(AGENT_REQUEST *request, AGENT_RESULT *result); +int lldpmod_getrem_port_desc(AGENT_REQUEST *request, AGENT_RESULT *result); +int lldpmod_getrem_sysname(AGENT_REQUEST *request, AGENT_RESULT *result); +int lldpmod_getrem_sys_desc(AGENT_REQUEST *request, AGENT_RESULT *result); +int lldpmod_getrem_oid(AGENT_REQUEST *request, AGENT_RESULT *result); + + +static ZBX_METRIC keys[] = +/* KEY FLAG FUNCTION TEST PARAMETERS */ +{ + {MODULE_KEY_DISCOVERY, CF_HAVEPARAMS, lldpmod_lldp_discovery, "{HOST.IP},public,local"}, + {MODULE_KEY_REM_PORT_TYPE, CF_HAVEPARAMS, lldpmod_getrem_port_type, "{HOST.IP},{$SNMP_COMMUNITY},{#PORT_NUM},{#REM_IDX},{$FIXED_VAL}"}, + {MODULE_KEY_REM_PORT_ID, CF_HAVEPARAMS, lldpmod_getrem_port_id, "{HOST.IP},{$SNMP_COMMUNITY},{#PORT_NUM},{#REM_IDX},{$FIXED_VAL}"}, + {MODULE_KEY_REM_PORTDESC, CF_HAVEPARAMS, lldpmod_getrem_port_desc, "{HOST.IP},{$SNMP_COMMUNITY},{#PORT_NUM},{#REM_IDX},{$FIXED_VAL}"}, + {MODULE_KEY_REM_SYSNAME, CF_HAVEPARAMS, lldpmod_getrem_sysname, "{HOST.IP},{$SNMP_COMMUNITY},{#PORT_NUM},{#REM_IDX},{$FIXED_VAL}"}, + {MODULE_KEY_REM_SYS_DESC, CF_HAVEPARAMS, lldpmod_getrem_sys_desc, "{HOST.IP},{$SNMP_COMMUNITY},{#PORT_NUM},{#REM_IDX},{$FIXED_VAL}"}, + {MODULE_KEY_GET_OID, CF_HAVEPARAMS, lldpmod_getrem_oid, "{HOST.IP},{$SNMP_COMMUNITY},LLDP-MIB::lldpRemSysDesc,{#PORT_NUM},{#REM_IDX}"}, + {NULL} +}; + + +/****************************************************************************** + * * + * Function: zbx_module_api_version * + * * + * Purpose: returns version number of the module interface * + * * + * Return value: ZBX_MODULE_API_VERSION - version of module.h module is * + * compiled with, in order to load module successfully Zabbix * + * MUST be compiled with the same version of this header file * + * * + ******************************************************************************/ +int zbx_module_api_version(void) +{ +#ifdef ZBX_MODULE_API_VERSION + return ZBX_MODULE_API_VERSION; +#else /* ZBX_MODULE_API_VERSION_ONE (Zabbix2.x) */ + return ZBX_MODULE_API_VERSION_ONE; +#endif +} + +/****************************************************************************** + * * + * Function: zbx_module_item_timeout * + * * + * Purpose: set timeout value for processing of items * + * * + * Parameters: timeout - timeout in seconds, 0 - no timeout set * + * * + ******************************************************************************/ +void zbx_module_item_timeout(int timeout) +{ + item_timeout = timeout; +} + +/****************************************************************************** + * * + * Function: zbx_module_item_list * + * * + * Purpose: returns list of item keys supported by the module * + * * + * Return value: list of item keys * + * * + ******************************************************************************/ +ZBX_METRIC *zbx_module_item_list(void) +{ + return keys; +} + +/****************************************************************************** + * * + * Function: zbx_module_init * + * * + * Purpose: the function is called on agent startup * + * It should be used to call any initialization routines * + * * + * Return value: ZBX_MODULE_OK - success * + * ZBX_MODULE_FAIL - module initialization failed * + * * + * Comment: the module won't be loaded in case of ZBX_MODULE_FAIL * + * * + ******************************************************************************/ +int zbx_module_init(void) +{ + int ret = ZBX_MODULE_FAIL; + +#ifdef ZBX_PROGRAM_TYPE_SERVER + switch (program_type) + { + case ZBX_PROGRAM_TYPE_SERVER: + zabbix_log(LOG_LEVEL_WARNING, "%s: loaded by server process. [%d]", MODULE_NAME, program_type); + ret = ZBX_MODULE_OK; + break; + case ZBX_PROGRAM_TYPE_PROXY_ACTIVE: + case ZBX_PROGRAM_TYPE_PROXY_PASSIVE: + case ZBX_PROGRAM_TYPE_PROXY: + zabbix_log(LOG_LEVEL_WARNING, "%s: loaded by proxy process. [%d]", MODULE_NAME, program_type); + ret = ZBX_MODULE_OK; + break; + case ZBX_PROGRAM_TYPE_AGENTD: + zabbix_log(LOG_LEVEL_INFORMATION, "%s: This loadable-module is not runnning by agent process. [%d]", MODULE_NAME, program_type); + break; + default: + zabbix_log(LOG_LEVEL_INFORMATION, "%s: unknown program_type [%d]", MODULE_NAME, program_type ); + } +#else /* ZBX_DAEMON_TYPE_SERVER (Zabbix2.x) */ + switch (daemon_type) + { + case ZBX_DAEMON_TYPE_SERVER: + zabbix_log(LOG_LEVEL_WARNING, "%s: loaded by server process. [%d]", MODULE_NAME, daemon_type); + ret = ZBX_MODULE_OK; + break; + case ZBX_DAEMON_TYPE_PROXY_ACTIVE: + case ZBX_DAEMON_TYPE_PROXY_PASSIVE: + case ZBX_DAEMON_TYPE_PROXY: + zabbix_log(LOG_LEVEL_WARNING, "%s: loaded by proxy process. [%d]", MODULE_NAME, daemon_type); + ret = ZBX_MODULE_OK; + break; + case ZBX_DAEMON_TYPE_AGENT: + zabbix_log(LOG_LEVEL_INFORMATION, "%s: This loadable-module is not runnning by agent process. [%d]", MODULE_NAME, daemon_type); + break; + default: + zabbix_log(LOG_LEVEL_INFORMATION, "%s: unknown daemon_type [%d]", MODULE_NAME, daemon_type ); + } +#endif + + init_snmp(SNMP_NAME); + + return ret; +} + +/****************************************************************************** + * * + * Function: zbx_module_uninit * + * * + * Purpose: the function is called on agent shutdown * + * It should be used to cleanup used resources if there are any * + * * + * Return value: ZBX_MODULE_OK - success * + * ZBX_MODULE_FAIL - function failed * + * * + ******************************************************************************/ +int zbx_module_uninit(void) +{ + snmp_shutdown(SNMP_NAME); + + return ZBX_MODULE_OK; +} + + +/****************************************************************************** + * * + * Function: get_if_idx * + * * + * Purpose: substring lower 2 digits from oid (to link if_index to portid) * + * * + * Parameters: in - [IN] oid * + * out - [OUT] extracted string buffer * + * max_out_len - [IN] buffer length * + * * + ******************************************************************************/ +static void get_if_idx(void *in, char *out, size_t max_out_len) +{ + oid *port_num = (oid *)in; + + char temp_char[MAX_ID_LEN]; + char *temp_start; + + zbx_snprintf(temp_char, sizeof(temp_char), "%lu", *port_num); + if (strlen(temp_char) >= 2) + { + if (temp_char[strlen(temp_char) - 2] == '0') + { + temp_start = &temp_char[strlen(temp_char) - 1]; + } + else + { + temp_start = &temp_char[strlen(temp_char) - 2]; + } + } + else + { + temp_start = temp_char; + } + zbx_strlcpy(out, temp_start, max_out_len); +} + +/****************************************************************************** + * * + * Function: dump * + * * + * Purpose: dump binary data * + * * + * Parameters: separator - [IN] specify separator * + * src - [IN] original data * + * srclen - [IN] original data length * + * dest - [OUT] output string * + * * + ******************************************************************************/ +static void dump(const char separator, const unsigned char *src, size_t srclen, char *dest) +{ + size_t i; + char *dstp = dest; + + for (i = 0; i < srclen; i++) + { + zbx_snprintf(dstp, (srclen * 3) - (i * 3), "%02X%c", src[i], separator); + dstp += 3; + } + *(dstp - 1) = '\0'; +} + +/****************************************************************************** + * * + * Function: isasciistr * + * * + * Purpose: check data is binary or ascii string * + * * + * Parameters: cz - [IN] target data * + * len - [IN] target length * + * srclen - [IN] original data length * + * dest - [OUT] output string * + * * + * Return value: TRUE - target is ascii string * + * FALSE - target is not ascii string * + * * + ******************************************************************************/ +static int isasciistr(unsigned char *cz, size_t len) +{ + int i; + if (len <= 0) return TRUE; + for (i = 0; i < len; i++) + { + /* depending on the implementation of the target device, */ + /* sometimes it has '0x00' at the end of the string. */ + /* (probably it seems to be a bug that does not consider */ + /* the length of the terminate character.) */ + /* In order to avoid being judged as binary at that time, */ + /* make it recognize as a character string only */ + /* when the last character is '0x00' */ + if (!isprint(cz[i]) && !isspace(cz[i])) + { + if (i < (len - 1) || (i == (len - 1) && 0 != cz[i])) + return FALSE; + } + } + return TRUE; +} + +/****************************************************************************** + * * + * Function: init_discovery_request * + * * + * Purpose: initialize the discovery_request structure * + * * + * Parameters: request - [OUT] pointer to the structure * + * lld_key_macro - [IN] lld_macro assigned to indexes * + * lld_remkey_macro - [IN] lld_macro assigned to remote indexes * + * lld_optvalue_macro - [IN] lld_macro assigned to option values * + * opt_func - [IN] function poiner for process * + * option values * + * object_num - [IN] number of oids to retrieve * + * * + ******************************************************************************/ +static void init_discovery_request(lldpmod_discovery_request_t *request, + const char *lld_key_macro, const char *lld_remkey_macro, + const char *lld_optvalue_macro, lldpmod_optproc_func opt_func, int object_num) +{ + request->noid = 0; + request->noid_rem = 0; + request->noid_max = object_num; + + request->lld_key_macro = (char *)lld_key_macro; + request->lld_remkey_macro = (char *)lld_remkey_macro; + request->lld_optvalue_macro = (char *)lld_optvalue_macro; + request->opt_func = opt_func; + + request->rem_map = NULL; + request->key_types = NULL; + request->res_types = NULL; + request->dump_flags = NULL; + request->oids = NULL; + request->lld_value_macros = NULL; + + /* memory allocation */ + request->rem_map = (int *)zbx_malloc(request->rem_map, object_num * sizeof(int)); + request->key_types = (int *)zbx_malloc(request->key_types, object_num * sizeof(int)); + request->res_types = (int *)zbx_malloc(request->res_types, object_num * sizeof(int)); + request->dump_flags = (int *)zbx_malloc(request->dump_flags, object_num * sizeof(int)); + request->oids = (char **)zbx_malloc(request->oids, object_num * sizeof(char *)); + request->lld_value_macros = (char **)zbx_malloc(request->lld_value_macros, object_num * sizeof(char *)); + +} + +/****************************************************************************** + * * + * Function: free_discovery_request * + * * + * Purpose: free memory used by the discovery_request * + * * + * Parameters: request - pointer to the discovery_request structure * + * * + ******************************************************************************/ +static void free_discovery_request(lldpmod_discovery_request_t *request) +{ + request->noid = 0; + request->noid_rem = 0; + request->noid_max = 0; + + /* strings in the request array such as */ + /* request->oids[i], request->lld_value_macros[i] */ + /* are pointers to constants, so do not free. only array free. */ + zbx_free(request->rem_map); + zbx_free(request->key_types); + zbx_free(request->res_types); + zbx_free(request->dump_flags); + zbx_free(request->oids); + zbx_free(request->lld_value_macros); + +} + +/****************************************************************************** + * * + * Function: add_discovery_request * + * * + * Purpose: add a new parameter * + * * + * Parameters: request - [OUT] pointer to the request structure * + * key_type - [IN] KEY_TYPE_LOC or KEY_TYPE_REM * + * res_type - [IN] only RES_TYPE_STR for discovery * + * dump_flag - [IN] DUMP_NORMAL(space) or * + * DUMP_WITH_MAC(coron) * + * oid - [IN] oid to retrieve * + * lld_value_macro - [IN] lld macro collesponding to oid's value * + * * + ******************************************************************************/ +static void add_discovery_request(lldpmod_discovery_request_t *request, + int key_type, int res_type, int dump_flag, char *oid, char *lld_value_macro) +{ + if (request->noid >= request->noid_max) + return; + + request->noid++; + if (KEY_TYPE_REM == key_type) + { + request->noid_rem++; + request->rem_map[request->noid - 1] = request->noid_rem - 1; + } + else + { + request->rem_map[request->noid - 1] = request->noid - request->noid_rem - 1; + } + + request->res_types[request->noid - 1] = res_type; + request->key_types[request->noid - 1] = key_type; + request->dump_flags[request->noid - 1] = dump_flag; + request->oids[request->noid - 1] = oid; + request->lld_value_macros[request->noid - 1] = lld_value_macro; + +} + +/****************************************************************************** + * * + * Function: lldpmod_get_snmp_type_error * + * * + * Purpose: convert snmp type to string * + * * + * Parameters: type - snmp type * + * * + * Return value: string collesponding to snmp type * + * * + ******************************************************************************/ +static char *lldpmod_get_snmp_type_error(u_char type) +{ + switch (type) + { + case SNMP_NOSUCHOBJECT: + return zbx_strdup(NULL, "No Such Object available on this agent at this OID"); + case SNMP_NOSUCHINSTANCE: + return zbx_strdup(NULL, "No Such Instance currently exists at this OID"); + case SNMP_ENDOFMIBVIEW: + return zbx_strdup(NULL, "No more variables left in this MIB View" + " (it is past the end of the MIB tree)"); + default: + return zbx_dsprintf(NULL, "Value has unknown type 0x%02X", (unsigned int)type); + } +} + +/****************************************************************************** + * * + * Function: lldpmod_get_snmp_response_error * + * * + * Purpose: convert snmp code to string * + * * + * Parameters: ss - [IN] snmp session * + * status - [IN] snmp status code * + * resoponse - [IN] snmp_response structure * + * error - [OUT] error message buffer * + * error_len - [IN] buffer length * + * * + * Return value: item return code * + * * + ******************************************************************************/ +static int lldpmod_get_snmp_response_error(const struct snmp_session *ss, int status, + const struct snmp_pdu *response, char *error, size_t max_error_len) +{ + int ret; + + /* error in response */ + if (STAT_SUCCESS == status) + { + zbx_snprintf(error, max_error_len, "SNMP error: %s", snmp_errstring(response->errstat)); + ret = NOTSUPPORTED; + } + else if (STAT_ERROR == status) + { + zbx_snprintf(error, max_error_len, "Cannot connect to \"%s\": %s.", ss->peername, snmp_api_errstring(ss->s_snmp_errno)); + ret = NETWORK_ERROR; + } + else if (STAT_TIMEOUT == status) + { + zbx_snprintf(error, max_error_len, "Timeout while connecting to \"%s\".", ss->peername); + ret = NETWORK_ERROR; + } + else + { + zbx_snprintf(error, max_error_len, "SNMP error: [%d]", status); + ret = NOTSUPPORTED; + } + + return ret; +} + +/****************************************************************************** + * * + * Function: lldpmod_snmp_open_session * + * * + * Purpose: open snmp session * + * * + * Parameters: IP - [IN] IP address of monitoring object * + * community - [IN] snmp community name * + * error - [OUT] error message buffer * + * error_len - [IN] buffer length * + * * + * Return value: item return code * + * * + ******************************************************************************/ +static netsnmp_session *lldpmod_snmp_open_session(const char *IP, const char *community, char *error, size_t max_error_len) +{ + netsnmp_session session, *ss = NULL; + + snmp_sess_init(&session); + + session.version = SNMP_VERSION_2c; + + session.timeout = item_timeout * 1000 * 1000; /* timeout of one attempt in microseconds */ + /* (net-snmp default = 1 second) */ + session.retries = 0; + + session.peername = (char *)IP; + + session.community = (u_char *)community; + + session.community_len = strlen((char *)session.community); + + SOCK_STARTUP; + + if (NULL == (ss = snmp_open(&session))) + { + SOCK_CLEANUP; + zbx_strlcpy(error, "Cannot open SNMP session", max_error_len); + } + + return ss; +} + +/****************************************************************************** + * * + * Function: lldpmod_snmp_close_session * + * * + * Purpose: close snmp session * + * * + * Parameters: session - [IN] snmp session * + * * + ******************************************************************************/ +static void lldpmod_snmp_close_session(netsnmp_session *session) +{ + snmp_close(session); + SOCK_CLEANUP; +} + +/****************************************************************************** + * * + * Function: lldpmod_get_octet_string * + * * + * Purpose: copy snmp string to buffer * + * * + * Parameters: var - [IN] snmp variable_list * + * * + * Return value: pointer to string * + * * + ******************************************************************************/ +static char *lldpmod_get_octet_string(const struct variable_list *var) +{ + const char *hint; + char buffer[MAX_STRING_LEN]; + char *strval_dyn = NULL; + struct tree *subtree; + + /* find the subtree to get display hint */ + subtree = get_tree(var->name, var->name_length, get_tree_head()); + hint = (NULL != subtree ? subtree->hint : NULL); + + /* we will decide if we want the value from var->val or what snprint_value() returned later */ + if (-1 == snprint_value(buffer, sizeof(buffer), var->name, var->name_length, var)) + goto end; + + if (0 == strncmp(buffer, "Hex-STRING: ", 12)) + { + strval_dyn = zbx_strdup(strval_dyn, buffer + 12); + } + else if (NULL != hint && 0 == strncmp(buffer, "STRING: ", 8)) + { + strval_dyn = zbx_strdup(strval_dyn, buffer + 8); + } + else if (0 == strncmp(buffer, "OID: ", 5)) + { + strval_dyn = zbx_strdup(strval_dyn, buffer + 5); + } + else if (0 == strncmp(buffer, "BITS: ", 6)) + { + strval_dyn = zbx_strdup(strval_dyn, buffer + 6); + } + else + { + /* snprint_value() escapes hintless ASCII strings, so */ + /* we are copying the raw unescaped value in this case */ + + strval_dyn = (char *)zbx_malloc(strval_dyn, var->val_len + 1); + memcpy(strval_dyn, var->val.string, var->val_len); + strval_dyn[var->val_len] = '\0'; + } + +end: + return strval_dyn; +} + +/****************************************************************************** + * * + * Function: lldpmod_snmp_set_result * + * * + * Purpose: set snmp result to zabbix agent_result * + * * + * Parameters: var - [IN] snmp variable_list * + * result - [OUT] zabbix agent_result * + * res_type - [IN] RES_TYPE_STR or RES_TYPE_BSTR or RES_TYPE_INT * + * dump_flag - [IN] DUMP_NORMAL(space) or DUMP_WITH_MAC(coron) * + * * + * Return value: item return code * + * * + ******************************************************************************/ +static int lldpmod_snmp_set_result(const struct variable_list *var, AGENT_RESULT *result, int res_type, int dump_flag) +{ + char *strval_dyn = NULL; + int ret = SUCCEED; + + if (res_type == RES_TYPE_BSTR) + { + /* if RES_TYPE_BSTR, use lldpmod_get_octet_string */ + if (NULL == (strval_dyn = lldpmod_get_octet_string(var))) + { + SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot receive string value: out of memory.")); + ret = NOTSUPPORTED; + } + else + { + zbx_replace_invalid_utf8(strval_dyn); + SET_TEXT_RESULT(result, zbx_strdup(NULL, strval_dyn)); + zbx_free(strval_dyn); + } + } + else if (ASN_OCTET_STR == var->type || ASN_OBJECT_ID == var->type) + { + /* if other res_type, and ASN_OCTET_STR or ASN_OBJECT_ID */ + if (isasciistr(var->val.string, var->val_len)) + { + /* if ascii string, simply copy strings */ + if (NULL == (strval_dyn = (char *)zbx_malloc(strval_dyn, 1 + var->val_len))) + { + SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot receive string value: out of memory.")); + ret = NOTSUPPORTED; + } + else + { + memcpy(strval_dyn, var->val.string, var->val_len); + strval_dyn[var->val_len] = '\0'; + + zbx_replace_invalid_utf8(strval_dyn); + SET_TEXT_RESULT(result, zbx_strdup(NULL, strval_dyn)); + zbx_free(strval_dyn); + } + } + else + { + /* in other case, dump binaries */ + if (NULL == (strval_dyn = (char *)zbx_malloc(strval_dyn, 3 * (var->val_len) + 1))) + { + SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot receive string value: out of memory.")); + ret = NOTSUPPORTED; + } + else + { + char separator; + if (DUMP_WITH_MAC == dump_flag) + separator = ':'; + else + separator = ' '; + dump(separator, (const unsigned char *)var->val.string, var->val_len, strval_dyn); + + zbx_replace_invalid_utf8(strval_dyn); + SET_TEXT_RESULT(result, zbx_strdup(NULL, strval_dyn)); + zbx_free(strval_dyn); + } + } + } +#ifdef OPAQUE_SPECIAL_TYPES + else if (ASN_UINTEGER == var->type || ASN_COUNTER == var->type || ASN_OPAQUE_U64 == var->type || + ASN_TIMETICKS == var->type || ASN_GAUGE == var->type) +#else + else if (ASN_UINTEGER == var->type || ASN_COUNTER == var->type || + ASN_TIMETICKS == var->type || ASN_GAUGE == var->type) +#endif + { + SET_UI64_RESULT(result, (unsigned long)*var->val.integer); + } +#ifdef OPAQUE_SPECIAL_TYPES + else if (ASN_COUNTER64 == var->type || ASN_OPAQUE_COUNTER64 == var->type) +#else + else if (ASN_COUNTER64 == var->type) +#endif + { + SET_UI64_RESULT(result, (((zbx_uint64_t)var->val.counter64->high) << 32) + + (zbx_uint64_t)var->val.counter64->low); + } +#ifdef OPAQUE_SPECIAL_TYPES + else if (ASN_INTEGER == var->type || ASN_OPAQUE_I64 == var->type) +#else + else if (ASN_INTEGER == var->type) +#endif + { + char buffer[21]; + + zbx_snprintf(buffer, sizeof(buffer), "%ld", *var->val.integer); + + zbx_replace_invalid_utf8(buffer); + SET_TEXT_RESULT(result, zbx_strdup(NULL, buffer)); + } +#ifdef OPAQUE_SPECIAL_TYPES + else if (ASN_OPAQUE_FLOAT == var->type) + { + SET_DBL_RESULT(result, *var->val.floatVal); + } + else if (ASN_OPAQUE_DOUBLE == var->type) + { + SET_DBL_RESULT(result, *var->val.doubleVal); + } +#endif + else if (ASN_IPADDRESS == var->type) + { + SET_STR_RESULT(result, zbx_dsprintf(NULL, "%u.%u.%u.%u", + (unsigned int)var->val.string[0], + (unsigned int)var->val.string[1], + (unsigned int)var->val.string[2], + (unsigned int)var->val.string[3])); + } + else + { + SET_MSG_RESULT(result, lldpmod_get_snmp_type_error(var->type)); + ret = NOTSUPPORTED; + } + + return ret; +} + +/****************************************************************************** + * * + * Function: lldpmod_snmp_object_hash * + * * + * Purpose: return hash value for snmp oid * + * * + * Parameters: data - [IN] target oid * + * * + * Return value: hash value * + * * + ******************************************************************************/ +static zbx_hash_t lldpmod_snmp_object_hash(const void *data) +{ + const oid *key = (const oid *)data; + +#ifdef ZBX_DEFAULT_HASH_ALGO + return ZBX_DEFAULT_HASH_ALGO(key, sizeof(oid), ZBX_DEFAULT_HASH_SEED); +#else /* ZBX_DEFAULT_UINT64_HASH_ALGO (Zabbix2.x) */ + return ZBX_DEFAULT_UINT64_HASH_ALGO(key, sizeof(oid), ZBX_DEFAULT_HASH_SEED); +#endif + +} + +/****************************************************************************** + * * + * Function: lldpmod_snmp_object_compare * + * * + * Purpose: compare funcion for oid * + * * + * Parameters: d1 - [IN] target oid 1 * + * d2 - [IN] target oid 2 * + * * + * Return value: -1 if d1 < d2, 0 if d1 = d2, 1 if d1 > d2 * + * * + ******************************************************************************/ +static int lldpmod_snmp_object_compare(const void *d1, const void *d2) +{ + const oid *k1 = (const oid *)d1; + const oid *k2 = (const oid *)d2; + + if (d1 == d2) + return 0; + + return snmp_oid_compare(k1, 1, k2, 1); + +} + +/****************************************************************************** + * * + * Function: lldpmod_snmp_data_clean * + * * + * Purpose: releases data allocated by snmp walk or discovery * + * * + * Parameters: data - [IN] snmpwalk data object * + * * + ******************************************************************************/ +static void lldpmod_snmp_data_clean(lldpmod_discovery_data_t *data) +{ + int i; + lldpmod_snmp_object_t *obj; + lldpmod_snmp_object_t *rem_obj; + zbx_hashset_iter_t iter; + zbx_hashset_iter_t rem_iter; + + zbx_hashset_iter_reset(&data->objects, &iter); + while (NULL != (obj = (lldpmod_snmp_object_t *)zbx_hashset_iter_next(&iter))) + { + if (NULL != obj->rem_objects) + { + zbx_hashset_iter_reset(obj->rem_objects, &rem_iter); + while (NULL != (rem_obj = (lldpmod_snmp_object_t *)zbx_hashset_iter_next(&rem_iter))) + { + for (i = 0; i < data->request.noid; i++) + { + if (KEY_TYPE_REM == data->request.key_types[i]) + zbx_free(rem_obj->values[data->request.rem_map[i]]); + } + zbx_free(rem_obj->values); + } + zbx_hashset_destroy(obj->rem_objects); + zbx_free(obj->rem_objects); + } + + for (i = 0; i < data->request.noid; i++) + zbx_free(obj->values[i]); + + zbx_free(obj->values); + } + + zbx_hashset_destroy(&data->objects); + + free_discovery_request(&data->request); +} + +/****************************************************************************** + * * + * Function: lldpmod_snmpwalk * + * * + * Purpose: get data from monitoring object by snmp-walk * + * * + * Parameters: session - [IN] snmp session * + * OID - target OID of snmp-walk * + * error - [OUT] error message buffer * + * error_len - [IN] buffer length * + * walk_cb_func - [IN] callback function to process walked OIDs * + * and their values * + * walk_cb_arg - [IN] argument to pass to the callback function * + * * + * Return value: item return code * + * * + ******************************************************************************/ +static int lldpmod_snmpwalk(struct snmp_session *ss, const char *OID, char *error, size_t max_error_len, + lldpmod_snmpwalk_cb_func walk_cb_func, void *walk_cb_arg) +{ + netsnmp_pdu *pdu, *response; + oid name[MAX_OID_LEN], root[MAX_OID_LEN]; + size_t name_len = MAX_OID_LEN, root_len = MAX_OID_LEN; + + netsnmp_variable_list *var; + int status, running, ret = SUCCEED; + + /* create OID from string */ + if (NULL == snmp_parse_oid(OID, root, &root_len)) + { + zbx_snprintf(error, max_error_len, "snmp_parse_oid(): cannot parse OID \"%s\".", OID); + ret = CONFIG_ERROR; + goto out; + } + + /* copy root to name */ + memcpy(name, root, root_len * sizeof(oid)); + name_len = root_len; + + /* initialize variables */ + running = 1; + + while (running) + { + if (NULL == (pdu = snmp_pdu_create(SNMP_MSG_GETNEXT))) + { + zbx_strlcpy(error, "snmp_pdu_create(): cannot create PDU object.", max_error_len); + ret = NOTSUPPORTED; + break; + } + + if (NULL == snmp_add_null_var(pdu, name, name_len)) /* add OID as variable to PDU */ + { + zbx_strlcpy(error, "snmp_add_null_var(): cannot add null variable.", max_error_len); + ret = NOTSUPPORTED; + snmp_free_pdu(pdu); + break; + } + + status = snmp_synch_response(ss, pdu, &response); + + if (STAT_SUCCESS != status || SNMP_ERR_NOERROR != response->errstat) + { + ret = lldpmod_get_snmp_response_error(ss, status, response, error, max_error_len); + running = 0; + goto next; + } + + /* check retrieved variables */ + for (var = response->variables; var; var = var->next_variable) + { + if (SNMP_ENDOFMIBVIEW == var->type || var->name_length < root_len || + 0 != memcmp(root, var->name, root_len * sizeof(oid))) + { + /* not part of this subtree */ + running = 0; + break; + } + else if (SNMP_NOSUCHOBJECT != var->type && SNMP_NOSUCHINSTANCE != var->type) + { + /* callback functions */ + if (SUCCEED != (ret = walk_cb_func(walk_cb_arg, var))) + { + running = 0; + break; + } + + /* get next */ + memcpy((char *)name, (char *)var->name, var->name_length * sizeof(oid)); + name_len = var->name_length; + } + else + { + /* an exception value, so stop */ + char *errmsg; + + errmsg = lldpmod_get_snmp_type_error(var->type); + zbx_strlcpy(error, errmsg, max_error_len); + zbx_free(errmsg); + ret = NOTSUPPORTED; + running = 0; + break; + } + + } /* for (var = response->variables; var; var = var->next_variable) */ + +next: + if (NULL != response) + snmp_free_pdu(response); + + } /* while (running) */ + +out: + return ret; + +} + +/****************************************************************************** + * * + * Function: lldpmod_snmpwalk_getrem_cb * + * * + * Purpose: callback function pass to lldpmod_snmpwalk to get a remote object * + * walk remote objects ignore timemark while checking index and * + * remote index * + * * + * Parameters: arg - [IN/OUT] condition and result * + * var - [IN] snmp variable_list * + * * + * Return value: SUCCEED_WITH_VALUE - succeed and found a remote object * + * SUCCEED - no error occured but not found any remote object * + * other item return code - error occured * + * * + ******************************************************************************/ +int lldpmod_snmpwalk_getrem_cb(void *arg, const netsnmp_variable_list *var) +{ + lldpmod_getrem_data_t *getrem_data = (lldpmod_getrem_data_t *)arg; + int ret = SUCCEED; + int err = SUCCEED; + + if ( var->name_length > 1 && + getrem_data->index == var->name[var->name_length - 2] && + getrem_data->rem_index == var->name[var->name_length - 1]) + { + if (SUCCEED != (err = lldpmod_snmp_set_result(var, getrem_data->result, getrem_data->res_type, getrem_data->dump_flag))) + { + char **msg; + + msg = GET_MSG_RESULT(getrem_data->result); + + zabbix_log(LOG_LEVEL_DEBUG, "%s: cannot get index='%lu', rem_index='%lu' value: %s", MODULE_NAME, + (unsigned long)getrem_data->index, (unsigned long)getrem_data->rem_index, NULL != msg && NULL != *msg ? *msg : "(null)"); + + } + if (SUCCEED == err) + ret = SUCCEED_WITH_VALUE; + else + ret = err; + + } + return ret; +} + +/****************************************************************************** + * * + * Function: lldpmod_snmpwalk_discovery_cb * + * * + * Purpose: callback function pass to lldpmod_snmpwalk to discovery items * + * walk and collect objects with index as key to output lld rules * + * * + * Parameters: arg - [IN/OUT] request and result * + * var - [IN] snmp variable_list * + * * + * Return value: item return code * + * * + ******************************************************************************/ +int lldpmod_snmpwalk_discovery_cb(void *arg, const netsnmp_variable_list *var) +{ + lldpmod_discovery_data_t *data = (lldpmod_discovery_data_t *)arg; + AGENT_RESULT snmp_result; + + lldpmod_snmp_object_t *obj; + lldpmod_snmp_object_t *rem_obj; + + oid index; + oid rem_index; + + int ret = SUCCEED; + + if (data->request.key_types[data->num] == KEY_TYPE_LOC && var->name_length > 0) + index = var->name[var->name_length - 1]; + else if (var->name_length > 1) /* KEY_TYPE_REM */ + { + index = var->name[var->name_length - 2]; + rem_index = var->name[var->name_length - 1]; + } + else + { + return ret; + } + + init_result(&snmp_result); + if (SUCCEED == lldpmod_snmp_set_result(var, &snmp_result, data->request.res_types[data->num], data->request.dump_flags[data->num]) && + NULL != GET_STR_RESULT(&snmp_result)) + { + if (NULL == (obj = (lldpmod_snmp_object_t *)zbx_hashset_search(&data->objects, &index))) + { + /* if index not found, create new hash */ + lldpmod_snmp_object_t new_obj; + + new_obj.index = index; + new_obj.values = (char **)zbx_malloc(NULL, sizeof(char *) * data->request.noid); + memset(new_obj.values, 0, sizeof(char *) * data->request.noid); + new_obj.rem_objects = NULL; + + obj = (lldpmod_snmp_object_t *)zbx_hashset_insert(&data->objects, &new_obj, sizeof(new_obj)); + } + + if (NULL != obj) + { + if (data->request.key_types[data->num] == KEY_TYPE_REM) + { + /* if remote object and rem_index not found, create new hash */ + if (NULL == obj->rem_objects || NULL == (rem_obj = (lldpmod_snmp_object_t *)zbx_hashset_search(obj->rem_objects, &rem_index))) + { + if (NULL == obj->rem_objects) + { + obj->rem_objects = (zbx_hashset_t *)zbx_malloc(NULL, sizeof(zbx_hashset_t)); + zbx_hashset_create(obj->rem_objects, 10, lldpmod_snmp_object_hash, lldpmod_snmp_object_compare); + } + lldpmod_snmp_object_t new_rem_obj; + + new_rem_obj.index = rem_index; + new_rem_obj.values = (char **)zbx_malloc(NULL, sizeof(char *) * data->request.noid_rem); + memset(new_rem_obj.values, 0, sizeof(char *) * data->request.noid_rem); + new_rem_obj.rem_objects = NULL; + + rem_obj = (lldpmod_snmp_object_t *)zbx_hashset_insert(obj->rem_objects, &new_rem_obj, sizeof(new_rem_obj)); + } + if (NULL != rem_obj->values[data->request.rem_map[data->num]]) + { + zabbix_log(LOG_LEVEL_WARNING, "%s: the same index appears again. oid='%s',index=%lu, rem_index=%lu, oldvalue='%s', newvalue='%s'", + MODULE_NAME, + data->request.oids[data->num], + (unsigned long)index, (unsigned long)rem_index, + rem_obj->values[data->request.rem_map[data->num]], + snmp_result.str); + zbx_free(rem_obj->values[data->request.rem_map[data->num]]); + } + + rem_obj->values[data->request.rem_map[data->num]] = zbx_strdup(NULL, snmp_result.str); + + } + else /* KEY_TYPE_LOC */ + { + if (NULL != obj->values[data->num]) + { + zabbix_log(LOG_LEVEL_WARNING, "%s: the same index appears again. oid='%s',index=%lu, oldvalue='%s', newvalue='%s'", + MODULE_NAME, + data->request.oids[data->num], + (unsigned long)index, + obj->values[data->num], + snmp_result.str); + zbx_free(obj->values[data->num]); + } + + obj->values[data->num] = zbx_strdup(NULL, snmp_result.str); + } + } + + } + else + { + char **msg; + msg = GET_MSG_RESULT(&snmp_result); + if (data->request.key_types[data->num] == KEY_TYPE_LOC) + zabbix_log(LOG_LEVEL_DEBUG, "%s: cannot get index '%lu' string value: %s", MODULE_NAME, + (unsigned long)index, NULL != msg && NULL != *msg ? *msg : "(null)"); + else + zabbix_log(LOG_LEVEL_DEBUG, "%s: cannot get index '%lu.%lu' string value: %s", MODULE_NAME, + (unsigned long)index, (unsigned long)rem_index, NULL != msg && NULL != *msg ? *msg : "(null)"); + + } + + free_result(&snmp_result); + + return ret; +} + + +/****************************************************************************** + * * + * Function: lldpmod_lldp_discovery * + * * + * Purpose: a main entry point for item discovery * + * * + * Parameters: request - structure that contains item key and parameters * + * request->key - item key without parameters * + * request->nparam - number of parameters * + * request->timeout - processing should not take longer than * + * this number of seconds * + * request->params[N-1] - pointers to item key parameters * + * * + * result - structure that will contain result * + * * + * Return value: SYSINFO_RET_FAIL - function failed, item will be marked * + * as not supported by zabbix * + * SYSINFO_RET_OK - success * + * * + * Comment: get_rparam(request, N-1) can be used to get a pointer to the Nth * + * parameter starting from 0 (first parameter). Make sure it exists * + * by checking value of request->nparam. * + * * + ******************************************************************************/ +int lldpmod_lldp_discovery(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + netsnmp_session *ss; + char error[MAX_STRING_LEN]; + + int ret = SYSINFO_RET_OK; + int err = SUCCEED; + + char *param_ip, *param_community, *param_func; + + struct zbx_json js; + + int i; + lldpmod_discovery_data_t data; + lldpmod_snmp_object_t *obj; + lldpmod_snmp_object_t *rem_obj; + zbx_hashset_iter_t iter; + zbx_hashset_iter_t rem_iter; + + char oid_str_buf[MAX_ID_LEN]; + + + if (request->nparam < 3 || request->nparam > 3) + { + SET_MSG_RESULT(result, strdup("Invalid number of parameters")); + return SYSINFO_RET_FAIL; + } + param_ip = get_rparam(request, 0); + param_community = get_rparam(request, 1); + param_func = get_rparam(request, 2); + + if (NULL == param_ip || '\0' == *param_ip) + { + SET_MSG_RESULT(result, strdup("Invalid format of 1st parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_community || '\0' == *param_community) + { + SET_MSG_RESULT(result, strdup("Invalid format of 2nd parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_func || '\0' == *param_func + || ((0 != strcmp(param_func, "local")) + && (0 != strcmp(param_func, "remote")) + && (0 != strcmp(param_func, "interface")))) + { + SET_MSG_RESULT(result, strdup("Invalid format of 3rd parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == (ss = lldpmod_snmp_open_session(param_ip, param_community, error, sizeof(error)))) + { + err = NETWORK_ERROR; + goto out; + } + + zbx_hashset_create(&data.objects, 10, lldpmod_snmp_object_hash, lldpmod_snmp_object_compare); + + /* setup request parameter */ + if (0 == strcmp(param_func, "local")) + { + init_discovery_request(&data.request, LLD_MACRO_PORT_INDEX, NULL, NULL, NULL, 1); + + add_discovery_request(&data.request, KEY_TYPE_LOC, RES_TYPE_STR, DUMP_WITH_MAC, LOC_PORTID_OID, LLD_MACRO_PORT_NAME); + } + else if (0 == strcmp(param_func, "remote")) + { + init_discovery_request(&data.request, LLD_MACRO_PORT_INDEX, LLD_MACRO_REM_INDEX, NULL, NULL, 2); + + add_discovery_request(&data.request, KEY_TYPE_LOC, RES_TYPE_STR, DUMP_WITH_MAC, LOC_PORTID_OID, LLD_MACRO_PORT_NAME); + + add_discovery_request(&data.request, KEY_TYPE_REM, RES_TYPE_STR, DUMP_WITH_MAC, REM_PORTID_OID, NULL); + } + else /* if (0 == strcmp(param_func, "interface")) */ + { + init_discovery_request(&data.request, LLD_MACRO_PORT_INDEX, NULL, LLD_MACRO_PORT_IDENTIFIER, get_if_idx, 3); + + add_discovery_request(&data.request, KEY_TYPE_LOC, RES_TYPE_STR, DUMP_NORMAL, IF_OID, LLD_MACRO_PORT_NAME); + + add_discovery_request(&data.request, KEY_TYPE_LOC, RES_TYPE_STR, DUMP_NORMAL, IF_DESC_OID, LLD_MACRO_PORT_DESC); + + add_discovery_request(&data.request, KEY_TYPE_LOC, RES_TYPE_STR, DUMP_NORMAL, IF_TYPE_OID, LLD_MACRO_IF_TYPE); + + } + + /* call net-snmp library */ + for (data.num = 0; data.num < data.request.noid; data.num++) + { + if (SUCCEED != (err = lldpmod_snmpwalk(ss, data.request.oids[data.num], error, sizeof(error), lldpmod_snmpwalk_discovery_cb, &data))) + { + zabbix_log(LOG_LEVEL_WARNING, "%s: %s", MODULE_NAME, error); + goto clean; + } + } + + /* make lld rules json from retrieved result */ + zbx_json_init(&js, ZBX_JSON_STAT_BUF_LEN); + zbx_json_addarray(&js, ZBX_PROTO_TAG_DATA); + + zbx_hashset_iter_reset(&data.objects, &iter); + while (NULL != (obj = (lldpmod_snmp_object_t *)zbx_hashset_iter_next(&iter))) + { + if (0 == strcmp(param_func, "remote")) + { + /* lldp remote objects */ + if (NULL == obj->rem_objects || 0 == obj->rem_objects->num_data) + { + /* port that can't get remote information */ + zbx_json_addobject(&js, NULL); + zbx_snprintf(oid_str_buf, sizeof(oid_str_buf), "%lu", (unsigned long)obj->index); + zbx_json_addstring(&js, data.request.lld_key_macro, oid_str_buf, ZBX_JSON_TYPE_STRING); + zbx_json_addstring(&js, data.request.lld_remkey_macro, "0", ZBX_JSON_TYPE_STRING); + + for (i = 0; i < data.request.noid; i++) + { + if (NULL != obj->values[i] && NULL != data.request.lld_value_macros[i]) + zbx_json_addstring(&js, data.request.lld_value_macros[i], obj->values[i], ZBX_JSON_TYPE_STRING); + } + zbx_json_close(&js); + } + else + { + /* port that can get remote information */ + zbx_hashset_iter_reset(obj->rem_objects, &rem_iter); + while (NULL != (rem_obj = (lldpmod_snmp_object_t *)zbx_hashset_iter_next(&rem_iter))) + { + zbx_json_addobject(&js, NULL); + + zbx_snprintf(oid_str_buf, sizeof(oid_str_buf), "%lu", (unsigned long)obj->index); + zbx_json_addstring(&js, data.request.lld_key_macro, oid_str_buf, ZBX_JSON_TYPE_STRING); + + zbx_snprintf(oid_str_buf, sizeof(oid_str_buf), "%lu", (unsigned long)rem_obj->index); + zbx_json_addstring(&js, data.request.lld_remkey_macro, oid_str_buf, ZBX_JSON_TYPE_STRING); + + for (i = 0; i < data.request.noid; i++) + { + if (KEY_TYPE_LOC == data.request.key_types[i]) + { + if (NULL != obj->values[i] && NULL != data.request.lld_value_macros[i]) + zbx_json_addstring(&js, data.request.lld_value_macros[i], obj->values[i], ZBX_JSON_TYPE_STRING); + } + else + { + if (NULL != rem_obj->values[data.request.rem_map[i]] && NULL != data.request.lld_value_macros[i]) + zbx_json_addstring(&js, data.request.lld_value_macros[i], rem_obj->values[data.request.rem_map[i]], ZBX_JSON_TYPE_STRING); + } + } + + zbx_json_close(&js); + } + } + } + else + { + /* lldp local objects or interface objects */ + zbx_json_addobject(&js, NULL); + + zbx_snprintf(oid_str_buf, sizeof(oid_str_buf), "%lu", (unsigned long)obj->index); + zbx_json_addstring(&js, data.request.lld_key_macro, oid_str_buf, ZBX_JSON_TYPE_STRING); + + if (NULL != data.request.lld_optvalue_macro && NULL != data.request.opt_func) + { + data.request.opt_func(&obj->index, oid_str_buf, sizeof(oid_str_buf)); + zbx_json_addstring(&js, data.request.lld_optvalue_macro, oid_str_buf, ZBX_JSON_TYPE_STRING); + } + + for (i = 0; i < data.request.noid; i++) + { + if (NULL != obj->values[i] && NULL != data.request.lld_value_macros[i]) + zbx_json_addstring(&js, data.request.lld_value_macros[i], obj->values[i], ZBX_JSON_TYPE_STRING); + } + + zbx_json_close(&js); + } + } + + zbx_json_close(&js); + + /* make lld rules end */ + + + SET_TEXT_RESULT(result, zbx_strdup(NULL, js.buffer)); + + zbx_json_free(&js); + +clean: + lldpmod_snmp_close_session(ss); + lldpmod_snmp_data_clean(&data); + +out: + if (SUCCEED != err) + { + SET_MSG_RESULT(result, zbx_strdup(NULL, error)); + ret = SYSINFO_RET_FAIL; + } + + return ret; + +} + +/****************************************************************************** + * * + * Function: lldpmod_getrem_common * + * * + * Purpose: common function of get specific remote object * + * each caller functions pass oid, dump_flag, res_type * + * * + * Parameters: request - structure that contains item key and parameters * + * request->key - item key without parameters * + * request->nparam - number of parameters * + * request->timeout - processing should not take longer than * + * this number of seconds * + * request->params[N-1] - pointers to item key parameters * + * * + * result - structure that will contain result * + * get_mib - target mib * + * getrem_data - structure that contains parameter * + * getrem_data->dump_flag - DUMP_NORMAL(space) or * + * DUMP_WITH_MAC(coron) * + * getrem_data->res_type - RES_TYPE_STR or RES_TYPE_BSTR or * + * RES_TYPE_INT * + * * + * Return value: SYSINFO_RET_FAIL - function failed, item will be marked * + * as not supported by zabbix * + * SYSINFO_RET_OK - success * + * * + * Comment: get_rparam(request, N-1) can be used to get a pointer to the Nth * + * parameter starting from 0 (first parameter). Make sure it exists * + * by checking value of request->nparam. * + * * + ******************************************************************************/ +int lldpmod_getrem_common(AGENT_REQUEST *request, AGENT_RESULT *result, const char *get_mib, lldpmod_getrem_data_t *getrem_data) +{ + + netsnmp_session *ss; + char error[MAX_STRING_LEN]; + + int ret = SYSINFO_RET_OK; + int err = SUCCEED; + + char *param_ip, *param_community, *param_port_num, *param_rem_idx, *param_def_val; + + + if (request->nparam < 4 || request->nparam > 5) + { + SET_MSG_RESULT(result, strdup("Invalid number of parameters")); + return SYSINFO_RET_FAIL; + } + param_ip = get_rparam(request, 0); + param_community = get_rparam(request, 1); + param_port_num = get_rparam(request, 2); + param_rem_idx = get_rparam(request, 3); + param_def_val = get_rparam(request, 4); + + + if (NULL == param_ip || '\0' == *param_ip) + { + SET_MSG_RESULT(result, strdup("Invalid format of 1st parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_community || '\0' == *param_community) + { + SET_MSG_RESULT(result, strdup("Invalid format of 2nd parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_port_num || '\0' == *param_port_num) + { + SET_MSG_RESULT(result, strdup("Invalid format of 3rd parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_rem_idx || '\0' == *param_rem_idx) + { + SET_MSG_RESULT(result, strdup("Invalid format of 4th parameter")); + return SYSINFO_RET_FAIL; + } + + + if (NULL != param_def_val && + ( (strlen(param_def_val) == 1) || + (strlen(param_def_val) > 1 && param_def_val[0] != '{' && param_def_val[1] != '$'))) + { + /* when default value was specified, return exact same string */ + /* don't perform snmp-walk */ + SET_TEXT_RESULT(result, strdup(param_def_val)); + goto out; + } + + if (0 == atol(param_rem_idx)) + { + /* when remote index is 0, remote device is not connected */ + /* don't perform snmp-walk */ + if (RES_TYPE_STR == getrem_data->res_type) + SET_TEXT_RESULT(result, strdup(NC_STRVAL)); + else /* RES_TYPE_STR or RES_TYPE_BSTR */ + SET_TEXT_RESULT(result, strdup(NC_INTVAL)); + goto out; + } + + if (NULL == (ss = lldpmod_snmp_open_session(param_ip, param_community, error, sizeof(error)))) + { + err = NETWORK_ERROR; + goto exit; + } + + getrem_data->index = (oid)strtoul(param_port_num, NULL, 0); + getrem_data->rem_index = (oid)strtoul(param_rem_idx, NULL, 0); + getrem_data->result = result; + + /* call net-snmp library */ + err = lldpmod_snmpwalk(ss, get_mib, error, sizeof(error), lldpmod_snmpwalk_getrem_cb, getrem_data); + + lldpmod_snmp_close_session(ss); + +exit: + if (SUCCEED_WITH_VALUE != err) + { + if (SUCCEED == err) + { + /* specified remote index was not found */ + SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Object not found. [ %s, %lu, %lu ]", + get_mib, (unsigned long)getrem_data->index, (unsigned long)getrem_data->rem_index)); + } + else + { + SET_MSG_RESULT(result, zbx_strdup(NULL, error)); + } + + char **msg; + msg = GET_MSG_RESULT(result); + zabbix_log(LOG_LEVEL_DEBUG, "%s: getting SNMP values failed: %s", MODULE_NAME, NULL != msg && NULL != *msg ? *msg : "(null)"); + + ret = SYSINFO_RET_FAIL; + } + +out: + return ret; + +} + +/* get rem_portid_subtype */ +int lldpmod_getrem_port_type(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + lldpmod_getrem_data_t getrem_data; + + getrem_data.dump_flag = DUMP_NORMAL; + getrem_data.res_type = RES_TYPE_INT; + + return lldpmod_getrem_common(request, result, REM_TYPE_OID, &getrem_data); +} + +/* get rem_portid */ +int lldpmod_getrem_port_id(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + lldpmod_getrem_data_t getrem_data; + + getrem_data.dump_flag = DUMP_WITH_MAC; + getrem_data.res_type = RES_TYPE_STR; + + return lldpmod_getrem_common(request, result, REM_PORTID_OID, &getrem_data); +} + +/* get rem_port_description */ +int lldpmod_getrem_port_desc(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + lldpmod_getrem_data_t getrem_data; + + getrem_data.dump_flag = DUMP_NORMAL; + getrem_data.res_type = RES_TYPE_STR; + + return lldpmod_getrem_common(request, result, REM_PORTDESC_OID, &getrem_data); +} + +/* get rem_sysname */ +int lldpmod_getrem_sysname(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + lldpmod_getrem_data_t getrem_data; + + getrem_data.dump_flag = DUMP_NORMAL; + getrem_data.res_type = RES_TYPE_STR; + + return lldpmod_getrem_common(request, result, REM_SYSNAME_OID, &getrem_data); +} + +/* get rem_sysdescription */ +int lldpmod_getrem_sys_desc(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + lldpmod_getrem_data_t getrem_data; + + getrem_data.dump_flag = DUMP_NORMAL; + getrem_data.res_type = RES_TYPE_STR; + + return lldpmod_getrem_common(request, result, REM_SYSDESC_OID, &getrem_data); +} + +/****************************************************************************** + * * + * Function: lldpmod_getrem_oid * + * * + * Purpose: a main entry point for get a lldp remote oid * + * * + * Parameters: request - structure that contains item key and parameters * + * request->key - item key without parameters * + * request->nparam - number of parameters * + * request->timeout - processing should not take longer than * + * this number of seconds * + * request->params[N-1] - pointers to item key parameters * + * * + * result - structure that will contain result * + * * + * Return value: SYSINFO_RET_FAIL - function failed, item will be marked * + * as not supported by zabbix * + * SYSINFO_RET_OK - success * + * * + * Comment: get_rparam(request, N-1) can be used to get a pointer to the Nth * + * parameter starting from 0 (first parameter). Make sure it exists * + * by checking value of request->nparam. * + * * + ******************************************************************************/ +int lldpmod_getrem_oid(AGENT_REQUEST *request, AGENT_RESULT *result) +{ + netsnmp_session *ss; + char error[MAX_STRING_LEN]; + + int ret = SYSINFO_RET_OK; + int err = SUCCEED; + + char *param_ip, *param_community, *param_oid, *param_port_num, *param_rem_idx; + + lldpmod_getrem_data_t getrem_data; + + oid parsed_param_oid[MAX_OID_LEN]; + size_t parsed_param_oid_len = MAX_OID_LEN; + oid parsed_chk_oid[MAX_OID_LEN]; + size_t parsed_chk_oid_len = MAX_OID_LEN; + + + if (request->nparam != 5) + { + SET_MSG_RESULT(result, strdup("Invalid number of parameters")); + return SYSINFO_RET_FAIL; + } + param_ip = get_rparam(request, 0); + param_community = get_rparam(request, 1); + param_oid = get_rparam(request, 2); + param_port_num = get_rparam(request, 3); + param_rem_idx = get_rparam(request, 4); + + if (NULL == param_ip || '\0' == *param_ip) + { + SET_MSG_RESULT(result, strdup("Invalid format of 1st parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_community || '\0' == *param_community) + { + SET_MSG_RESULT(result, strdup("Invalid format of 2nd parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_oid || '\0' == *param_oid) + { + SET_MSG_RESULT(result, strdup("Invalid format of 3rd parameter")); + return SYSINFO_RET_FAIL; + } + + /* parse oid */ + if (NULL == snmp_parse_oid(param_oid, parsed_param_oid, &parsed_param_oid_len)) + { + SET_MSG_RESULT(result, zbx_dsprintf(NULL, "snmp_parse_oid(): cannot parse OID \"%s\".", + param_oid)); + return SYSINFO_RET_FAIL; + } + + +#define CHK_OID(__oid, __res_type, __dump_flag) \ + if (NULL != snmp_parse_oid(__oid, parsed_chk_oid, &parsed_chk_oid_len)) \ + { \ + if (parsed_chk_oid_len == parsed_param_oid_len && \ + 0 == memcmp(parsed_chk_oid, parsed_param_oid, parsed_param_oid_len * sizeof(oid))) \ + { \ + getrem_data.dump_flag = __dump_flag; \ + getrem_data.res_type = __res_type; \ + goto oidchk_end; \ + } \ + } \ + else \ + { \ + SET_MSG_RESULT(result, zbx_dsprintf(NULL, "snmp_parse_oid(): cannot parse OID \"%s\".", \ + __oid)); \ + return SYSINFO_RET_FAIL; \ + } + + /* LLDP-MIB::lldpRemChassisIdSubtype */ + CHK_OID(REM_CHASSIS_TYPE_OID, RES_TYPE_INT, DUMP_NORMAL); + + /* LLDP-MIB::lldpRemChassisId */ + CHK_OID(REM_CHASSIS_ID_OID, RES_TYPE_STR, DUMP_WITH_MAC); + + /* LLDP-MIB::lldpRemSysCapSupported */ + CHK_OID(REM_CAP_SUPPORTED_OID, RES_TYPE_BSTR, DUMP_NORMAL); + + /* LLDP-MIB::lldpRemSysCapEnabled */ + CHK_OID(REM_CAP_ENABLED_OID, RES_TYPE_BSTR, DUMP_NORMAL); + + + /* LLDP-MIB::lldpRemPortIdSubtype */ + CHK_OID(REM_TYPE_OID, RES_TYPE_INT, DUMP_NORMAL); + + /* LLDP-MIB::lldpRemPortId */ + CHK_OID(REM_PORTID_OID, RES_TYPE_STR, DUMP_WITH_MAC); + + /* LLDP-MIB::lldpRemPortDesc */ + CHK_OID(REM_PORTDESC_OID, RES_TYPE_STR, DUMP_NORMAL); + + /* LLDP-MIB::lldpRemSysName */ + CHK_OID(REM_SYSNAME_OID, RES_TYPE_STR, DUMP_NORMAL); + + /* LLDP-MIB::lldpRemSysDesc */ + CHK_OID(REM_SYSDESC_OID, RES_TYPE_STR, DUMP_NORMAL); + +oidchk_end: + +#undef CHK_OID + + + if (NULL == param_port_num || '\0' == *param_port_num) + { + SET_MSG_RESULT(result, strdup("Invalid format of 4th parameter")); + return SYSINFO_RET_FAIL; + } + + if (NULL == param_rem_idx || '\0' == *param_rem_idx) + { + SET_MSG_RESULT(result, strdup("Invalid format of 5th parameter")); + return SYSINFO_RET_FAIL; + } + + + if (0 == atol(param_rem_idx)) + { + /* when remote index is 0, remote device is not connected */ + /* don't perform snmp-walk */ + if (RES_TYPE_INT == getrem_data.res_type) + SET_TEXT_RESULT(result, strdup(NC_INTVAL)); + else /* RES_TYPE_STR or RES_TYPE_BSTR */ + SET_TEXT_RESULT(result, strdup(NC_STRVAL)); + goto out; + } + + if (NULL == (ss = lldpmod_snmp_open_session(param_ip, param_community, error, sizeof(error)))) + { + err = NETWORK_ERROR; + goto exit; + } + + getrem_data.index = (oid)strtoul(param_port_num, NULL, 0); + getrem_data.rem_index = (oid)strtoul(param_rem_idx, NULL, 0); + getrem_data.result = result; + + /* call net-snmp library */ + err = lldpmod_snmpwalk(ss, param_oid, error, sizeof(error), lldpmod_snmpwalk_getrem_cb, &getrem_data); + + lldpmod_snmp_close_session(ss); + +exit: + if (SUCCEED_WITH_VALUE != err) + { + if (SUCCEED == err) + { + /* specified remote index was not found */ + SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Object not found. [ %s, %lu, %lu ]", + param_oid, (unsigned long)getrem_data.index, (unsigned long)getrem_data.rem_index)); + } + else + { + SET_MSG_RESULT(result, zbx_strdup(NULL, error)); + } + + char **msg; + msg = GET_MSG_RESULT(result); + zabbix_log(LOG_LEVEL_DEBUG, "%s: getting SNMP values failed: %s", MODULE_NAME, NULL != msg && NULL != *msg ? *msg : "(null)"); + + ret = SYSINFO_RET_FAIL; + } + +out: + return ret; + +}